Как найти сумму натуральных чисел в паскале

Программа на Паскале «Вычисление суммы цифр»

🔁 Использование циклов. Сумма положительных элементов массива. Циклы for, while, repeat. Шесть примеров решения задачи на языке Паскаль. Варианты для Turbo/Borland/FreePascal и PascalABC.NET

Σ Сумма элементов массива. 🔁 Циклы for, while, repeat. Пять примеров решения задачи на языке Паскаль. В некоторых вариантах используется синтаксис для PascalABC.NET

Σ Сумма случайных чисел. 🔁 Циклы for, while. Три задачи на нахождение суммы случайно сгенерированных элементов. Для каждой задачи приведено два варианта — классический синтаксис (Turbo/Borland Pascal) и PascalABC.NET


Задачи по информатике и основам программирования на языке Паскаль. В двух решениях используется оператор целочисленного деления, в двух других — используется преобразование числа к строке и цикл for, последнее решение учитывает рекомендации PascalABC.NET.

Программа «Сумма цифр трёхзначного числа»

Задание:
Введите трёхзначное число. Найдите сумму цифр. Выведите результат на экран.

Program SummaTsifr1;
Var X, Y1, Y2, Y3, Summa : Integer;
begin
writeln(‘Программа вычисления суммы цифр’);
write(‘Введите трёхзначное число X ‘);
readln(X);
Y1 := X div 100;
Y2 := (X — Y1 * 100) div 10;
Y3 := X — Y1 * 100 — Y2 * 10;
Summa := Y1 + Y2 + Y3;
writeln(‘Сумма цифр ‘, Y1:3, Y2:3, Y3:3, ‘ = ‘, Summa: 3)
end.

Замечание:
В процедуре вывода writeln используется форматированный вывод переменной. Например, Y1:3 обозначает, что для вывода значения переменной Y1 будут использоваться три позиции, т.е. в случае однозначного числа, перед ним будет добавлено два пробела, в случае двухзначного числа — добавлен один пробел. При этом если число будет содержать 4 или больше цифр, то оно будет выведено полностью.

Программа «Сумма цифр пятизначного числа»

Задание:
Введите пятизначное число. Найдите сумму цифр. Выведите результат на экран.

Program SummaTsifr2;
Var X, Y1, Y2, Y3, Y4, Y5, Summa : Integer;
begin
writeln(‘Программа вычисления суммы цифр ‘);
write(‘Введите пятизначное число X ‘);
readln(X);
Y1 := X div 10000;
Y2 := (X — Y1 * 10000) div 1000;
Y3 := (X — Y1 * 10000 — Y2 * 1000) div 100;
Y4 := (X — Y1 * 10000 — Y2 * 1000 — Y3 * 100) div 10;
Y5 := X — Y1 * 10000 — Y2 * 1000 — Y3 * 100 — Y4 * 10;
Summa := Y1 + Y2 + Y3 + Y4 + Y5;
writeln(‘Сумма цифр ‘, Summa)
end.

Замечание:
В процедуре вывода writeln используется форматированный вывод переменной. Например, Y1:3 обозначает, что для вывода значения переменной Y1 будут использоваться три позиции, т.е. в случае однозначного числа, перед ним будет добавлено два пробела, в случае двухзначного числа — добавлен один пробел. При этом если число будет содержать 4 или больше цифр, то оно будет выведено полностью.

Тема «Использование цикла for». Программа «Сумма цифр числа»

Задание:
Введите число. Найдите сумму цифр. Для решения задачи используйте цикл for и функции работы со строками. Выведите результат на экран.

Program SumNumbers1;
Var
Y : Array[1..20] of Byte; { Массив для сохранения цифр исходного числа }
Xs : String;
Xr, Summa : Real;
J, N, Err : Integer;
begin
writeln(‘Программа вычисления суммы цифр ‘);
write(‘Введите число X (не более 20 цифр)’);
readln(Xr);
Str(Xr, Xs); { Преобразовать число в строку }
N := Length(Xs); { Вычислить длину строки }
for J := 1 to N do Val(Xs[J], Y[J], Err); { Преобразовать каждый символ строки к числу и записать в массив }
Summa := 0;
for J := 1 to N do Summa := Summa + Y[J];
writeln(‘Сумма цифр ‘, Summa)
end.

Замечание:
procedure Str(i: integer; var s: string); Преобразует целое значение i к строковому представлению и записывает результат в s
procedure Val(s: string; var value: byte; var err: integer); Преобразует строковое представление s целого числа к числовому значению и записывает его в переменную value. Если преобразование успешно, то err=0, иначе err>0
function Length(s: string): integer; Возвращает длину строки

Тема «Использование цикла for». Вариант программы «Сумма цифр числа» без использования массива

Задание:
Введите число. Найдите сумму цифр. Для решения задачи используйте цикл for и функции работы со строками. Выведите результат на экран.

