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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.12.2011, 13:21   #1
SakHax
 
Регистрация: 12.12.2011
Сообщений: 5
Сообщение Проблема с while(!f.eof())

есть файл с матрицей n x n , n не известно

вот код:
Код:
#include <iostream>
#include <fstream>
using namespace std;
int magic(int **a,int n,int m)
{
	int k,ssto,sd1,sd2,l,sstr,i,j;
	sd1=0;sd2=0;k=0;l=0;
for (i=0;i<1;i++)
		{
		for (j=0;j<m;j++)
		l=l+a[i][j];//ñóììà 1 ñòðîêè
		}
	       //_______________________

		for (i=1;i<=n;i++)
		{
			sstr=0;
			if (i==n) break;
		for (j=0;j<m;j++)
		{
		sstr=sstr+a[i][j];//ñóììà ñòðîêè
		k=sstr;
		}
		if (l!=k) return 0;
		}
		//______________________________________
		l=0;
		for (j=0;j<1;j++)
			for (i=0;i<n;i++)
				l=l+a[i][j]; // ñóììà 1 ñòîëáöà
			
			//_______________________________
			for (j=1;j<=m;j++)
		{
			ssto=0;
			if (j==m) break;
			for (i=0;i<n;i++)
			{
			ssto=ssto+a[i][j];// ñóììó ñòîëáöà
		    k=ssto;
			}
			if (l!=k) return 0;
		}
			
			//____________________________
			for (i=0;i<n;i++)
		for (j=0;j<m;j++)
			if (i==j) sd1=sd1+a[i][j];//ãëàâíàÿ äèàãîíàëü
		if (sd1!=k) return 0;
			//_______________________________
			for (i=0;i<n;i++)
		for (j=0;j<m;j++)
			if(i+j+1==n)sd2=sd2+a[i][j];//ïîáî÷íàÿ äèàãîíàëü
			if (sd2!=k) return 0;else return 1;
}
int main()
{
	int **a,i,j,n,m,mag;
	ifstream f;
	m=0;n=0;
	i=0;
	f.open("D:\\2.txt");
	if(f)
	{
		cout<<"\n read fail \n";
	while(!f.eof()) i++;
	cout << i;
    while(i!=m*n){n++;m++;}
	a = new int *[n];
	for (i=0;i<n;i++)
	a[i]=new int [m];
	for (i=0;i<n;i++)
		{
		for (j=0;j<m;j++)
		f>>a[i][j];
		}
		
		for (i=0;i<n;i++)
		{
		for (j=0;j<m;j++)
		cout<<a[i][j]<<" ";
		cout<<endl;
		}
		//____________________________________________
		mag=magic(a,n,m);
		if (mag==1) cout<<"\n magich \n";else cout<<"\n nemagich \n";}
	else cout<<"\n error open fail (neophodimosozdat' fail)\n";f.close();
		system("pause");
		
}
выделил красным где проблема, не выходит из цикла по окончанию файла...
SakHax вне форума Ответить с цитированием
Старый 20.12.2011, 18:46   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Код:
while(!f.eof()) i++;
это весь цикл, с чего он должен выходить то из него?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
EOF goluzov Общие вопросы C/C++ 1 07.12.2011 09:50
while(! input.eof()) kaljan775 Общие вопросы C/C++ 4 09.10.2010 12:41
функция eof! срочно! kitty_girl Помощь студентам 6 21.05.2009 22:25
проблема с std::ifstream.eof() alex8 Общие вопросы C/C++ 5 05.05.2009 18:24
fstream.eof() в mingw alexinspir Общие вопросы C/C++ 1 30.09.2008 08:00