Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

[Язык Си]Работа с матрицей в текстовом файле

14K
11 февраля 2007 года
demonoide
30 / / 11.02.2007
В текстовом файле хранится матрица 32х10. Записать в другой файл числа из этой матрицы следующим образом: в первом столбце числа в интервале [0; 10), во втором – числа [10; 20) и т.д. Числа не должны повторяться.

Вот что я успел написать:
Код:
#include <stdio.h>
#include <conio.h>

int main()
{
 FILE *fin, *fout;
 int x,i=0,n1=1,n2=1,flag=0,m1[10],m2[10];
 
 fin=fopen("text.txt","rt");
 fout=fopen("test.txt","wt+");
 
 if (fin==NULL || fout==NULL)
  {
   printf("Cannot open or create file");
   getch(); return 0;
  }
/****************************************************************/
/*------Находим первый элемент 1 массива------------------------*/
/****************************************************************/

 while (!feof(fin))
 {
  fscanf(fin,"%d",&x);
   
  if(x<10 && x>=0)
  {
   m1[0]=x;
   break;
  }

 }

 rewind(fin);

/****************************************************************/
/*------Находим первый элемент 2 массива------------------------*/
/****************************************************************/


 while (!feof(fin))
 {
  fscanf(fin,"%d",&x);
   
  if(x<20 && x>=10)
  {
   m2[0]=x;
   break;
  }
 }

 rewind(fin);

/****************************************************************/
/*------Цикл поиска следующих элементов, не повторяющихся-------*/
/****************************************************************/


 
 while (!feof(fin))
 {
 
  fscanf(fin,"%d",&x);

/*--Ищем [10;20) который не равен предыдущим--*/

  for (i=0; i<n1; i++)
  {
    if (x==m1)
     flag=1;
   
   if(!flag && x<20 && x>=10)
   {
    m1[n1]=x;
    n1++;
    break;
   }
    flag=0;
  }


/*--Ищем [0;10) который не равен предыдущим--*/

  for (i=0; i<n1; i++)
  {
    if (x==m2)
     flag=1;
   
   if(!flag && x<10 && x>=0)
   {
    m2[n2]=x;
    n2++;
    break;
   }
    flag=0;
  }
 
 }

/*--выводим на экран оба массива--*/

  for (i=0; i<=n1; i++)
   printf("%d ",m1);
 
     printf("\n\n");

  for (i=0; i<=n2; i++)
   printf("%d ",m2);

 
/*----------------------------------------------------------*/  
 fclose(fin);
 fclose(fout);

 getch(); return 0;

 }


Программа как бы в файл не записывает, а выводит на экран. Но это 'Как бы' не работает. Не найти ошибку.

Фактически в файл записывать по строкам\столбцам - похрен, главное сама соль. Можно просто вывести на экран.

Я сделал, создав 2 массива по 10 эл. каждый.

PS: ЯЗЫК СИ, ТОЛЬКО СИ. ЛУЧШЕ НАЙТИ ОШИБКУ В МОЕЙ БЕЛЕБЕРДЕ.
361
11 февраля 2007 года
Odissey_
661 / / 19.09.2006
Входной файл текстовый...? Позволь узнать что за параметр у fopen такой - "cb+" ?
14K
12 февраля 2007 года
demonoide
30 / / 11.02.2007
[COLOR=red][del][/COLOR]
Всё равно не пашет.

Ну что? Никто не поможет?
14K
12 февраля 2007 года
demonoide
30 / / 11.02.2007
Удалите тему, своими силами справился
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог