1. Заголовок темы должен быть информативным. В противном случае тема удаляется ... 2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения. 3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали! 4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора). 5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM! 6. Одна тема - один вопрос (задача) 7.Проверяйте программы перед тем, как разместить их на форуме!!! 8.Спрашивайте и отвечайте четко и по существу!!!
обработка текста из внешнего текстового файла, определить количество строк, баланс
полное описание: Выполнить обработку текста из внешнего текстового файла, созданного в редакторе . Результаты обработки поместить во внешний файл. Определить количество строк в исходном тексте. Проверить имеется ли в каждой строке баланс. количество строк определил так:
var oldf,newf:text; oldn,newn:string; s:integer; begin writeln('Введите имя файла'); readln(oldn); writeln('Введите новое имя'); readln(newn); assign(oldf,oldn); assign(newf,newn); reset(oldf); rewrite(newf); s:=1; {это смущает} while not eof(oldf) do begin readln(oldf); begin s:=s+1; end; end; writeln(newf,'строк: ',s); close(newf) end.
кто знает, подскажите пожалуйста, что означает: проверить имеется ли в каждой строке баланс.
Неправда... То, что он содержит Нули (символ NUL, с кодом = 0) - не значит, что он пустой... На размер файла посмотри.
Цитата
Текстовый файл содержит 5 строк по 8 чисел в строке
Опять неправда... Текстовый файл содержит все числа, записанные одно после другого, даже не разделенные пробелами (ты пробелы в текстовый файл не записывал, поэтому не удивляйся, что их там нет), и в одну строку (да, опять не удивляйся, writeln и writeln(f) - это совсем разные вещи)...
Если сделать в первой программе так:
for i:=1 to 5 do begin for j:=1 to 8 do write(f,a[i,j], ' '); writeln(f); end;
, то будет то, чего ты ждешь: числа, разделенные пробелами, по 8 штук в строке.
Теперь по перезаписи в типизированный файл. Вот этого:
var x: integer; ... while not eof(f) do begin for j:=1 to 8 do begin read(f, X); write(newf,X); end; readln(f); { <--- Переводим строку в текстовом файле } end;
вполне достаточно. Чтобы не быть привязанным к числу столбцов, можно воспользоваться While not eoln(f) do вместо того For-а, который остался...