program p178582;
{ Дан текстовый файл, в котором записано произвольное количество строк.
В каждой строке записаны подряд цифры, т.е. в каждой строке записано
одно число (рязрядность может быть любой). Вывести на экран сумму всех
записанных в файле чисел. }
function sum(var s1,s2: string):string;
// сложение строк цифр, результат - строка
var
l1, l2: integer; // длина первой строки
i : integer; // длина второй строки
s3 : string; // строка - результат
carry : 0..1; // флаг переноса 0,1
digit : 0..9; // десятичная цифра
num : integer; // сумма цифр в текущем разряде
begin
l1 := length(s1);
l2 := length(s2);
// приписываем нули в короткой строку слева, выравниваем по длине
if l1>l2 then
for i:= 1 to l1-l2 do
s2 := '0'+s2
else if l2>l1 then
begin
for i:= 1 to l2-l1 do
s1 := '0'+s1;
l1:= l2;
end;
s3 := ''; // вначале результат пуст
carry := 0; // флаг переноса - в нуль
for i:= l1 downto 1 do
begin
num := ord(s1[i])-ord('0')+ord(s2[i])-ord('0')+carry;
digit := num mod 10; // цифра суммы разрядов
s3:= chr(digit+ord('0'))+s3; // приписываем эту цифру слева
carry := num div 10;
end;
if carry=1 then // приписывем перенос слева от результата
s3:='1'+s3;
sum := s3;
end;
var
f: text; // файловая переменная
fname: string; // имя файла
s1, s2, s3: string; // строки
first_string: boolean; // для "украшательства"
len: integer; //
begin
fname := 'a.dat'; // файл данных
if not FileExists(fname) then
begin
writeln('файл не существует');
readln;
exit;
end
else
begin
len := 0;
s1:='0';
assign(f, fname);
reset(f);
first_string := true;
while not eof(f) do
begin
readln(f, s2);
if not first_string then
write('+')
else
first_string := false;
if len >70 then
begin
len := 0;
writeln;
end;
write(s2);
len := len+length(s2);
s1:= sum(s1,s2); // складываем предыдущую сумму с новой строкой
end;
close(f);
end;
write('=');
writeln(s1);
readln;
end.
1
123
123456
1223446899075232
6684
668483
1+123+123456+1223446899075232+6684+668483=1223446899873979
var c: Byte;
BEGIN for c:=32 to 255 do Write(c:3,' ',chr(c),' '); END.
Если Вы уже зарегистрированы на Портале - войдите в систему, если Вы еще не регистрировались - пройдите простую процедуру регистрации.