Информатика в школе


Видео курсы для чайников фотошоп, joomla, wordpress, php, css 
  Главная  ●  Карта сайта
 
 

Сумма цифр числа

Евгений Мухутдинов

[к списку задач]

 

Во входном файле записано натуральное число не превышающее 10100.

Требуется найти сумму цифр числа.

Входные данные

В единственной строке входного файла INPUT.TXT записано одно число.

Выходные данные

В файл OUTPUT.TXT выведите сумму цифр числа.

Пример

INPUT.TXT OUTPUT.TXT
4545
1111111111
18
10

Решение

Как говориться, все бы ничего, да вот уж на входе слишком большое число. Типов переменных, в которые можно было бы уместить такое большое число, не существует. Сразу начинают лезть мысли о длинной арифметике, соответственно о том, что можно все считать в массив, а потом уж подсчитать сумму его элементов.

На самом деле, можно прекрасно обойтись и без массива. Можно просто считывать каждый отдельны символ входного файла в переменную типа charstring можно было бы считать только всю строку целиком). Далее, используя функцию ORD возвращаем порядковый тип символа согласно таблице ASCII и вычитаем 48. Что же касается результата, то максимальное значение может быть 101 * 9 = 909 - помещается в переменную типа integer.

Вот что получилось у меня (компилятор Pascal ABC):

 

var
  x: char;
  res: integer;
  input, output: text;
begin
  res:=0;
  Assign(input,'input.txt');
  Reset(input);
  Assign(output,'output.txt');
  Rewrite(output);
  while not EOF (input) do
    begin
      Read(input,x);
      res:= res + (ord(x)-48);
    end;
  Write(output,res);
  Close(input);
  Close(output);
end.

 

Возможные ошибки в входном файле input.txt

В заключение хочу привести одни пример. Посмотрите на скриншоты содержимого файлов input.txt и output.txt.

Входной файл input.txt    Выходной файл output.txt

Обратите внимание, что на входе у нас якобы 55, соответственно на выходе должно быть 10, а реально -63. Что произошло?

Я немного схитрю и добавлю в цикл строчку Writeln (ord(x)-  48) - для того, чтобы посмотреть, символы с какими порядковыми номерами считываются из файла. Запускаем программу и видим следующее:

Код символов

Оказывается, в входном файле, кроме наших пятерок (код 53), присутствуют символы с порядковыми номерами 13 и 10. Дело в том, что при подготовке входного файла input.txt, после ввода двух цифр пять, была нажата клавиша "Enter" и это привело к генерации  двух управляющих символов - возврата каретки (код 13) и перевода строки (код 10). Соответственно результат стал равен 53 - 48 + 53 - 48 + 13 - 48 + 10 - 48 = - 63.

 

[к списку задач]

 

Книжные новинки
Как сделать свой сайт и заработать на нем Е. Мухутдинов
Копилка
Рабочие программы
Проекты MS Office
Презентации
Открытые уроки
Экзаменационные билеты
Элективные курсы
Бесплатный soft
 Инструкции по ТБ
Подготовка к олимпиадам по информатике
Методика подготовки
"Золотые" алгоритмы
Простые задачи для начинающих
Олимпиадные задачи с решениями
Книги
Среда программирования
Обучение программированию на С++
Справочник по языку Pascal
Обучение
Подготовка к ЕГЭ
Создание сайтов
Уроки FrontPage
Уроки Word 2003
Создание игр на Delphi
Печатаем вслепую

Информация

Наши интервью
Книга почета
Курсы повышения квалификации
Электронная библиотечка
Книжная полка
Статьи
Полезные ссылки
Обратная связь

Конкурсы

Олимпиада
Фотоконкурс
VIP
Персональный раздел профессора
Макаровой Н.В.
Персональный раздел профессора
Смыковской Т.К.