Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> функция чтения матрицы из файла 
:(
    Опции темы
Bridget
Дата 21.2.2009, 09:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 15.11.2008

Репутация: нет
Всего: нет



Дана матрица в текстовом файле вида:
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;
}
Код





Это сообщение отредактировал(а) Bridget - 21.2.2009, 10:02
PM MAIL   Вверх
andrew_121
Дата 21.2.2009, 10:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 10
Всего: 33



Bridget, Используй тег КОД. Глаза сломать можно.

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


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
jonie
Дата 21.2.2009, 10:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 6
Всего: 118



Цитата

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

Цитата

Код

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


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


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
andrew_121
  Дата 21.2.2009, 11:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 10
Всего: 33



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

:(


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0655 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.