Помощь - Поиск - Пользователи - Календарь
Полная версия: Текстовый файл. Сумма цифр.
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Анна
В текстовом файле подсчитать сумму всех цифр входящих в текст. В качестве результата имя файла, входящие в него цифры в том порядке, в котором они встречаются и найденнцю сумму.

uses crt;


var
F: text;
s: string;
c: char;
q: set of char;

begin

clrscr;
q := ['0'..'9'];

write ('Введите имя файла: '); readln(s);
assign (f,s);
reset (f);
writeln ('В файле найдены след. цифры: ');
while not eof (f) do begin
read(f,c);

if c in q then write©; end; readln;

writeln ('Имя файла: ', s);
readln;

end.

Имя файла, а также встречающиеся цифры вывести удаётся. С суммой не знаю как поступить ...
Пыталась записать элементы поочерёдно в массив, а потом уже находить сумму элементов массива, что-то не очень получилось.
Подскажите только, не надо сразу код, просто алгоритм или намёк небольшой nea.gif
Altair
читаем посимвольно файл.
Дальше как хочешь... можно так
Если символ - цифра, то char - > byte (любым способом) -> summ+ преобразованное число.
Анна
Пошла дальше blum.gif
Решила создать файл, записать всё туда, а потом из файла уже всё считать и сосчитать, вот что получилось:

  uses crt;

var
F: text;
s: string;
c: char;
q: set of char;
i, n, summ: integer;

begin
clrscr;
summ:=0;
q := ['0'..'9'];

write ('Введите имя файла: '); readln(s);
write ('Кол-во элементов: '); readln(N);
assign (f,s);
rewrite (f);
for i:=1 to N do begin
write ('Введите ',i,' элемент: '); readln©;
write(f,c); end; close(f);

writeln ('В файле найдены след. цифры: ');
reset(f);
while not eof (f) do begin
read(f,c);

if c in q then write©;
if c in q then inc(summ,ord©-48); end; readln;


writeln ('Имя файла: ', s);
writeln ('Сумма цифр = ',summ);
readln;
end.
Altair
так и что тебе не нравиться? smile.gif
Анна
Всё нравится, просот решила показать, что у меня получилось smile.gif. Так сказать похвастаться blum.gif nea.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.