Показать сообщение отдельно

  #4952  
Старый 03.03.2010, 13:04
4p3
Участник форума
Регистрация: 18.08.2008
Сообщений: 159
С нами: 9332069

Репутация: 92
По умолчанию

Вот так гораздо лучше!

Цитата:
ifstream in("1.txt");//открываю файл для чтения
str = 1;
if(in) { //вычисляем
while(in.get(ch)) { //количество
if(ch == '\n') { //строк
str++; //в открытом файле для того
Я не уверен, что файл изначально не пуст. + по твоей логике счетчик показывает на одну строку больше. Вот к примеру.

Вот пример файла
123
456
789
В начала str=1. Считываем тройку - уже 2. И так далее. В итоге счетчик строк показывает 4.

Цитата:
t = new int*[str]; //выделяю память
Потому ты выделяешь на 1 строку больше, я так вижу.

Далее, что я нашел.
Цитата:
int i, j;
Пишешь ты, видимо, на MS VS 6, которая не знает о областях видимости. И из-за этого получаются ошибки. Чему равно j?

Цитата:
in >> t[j]; //считываю матрицу из файла

Вот здесь ты обращаешься к j
, но чему оно равно? Ты пишешь неизвестно куда.

К тому же.
Цитата:
in >> t[j];

Необходимо делать в цикле. За одно такое обращение оператор >> считывает один символ, судя логике. Еще раз посмотри на эту строку. Чему равно i
? Оно постоянно одно и тоже значение.

Я вижу в коде утечку памяти. Ты неправильно удаляешь выделенную память.
Вот как нужно (на примере).
Код:
for (int i = 0; i<n; i++)
        delete [] a[i];
delete [] a;

Последний раз редактировалось 4p3; 03.03.2010 в 13:07..
 
Ответить с цитированием