Найти сумму цифр чисел, записанных в файл

Задача

Дан файл, в котором через пробел записаны натуральные числа. Вывести на экран суммы цифр каждого числа.

Решение

 

Описание переменных: 

  • f - переменная, связанная с файлом
  • c - очередной символ, считанный из файла
  • sum - сумма цифр числа
  • n - цифра

Алгоритм решения задачи: 

Поскольку числа разделены пробелом, то проще открыть файл как типизированный символьный. Далее считывать каждый символ и проверять его, является ли он пробелом или нет.

Если символ не является пробелом, то надо его преобразовать в число с помощью встроенной в Паскаль функции val(). После этого добавить это число-цифру к переменной sum.

Если же очередной символ - пробел, то надо вывести уже накопленную сумму цифр на экран и обнулить переменную sum.

Программа на языке Паскаль: 

 

var
    f: file of char;
    c: char;
    sum, n: word;
begin
    assign(f,'nums.txt');
    reset(f);
    sum := 0;
    while not eof(f) do begin
        read(f,c);
        if c <> ' ' then begin
            val(c, n);
            sum := sum + n;
        end
        else begin
            write(sum:5);
            sum := 0
        end;
    end;
    writeln;
end.

 

Например, если в файле nums.txt записаны такие данные:

45 320 854 21 12 149 15 167 34 29 188 21 123 86 111 640 

то в результате выполнения программы будет выведено:

    9    5   17    3    3   14    6   14    7   11   17    3    6   14    3   10

Примечания: 

Чтобы сумма цифр последнего числа была выведена, надо чтобы после него стоял пробел.

 

Тема

Файлы

Уровень

Комбинированные задачи

Теги

Комментарии

А разве такое решение не проще?И для чего надо использовать функцию val?

USES CRT;
var c,s:integer;
    f:text;
 
begin
assign(f,'D:\Новая папка\file.txt');
reset(f);
 WHILE NOT eof(f) do
     begin
     read(F,c);
     while c<>0 do
       begin
       s:=s+(c mod 10);
       c:=c div 10;
       end;
     writeln('summa  ',s);
     s:=0;
     end;
close(f);
end.    

Добавить комментарий