Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.11.2009, 11:02   #1
lamak
C++
Пользователь
 
Регистрация: 31.10.2009
Сообщений: 30
Сообщение Считывание с файла на С++

В задании нужно сначала считать размер массива NxN, а потом и сам массив.
Например в файле input.txt будет:
3
123456789
как это реализовать на С++ через потоки?
наработки:
Код:
 ifstream in;
  in.open("input.txt");
  in>>n ;
     for (int i=0; i<n; i++)
        for (int j=0; j<n; j++)
           if(!in.eof())  in>>matr[i][j];
    in.close();
Верю в google...
lamak вне форума Ответить с цитированием
Старый 01.11.2009, 17:31   #2
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

Должно работать. В чем проблема?
counter вне форума Ответить с цитированием
Старый 01.11.2009, 21:03   #3
lamak
C++
Пользователь
 
Регистрация: 31.10.2009
Сообщений: 30
По умолчанию

Цитата:
Сообщение от counter Посмотреть сообщение
Должно работать. В чем проблема?
Проблема в том что моя прога зацыкливается на считывании этом хотя компиляция проходит
Верю в google...

Последний раз редактировалось lamak; 01.11.2009 в 21:15.
lamak вне форума Ответить с цитированием
Старый 01.11.2009, 21:21   #4
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

ну тогда попробуйте один цикл

Код:
 for (int i=0; i<n*n; i++)
или устанавливайте указатель чтения

Код:
 for (int i=0; i<n; i++)
        for (int j=0; j<n; j++)
           if(!in.eof()) 
           {
                in.seekg(sizeof(int) * (n*i+j+1),ios::beg); // примерно так
                in>>matr[i][j];
            }
counter вне форума Ответить с цитированием
Старый 01.11.2009, 21:28   #5
lamak
C++
Пользователь
 
Регистрация: 31.10.2009
Сообщений: 30
По умолчанию

попробывал второй вариат, все аналогично
в файле input.txt у меня:
3
123456789
может проблема в заполнении файла инпут?
выкладываю весь код, задание думаю не стоит так как все работает если использовать стандартный ввод в программе, а вот когда с считывание то зацыкливаеться:
Код:
#include <iostream.h>
#include <conio.h>
#include <fstream.h>
int main()
{//clrscr();
 ifstream in;
 ofstream out;
 in.open("input.txt");
 out.open("output.txt"); out<<"Ïî÷àòêîâà ìàòðèöÿ:  ";
 int n,k,min;
  //cout<<"Vvedit' rozmir matrutsi, n: "; cin>>n;
 int matr[n][n],smatr[n][n],sum[n];
 // for(int i=0; i<n; i++)
   //{  sum[i]=0;
     //for(int j=0; j<n; j++)
       //{cout<<"Matr["<<i+1<<","<<j+1<<"]="; cin>>matr[i][j];  }
    // } 
   in>>n ;
     for (int i=0; i<n; i++) { sum[i]=0;
      for (int j=0; j<n; j++)
       if(!in.eof()) 
       {in.seekg(sizeof(int)*(n*i+j+1),ios::beg);
                     in>>matr[i][j]; }
                     }
   in.close();         
         
          
  for(int i=0; i<n; i++)
   { k=n-1;
      for(int j=0; j<n; j++,k--)
        {smatr[i][k]=matr[j][i]; sum[i]=sum[i]+matr[i][j];}}    
    cout<<"\nYour martix: \n";
  for(int i=0; i<n; i++)
     { cout<<"\n"; out<<"\n";
        for(int j=0; j<n; j++)
         {cout<<matr[i][j]<<" "; 
           out<<matr[i][j]<<" ";}
      }      
      cout<<"\n\nPovernyta na 90 gradysiv: \n"; 
      out<<"\nÌàòðèöÿ ïîâåðíóòà íà 90 ãðàäóñ³â:  ";    
   for(int i=0; i<n; i++)
     { cout<<"\n"; out<<"\n";
        for(int j=0; j<n; j++)
         {cout<<smatr[i][j]<<" "; 
          out<<smatr[i][j]<<" ";}
     }
        cout<<"\n"; min=sum[0];
  for(int i=0; i<n; i++)
     if (sum[i]<=min) {k=i; min=sum[i];}      
 cout<<"\nMinimalna syma v rjadky "<<k+1;
 out<<endl<<"̳í³ìàëüíà ñóìà â ðÿäêó: "<<k+1;;
 out.close();
 getch();  
    }
Верю в google...
lamak вне форума Ответить с цитированием
Старый 01.11.2009, 21:43   #6
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

вобщем вариант рабочий, только числа матрицы пишите в файл через пробел

Код:
for (int i=0; i<n; i++) { 
      for (int j=0; j<n; j++)
       if(!in.eof()) 
	   {
		   in>>matr[i][j]; 
	   }
 }
counter вне форума Ответить с цитированием
Старый 01.11.2009, 21:49   #7
lamak
C++
Пользователь
 
Регистрация: 31.10.2009
Сообщений: 30
По умолчанию

Все ровно у меня зацыкливаеться не могу понять почему Х_х
Верю в google...
lamak вне форума Ответить с цитированием
Старый 01.11.2009, 21:53   #8
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

зацикливается или некомпилируется?

Цитата:
int matr[n][n],smatr[n][n],sum[n];


размер массива должен быть известен на этапе компиляции, или используйте динамическое выделение памяти

А зацикливается именно на чтении из файла или в другом месте? Переменная n после чтения чему равна?
counter вне форума Ответить с цитированием
Старый 01.11.2009, 22:18   #9
lamak
C++
Пользователь
 
Регистрация: 31.10.2009
Сообщений: 30
По умолчанию

Цитата:
Сообщение от counter Посмотреть сообщение
зацикливается или некомпилируется?



размер массива должен быть известен на этапе компиляции, или используйте динамическое выделение памяти

А зацикливается именно на чтении из файла или в другом месте? Переменная n после чтения чему равна?
нет, именно зацыкливаеться на этапе компиляции все нормально

Код:
in>>n ;
   int matr[n][n],smatr[n][n],sum[n];
так все работает, действительно провтыкал с выделением памяти под массив. Спасибо) не знаю почему не было ошибки на компиляции О_о
Верю в google...

Последний раз редактировалось Stilet; 02.11.2009 в 09:56.
lamak вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
c++ считывание с файла. tsergey Помощь студентам 20 24.04.2010 23:30
Считывание данных из файла inret Общие вопросы Delphi 4 18.11.2007 18:03
Считывание из файла DimkinStd Общие вопросы Delphi 7 24.01.2007 19:18
Считывание данных из файла PAVEL315 Общие вопросы Delphi 26 17.12.2006 00:53