Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > функция чтения матрицы из файла


Автор: Bridget 21.2.2009, 09:43
Дана матрица в текстовом файле вида:
n m
.. .. .. ..
.. .. .. ..
.. .. .. ..
где n-количество строк, m - количество столбцов
Нужно написать функцию считывания матрицы из этого файла. ну  а потом вывести матрицу на экран.
Вот что я написала, но не рабоает. 

Код

int** ReadMxfromFile(char *matr,int* n, int* m)
{FILE *f;
int i, j, k=1;
if ((f=fopen("file.txt", "r"))!=NULL)
{
  if (fscanf (f,"%d%d",&n,&m)==2)
   {int **Mx=new int*[*n];
       for (i=0;i<*n;i++)
       {Mx[i]=new int[*m];
            for(j=0;j<*m;j++)
            {k=(fscanf (f,"%d",Mx[i][j]));
            if (k!=1) return 0;     }
         }
       return Mx; }
}
return 0;}



int _tmain(int argc, _TCHAR* argv[])
{ char *matr;
  int n, m;
  int **Mx;
  if ((Mx=ReadMxfromFile(matr,&n,&m))!=0);
  for (int i=0;i<n;i++)
  { for (int j=0;j<m; j++)
     {printf ("%d ",Mx[i][j]);}
    printf ("\n");
  }
    getch ();
    return 0;
}
Код




Автор: andrew_121 21.2.2009, 10:00
Bridget, Используй тег КОД. Глаза сломать можно.

Добавлено через 2 минуты и 19 секунд
Да и выражение типа "%d%d", предполагает что два числа записаны без пробела.

Автор: jonie 21.2.2009, 10:23
Цитата

Добавлено через 2 минуты и 19 секунд
Да и выражение типа "%d%d", предполагает что два числа записаны без пробела.
врешь ведь нагло и не краснеешь )

Цитата

Код

if (fscanf (f,"%d%d",n,m)==2)  //тут исправлено: не надо брать указатель на указатель - вы и так передаетет указатель (убраны &)
....
{k=(fscanf (f,"%d", &Mx[i][j]));  //а вот тут надо взять адрес элемента (добвлено &)


остальное вроде правильно и должно работать...
конечно, по хорошему надо отчищать занятую память в конце программы )

Автор: andrew_121 21.2.2009, 11:17
Цитата(jonie @  21.2.2009,  10:23 Найти цитируемый пост)
врешь ведь нагло и не краснеешь )

:(

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)