с+ не могу понять в чем ошибка, SOS

MURS

Привіт!
Статус: Offline
Реєстрація: 27.09.2012
Повідом.: 3
с+ не могу понять в чем ошибка, SOS

не могу понять на что ругается компилятор, кто знает помогите вот код:

#include <iostream>
#include <conio.h>
#include <locale>
#include <fstream>

using namespace std;

int **ReadFile(ifstream &f,int &row,int &column);
void Serch(int **mass1,int &row1,int &column1, int **mass2, int &row2,int &column2);
void Print(int **mass,int &row,int &column);
void Delete(int **mass1,int &column1, int **mass2,int &column2,ifstream &one,ifstream &two);


int main()
{
int row1 = 0, column1 = 0;
int row2 = 0, column2 = 0;
ifstream one("A.txt");
ifstream two("B.txt");
int **mass1 = ReadFile(one,row1,column1);
int **mass2 = ReadFile(two,row2,column2);
Print(mass1,row1,column1);
Print(mass2,row2,column2);
Delete(mass1,column1,mass2,column2,one,two);
getch();
return 0;
}

int **ReadFile(ifstream &f,int &row,int &column)
{
f>>row;
f>>column;

int **mass;
mass = new int*[row];

for(int a = 0; a < row; a++)
mass[a] = new int[column];

for(int i = 0; i < row; i++)
for(int j = 0; j < column; j++)
f>>mass[row][column];

return mass;
}

void Serch(int **mass1,int &row1,int &column1, int **mass2, int &row2,int &column2)
{
//просчитать размер 3го массива
for(int i = 0; i < row1; i++)
for(int j = 0; j < column1; j++)
{
for(int a = 0; a < row2; a++)
for(int b = 0; b < column2; b++)
if(mass1[j] != mass2[a])
cout<<mass1[j]<<endl;

}

}

void Print(int **mass,int &row,int &column)
{
for(int i = 0; i < row; i++)
{
for(int j = 0; j < column; j++)
cout<<mass[row][column];
cout<<endl;
}
}
void Delete(int **mass1,int &column1, int **mass2,int &column2,ifstream &one,ifstream &two)
{
for(int j = 0; j < column1; j++)
delete [] mass1[column1];
delete mass1;

for(int j = 0; j < column2; j++)
delete [] mass1[column2];
delete mass1;
one.close();
two.close();
}


A.txt
2
2
1
2
3
4

B.txt
3
3
1
2
3
4
5
6
7
8
9
 
лучше тут спроси
Тільки зареєстровані користувачі бачать весь контент у цьому розділі

там тебе быстрее ответят
 
Нет файла conio.h ? getch() можно заменить на getchar();
В Delete() 2 раза удаляем mass1? и надо использовать оператор delete [ ]
 
А что за ошибка хоть? И где?
 
ошибка не компиляции, а выполнения, вот исправленная версия:

#include <iostream>
#include <conio.h>
#include <locale>
#include <fstream>

using namespace std;

int **ReadFile(ifstream &f,int &row,int &column);
void Serch(int **mass1,int &row1,int &column1, int **mass2, int &row2,int &column2);
void Print(int **mass,int &row,int &column);
void Delete(int **mass1,int &column1, int **mass2,int &column2,ifstream &one,ifstream &two);


int main()
{
int row1 = 0, column1 = 0;
int row2 = 0, column2 = 0;
ifstream one("A.txt");
ifstream two("B.txt");
int **mass1 = ReadFile(one,row1,column1);
int **mass2 = ReadFile(two,row2,column2);
Print(mass1,row1,column1);
Print(mass2,row2,column2);
Delete(mass1,column1,mass2,column2,one,two);
getch();
return 0;
}

int **ReadFile(ifstream &f,int &row,int &column)
{
f>>row;
f>>column;

int **mass;
mass = new int*[row];

for(int a = 0; a < row; a++)
mass[a] = new int[column];

for(int i = 0; i < row; i++)
for(int j = 0; j < column; j++)
f>>mass[j];

return mass;
}

void Serch(int **mass1,int &row1,int &column1, int **mass2, int &row2,int &column2)
{
//ïðîñ÷èòàòü ðàçìåð 3ãî ìàññèâà
for(int i = 0; i < row1; i++)
for(int j = 0; j < column1; j++)
{
for(int a = 0; a < row2; a++)
for(int b = 0; b < column2; b++)
if(mass1[j] != mass2[a])
cout<<mass1[j]<<endl;

}

}

void Print(int **mass,int &row,int &column)
{
for(int i = 0; i < row; i++)
{
for(int j = 0; j < column; j++)
cout<<mass[j];
cout<<endl;
}
}
void Delete(int **mass1,int &column1, int **mass2,int &column2,ifstream &one,ifstream &two)
{
int j;
for( j = 0; j < column1; j++)
delete [] mass1[j];
delete mass1;

for( j = 0; j < column2; j++)
delete [] mass2[j];
delete mass2;
one.close();
two.close();
}
 
и как? исправилось? :) ты бы хоть ошибку написал, телепатов тут нет.... наверное.
 
1) Пардон с компилятором, была одна ошибка, двойное описание переменной:

void Delete(int **mass1,int &column1, int **mass2,int &column2,ifstream &one,ifstream &two)
{
for(int j = 0; j < column1; j++)
delete [] mass1[column1];
delete mass1;

for(int j = 0; j < column2; j++)
delete [] mass1[column2];
delete mass1;
one.close();
two.close();
}


2) Вместо переменных индексов использовались переменные количества строк и столбцов:

f>>mass[row][column];// row и column заменить на i и j
...
cout<<mass[row][column]; // row и column заменить на i и j
...
for(int j = 0; j < column1; j++)
delete [] mass1[column1]; // column1 заменить на j
delete mass1;

for(int j = 0; j < column2; j++)
delete [] mass1[column2]; // column2 заменить на j, mass1 заменить на mass2
delete mass1; //mass1 заменить на mass2
 
1) Пардон с компилятором, была одна ошибка, двойное описание переменной:

void Delete(int **mass1,int &column1, int **mass2,int &column2,ifstream &one,ifstream &two)
{
for(int j = 0; j < column1; j++)
delete [] mass1[column1];
delete mass1;

for(int j = 0; j < column2; j++)
delete [] mass1[column2];
delete mass1;
one.close();
two.close();
}

А здесь возникает вопрос - каким доисторическим компилятором неподдерживающим стандарт пользуются ТС и уважаемый исправлятель проблем :) VS6 or earlier?
Если память не изменяет 2003 - уже была дуальной тоесть на такой дефинишен она уже не ругалась, но такое тоже подерживала:
for (int i = 0; i < 10; ++i);
for (i = 0; i < 10; ++i);
 
похоже ТС вообще не может понять где, что и на что ругается. ТС, есть вкладка output или error list, какие error строки там пишутся?
 
Как я угадал :) А чего не чтото более адекватное и современное? VS6 - редкое УГ с точки зрения языка, ну и удобства там гараздо меньше.
Не переживай у меня стоит с десяток компиляторов и как минимум три вообще не под интел.
Просто VS6 довольно шустрый в плане загрузки и компиляции, используется для черновой работы, не требует инсталяции, за минуту я его распаковываю со свистка на любой комп и готов сделать любые изменения.
 
А с чего вы взяли что вообще есть какаято ошибка?
 
Назад
Зверху Знизу