Program SumNumbers2;
Var
Y : Byte;
Xs : String;
Xr, Summa : Real;
J, N, Err : Integer;
begin
writeln(‘Программа вычисления суммы цифр ‘);
write(‘Введите число X ‘);
readln(Xr);
Str(Xr, Xs); { Преобразовать число в строку }
N := Length(Xs); { Вычислить длину строки }
Summa := 0;
for J := 1 to N do begin
Val(Xs[J], Y, Err); { Преобразовать каждый символ строки к числу }
Summa := Summa + Y;
end;
writeln(‘Сумма цифр ‘, Summa)
end.

Программа вычисления суммы цифр. Вариант решения на PascalABC.NET

  • В программе отсутствуют устаревшие в PascalABC.NET конструкции.
  • В программе используются следующие рекомендованные конструкции PascalABC.NET:

  • Используются внутриблочные описания переменных: 6 раз
  • Используется инициализация при описании: 3 раза
  • Для ввода используется функция вида ReadInteger,ReadReal: 1 раз
  • Используется расширенное присваивание: 1 раз
  • Для вывода использована Print: 2 раза

Задание:
Введите с клавиатуры целое число. Найдите сумму цифр.

(*
Вариант для PascalABC.NET
*)
begin
var Y, Err : Integer;
Var Xs : String;
Println(‘Программа вычисления суммы цифр’);
var Xr := ReadInteger(‘Введите целое число X ‘);
Str(Xr, Xs); { Преобразовать число в строку }
var N := Length(Xs); { Вычислить длину строки }
var Summa : Integer := 0;
for var J := 1 to N do begin
Val(Xs[J], Y, Err); { Преобразовать каждый символ строки к числу }
Summa += Y;
end;
Println(‘Сумма цифр ‘, Summa)
end.


🔁 Использование циклов. Сумма положительных элементов массива. Циклы for, while, repeat. Шесть примеров решения задачи на языке Паскаль. Варианты для Turbo/Borland/FreePascal и PascalABC.NET

Σ Сумма элементов массива. 🔁 Циклы for, while, repeat. Пять примеров решения задачи на языке Паскаль. В некоторых вариантах используется синтаксис для PascalABC.NET

Σ Сумма случайных чисел. 🔁 Циклы for, while. Три задачи на нахождение суммы случайно сгенерированных элементов. Для каждой задачи приведено два варианта — классический синтаксис (Turbo/Borland Pascal) и PascalABC.NET

Рекламный блок

Информационный блок

В этом примере продемонстрировано использование оператора +=, внутриблочных описаний переменных, автоопределения типа и описания переменной в заголовке цикла for для поиска суммы N введенных чисел

var 
  N: integer;
  sum: real;

begin
  write('Введите количество чисел: ');
  readln(N);
  
  write('Введите числа: ');
  sum := 0;
  for var i := 1 to N do
  begin
    var x := ReadReal;
    sum += x;
  end;
  writeln('Сумма введенных чисел = ',sum);
end.

Следует обратить внимание, что описание переменной x внутри блока в цикле не приводит к потере производительности программы или повторному выделению памяти. Память под внутриблочную переменную выделяется один раз при входе в основную программу.

Ссылки

  • Особенности языка: базовый уровень
  • Сайт PascalABC.NET: Особенности языка

Чуть задержался, пытаясь сформулировать недостатки моей формулы и преимущества Вашей.

Пояснения по поводу «моей» формулы:
При чётном n, например n=6, s=1+2+3+4+5+6=21
Для вычисления группируем значения попарно: первый с последним, второй с предпоследним и т.д.,
При этом сумма каждой пары будет равна n+1 (в примере это 1+6=7, 2+5=7, 3+4=7)
Всего таких пар будет n div 2 (при n=6, пар будет 3).
Итак, умножив (n+1) на (n div 2), получаем первую часть формулы: (n+1)*(n div 2), в примере это 7*3=21.
Если таким же способом вычислять значение при нечётном n, то получается очевидная, но не оптимальная формула.
При нечётном n, например n=7, s=1+2+3+4+5+6+7=28
При этом сумма каждой пары также будет равна n+1 (в примере это 1+7=8, 2+6=8, 3+5=8)
Всего таких пар будет n div 2 (при n=7, пар будет 3).
Также появляется непарное “среднее” слагаемое, которое равно (n+1) div 2 (в примере это (1+7) div 2=8 div 2=4), которое добавляется в сумму только при нечётном n (это учитывается с помощью умножения на n mod 2).
Умножив (n+1)*(n div 2) (в примере (7+1)*(7 div 2)=8*3=24) и прибавив ((n+1)div 2)*(n mod 2) (в примере ((7+1) div 2)*(7 mod 2)=(8 div 2)*1=4), получаем 24+4=28.

Для получения формулы (N+1)*N div 2 необходимо избавиться от среднего слагаемого. Для этого изменим способ группировки при нечётном n. Последнее слагаемое будем складывать с 0, первое с предпоследним, второе с “предпердпоследним“ и т.д. При этом все элементы будут парными, а их сумма будет равна n (в примере это 0+7=7, 1+6=7, 2+5=7, 3+4=7), а всего таких пар будет (n+1) div 2 (в примере это (1+7) div 2=8 div 2=4).
Умножив n на ((n+1)div 2), получаем формулу: n*((n+1) div 2) (в примере это 7*4=28).

