1. Заголовок темы должен быть информативным. В противном случае тема удаляется ... 2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения. 3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали! 4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора). 5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM! 6. Одна тема - один вопрос (задача) 7.Проверяйте программы перед тем, как разместить их на форуме!!! 8.Спрашивайте и отвечайте четко и по существу!!!
Я же вот тут давал ссылку, КАК читать из текстового файла данные: Файлы
При использовании этой функции программа становится тривиальной:
var X: integer; ... reset(f1); rewrite(f2); while not eof(f1) do begin s:=0; X := 0; while (not eoln(f1)) and (X <> -1) do begin X := get_num(f1); if X <> -1 then s := s + X; end; readln(f1); writeln(f2,s); end; close(f1); close(f2); ...
Хм... Очень интересно... FPC создает, а TP действительно не хочет... Какая-то проблема с EOLn, получается...
Вот это отработало для TP (костыль, конечно, я попробую еще пошаманить):
uses crt; var f1,f2: text; s1,s2: string; i,s,x: integer;
function get_num(var f: text; var eoline: boolean): integer; var x :integer; ch: char; begin get_num:=-1; if not seekeof(f) then begin ch:=#0; x:=0; while not (ch in ['0'..'9']) do begin read(f,ch); end; while (ch in ['0'..'9']) do begin x:=x*10+(Ord(ch)-Ord('0')); read(f, ch);
if ch = #13 then eoline := true;
end; get_num:=x end; end;
var line: boolean;
begin clrscr; writeln('Imya pervogo fajla'); readln(s1); writeln('Imya novogo fajla'); readln(s2); assign(f1,s1); assign(f2,s2); reset(f1); rewrite(f2); while not eof(f1) do begin s:=0; x:=0; line := false; while (not line) and (not seekeof(f1)) do begin x:=get_num(f1, line); if x<>-1 then s:=s+x; end; writeln(f2,s); end;