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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.10.2010, 18:20   #1
Blad47
Пользователь
 
Регистрация: 10.11.2008
Сообщений: 93
По умолчанию Файловый ввод с++

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

• Для осуществления работы с файлами использовать стандартный файловый ввод-вывод C++ (класс fstream).
Blad47 вне форума Ответить с цитированием
Старый 05.10.2010, 18:44   #2
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Код:
template <class T> class Matrix{
		public:	            
			T **a;
			int n,m;
		public:
//-----------описание конструкторов и деструктора	
			Matrix();
			Matrix(int n,int m);
			~Matrix();
//-----------операторы потокого воода и вывода
			template <class U>friend ostream& operator << (ostream&, Matrix<U>&);
			template <class U>friend istream& operator >> (istream&, Matrix<U>&);
		};
//...
template <class T> ostream& operator << (ostream& ofst, Matrix<T> &M){
			int i,j; 
			for(i=0;i<M.n;i++){
				for(j=0;j<M.m;j++)
					ofst<<M.a[i][j]<<" ";
				ofst<<endl;
			}
			return ofst;
		}
		template <class T> istream& operator >> (istream& ifst, Matrix<T>& M){
			int i,j;
			for(i=0;i<M.n;i++)
				for(j=0;j<M.m;j++){
					ifst>>M.a[i][j];
					if(ifst.eof()&&i!=M.n-1&&j!=M.m-1){
						cerr<<"ERROR: The unexpected end of a file. template <class U>friend istream& operator >> (istream&, Matrix<U>&);"<<endl;
						throw "ERROR: The unexpected end of a file. template <class U>friend istream& operator >> (istream&, Matrix<U>&);";
					}
				}
			return ifst;
		}
использовать так:
Код:
#include <fstream>
using std::ifstream;
//...
int main(){

	try{
		int n,m;
		MatrixArithm<double> *M;
		ifstream ifst("in.txt");
		ifst>>n>>m;
		M=new MatrixArithm<double>(n,m);
		ifst>>(*M);
		cout<<(*M);

Последний раз редактировалось Stilet; 07.10.2010 в 19:27.
rrrFer вне форума Ответить с цитированием
Старый 07.10.2010, 15:46   #3
Blad47
Пользователь
 
Регистрация: 10.11.2008
Сообщений: 93
По умолчанию

Цитата:
Сообщение от rrrFer Посмотреть сообщение
использовать так:
Код:
#include <fstream>
using std::ifstream;
//...
int main(){

	try{
		int n,m;
		MatrixArithm<double> *M;
		ifstream ifst("in.txt");
		ifst>>n>>m;
		M=new MatrixArithm<double>(n,m);
		ifst>>(*M);
		cout<<(*M);
}
Ругается на кусок этого кода, я пробовал решать проблему, но все ошибки не устраняются. Поэтому вот, что пишет компилятор, если ввести вышеперечисленное:

error C2065: 'MatrixArithm' : undeclared identifier
error C2062: type 'double' unexpected
error C2065: 'M' : undeclared identifier
error C2061: syntax error : identifier 'MatrixArithm'
error C2065: 'M' : undeclared identifier
error C2065: 'M' : undeclared identifier
error C2317: 'try' block starting on line '48' has no catch handlers
Blad47 вне форума Ответить с цитированием
Старый 07.10.2010, 17:05   #4
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

MatrixArithm<double> замени на double
убери try блок
rrrFer вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Файловый ввод вывод GrihaI Общие вопросы C/C++ 4 31.05.2010 02:45
Файловый ввод-вывод andrey-v-isaev Общие вопросы C/C++ 1 02.05.2010 19:54
Файловый Ввод-вывод и строки coll3ctor Общие вопросы C/C++ 17 02.05.2010 11:02
Файловый ввод/вывод -=$V=- Общие вопросы C/C++ 8 13.12.2008 21:11
файловый ввод/вывод kot111 Общие вопросы C/C++ 1 04.02.2008 17:45