Если представить это с помощью условного оператора, то получится:

Pascal
1
2
3
if n mod 2 =0
  then s:=(n+1)*(n div 2)         //для чётных n
  else s:=n*((n+1) div 2);         // для нечётных n

При этом видно что в обоих случаях используется одна и та же формула.

Задача 1

Напишите программу, которая в последовательности натуральных чисел определяет СУММУ чисел. Программа получает на вход количество чисел в последовательности, а затем сами числа.

Количество чисел не превышает 1000. Введённые числа не превышают
30 000.

Программа должна вывести одно число – СУММУ чисел.

Решение:

В начале СУММА равна нулю. Перебираем в ЦИКЛЕ числа. Суммируем: То что было в сумме плюс очередной элемент.

Var a, i, sum, n: integer;
begin
  read(n);
  sum:=0;
  for i:=1 to n do
  begin
    read(a);
    sum:= sum + a;
  end;
Writeln(sum);
end.

Нахождение СУММЫ чисел КРАТНЫХ 4.

Задача 2

Напишите программу, которая в последовательности натуральных чисел определяет СУММУ чисел, КРАТНЫХ 4. В последовательности всегда имеется число, кратное 4. Программа получает на вход количество чисел в последовательности, а затем сами числа.

Количество чисел не превышает 1000. Введённые числа не превышают
30 000.

Программа должна вывести одно число – СУММУ чисел, кратных 4.

Решение:

В начале СУММА равна нулю. Перебираем в ЦИКЛЕ числа. Если нам попался элемент кратный 4, то мы суммируем: то что было в сумме плюс наш элемент.

var a, i, sum, n: integer;
begin
  read(n);
  sum:=0;
  for i:=1 to n do
  begin
  read(a);
  if a mod 4 = 0
     then sum:= sum + a;
  end;
  Writeln(sum);
end.

Нахождение СУММЫ чисел, ОКАНЧИВАЮЩИХСЯ на 2.

Задача 9

Напишите программу, которая в последовательности натуральных чисел определяет СУММУ чисел, ОКАНЧИВАЮЩИХСЯ на 2. В последовательности всегда имеется число, ОКАНЧИВАЮЩЕЕСЯ на 2. Программа получает на вход количество чисел в последовательности, а затем сами числа.

Количество чисел не превышает 1000. Введённые числа не превышают
30 000.

Программа должна вывести одно число – СУММУ чисел, ОКАНЧИВАЮЩИХСЯ на 2.

Решение:

Вначале СУММА равна нулю. Перебираем в ЦИКЛЕ числа. Если нам попался элемент, который оканчивается на 2 то мы суммируем: то что было в сумме плюс наш элемент.

var a, i, sum, n: integer;
begin
  read(n);
  sum:=0;
  for i:=1 to n do
  begin
    read(a);
    if a mod 10 = 2 then
      sum:= sum + a;
  end;
  Writeln(sum);
end.

Нахождение СУММЫ чётных чисел.
Задача 3

Напишите программу, которая в последовательности натуральных чисел определяет СУММУ чётных чисел. В последовательности всегда имеется чётное число. Программа получает на вход количество чисел в последовательности, а затем сами числа.

Количество чисел не превышает 1000. Введённые числа не превышают
30 000.

Программа должна вывести одно число – СУММУ чётных чисел.

Решение:

Вначале СУММА равна нулю. Перебираем в ЦИКЛЕ числа. Если нам попался чётный элемент (остаток от деления на 2 равен нулю), то мы суммируем: то что было в сумме плюс наш элемент.

var a, i, sum, n: integer;
begin
  read(n);
  sum:=0;
  for i:=1 to n do
  begin
    read(a);
    if a mod 2 = 0 then
      sum:= sum + a;
  end;
  Writeln(sum);
end.

ЕГЭ по информатике — Задание 5 (Условие Фано)

Привет! Сегодня узнаем, как решать пятое задание из ЕГЭ по информатике…

Категория: Информатика  Подкатегория: ЕГЭ

Дата: 12-05-2020 в 20:57:20
0

Вася Иванов

Мореплаватель — имя существительное, употребляется в мужском роде. К нему может быть несколько синонимов.
1. Моряк. Старый моряк смотрел вдаль, думая о предстоящем опасном путешествии;
2. Аргонавт. На аргонавте были старые потертые штаны, а его рубашка пропиталась запахом моря и соли;
3. Мореход. Опытный мореход знал, что на этом месте погибло уже много кораблей, ведь под водой скрывались острые скалы;
4. Морской волк. Старый морской волк был рад, ведь ему предстояло отчалить в долгое плавание.

Понравилась статья? Поделить с друзьями:
  • Как найти автоплатежи в тинькофф
  • Как найти добровольца на донбассе
  • Как составить свой фоторобот женщина
  • Неправильно написала фамилию в госуслугах как исправить
  • Как найти сумму котангенсов