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.
кто знает, подскажите пожалуйста, что означает: проверить имеется ли в каждой строке баланс.
// зачем тебе цикл while not eof, ты ж используешь точную // размерность массива ? while not eof(oldf) do begin for i:=1 to 5 do for j:=1 to 8 do begin read(oldf,a[i,j]); // <--- Внимание! Прочитал один элемент, и уже перебираешь строки? // Вот тут точно end не забыл ???
for i:=1 to 5 do //перебираю строки begin amax := a[i,1]; for j:=2 to 8 do begin if a[i,j]>amax then amax:=a[i,j]; end; for j:=1 to 8 do begin if amax<>0 then b[i,j]:=(a[i,j]/amax); end; end; end; end;
На самом деле тебе даже не надо выделять память подо всю матрицу 5 * 8, достаточно описАть вектор из 8-ми integer-ов, и читать в него "построчно", правда для этого придется чуть-чуть переделать программу. И массив B не нужен. И даже вектор не нужен, достаточно вообще одной переменной типа Real, ты все равно делишь каждый элемент строки на максимум, вот сразу дели и записывай в файл...
Кстати, вопрос на засыпку: ты ничего не хочешь сделать, если максимум в строке = 0? Что тогда будет записываться в файл? Ты ж в этом случае не пишешь ничего в матрицу B...
P.S. Форматируй программы, таких ошибок будет меньше...