Как в программе паскаль найти сумму

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

🔁 Использование циклов. Сумма положительных элементов массива. Циклы 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: Особенности языка

Массив включает однотипные элементы – числа или переменные. Данное направление изучает информатика, точные науки. Теория устанавливает следующие характеристики массивов:

  • Количество составляющих указывается один раз, после оно не может сокращаться или увеличиваться;
  • К каждому элементу массивов прилагается явное обозначение;
  • Все переменные, числа находятся в прямом доступе.

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

Что такое сумма элементов массива Паскаль

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

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

Как найти сумму элементов массива в Паскале – пример

Задание №1. Как найти сумму массива, складывая только кратные установленному коэффициенту значения.

Для решения нужно использовать функционал Sum. В операцию сложения берется только та группа чисел, которая делится на установленный показатель. При делении остаток – нулевой. Запишем пример расчета:

​

Чтобы заполнить класс, можно использовать случайные цифры. После добавления функции сложения можно вычислить составляющие массива. Для этого используется специальная формула: s:=s+m(i). Характер обработки компонентов – циклический. До начала операции нужно присвоить 0, который становится начальным составляющим. Получаем

Сумма элементов массива на языке Паскаль: как решать задачи, подробные примеры

s:=sum s+m[i] . В итоге функционал имеет следующий вид:

​

Далее необходимо реализовать программное решение. Сумма элементов массива c другим конструктивом рассчитывается в Паскале. Здесь доступна процедура Init2. Она заполняет структуру с помощью случайных показателей, для этого есть заданный интервал. Осуществляется алгоритмизация, формируется бином для каждого показателя.

___________________________________________________​
___________________________________________________​

Смотри также: Логический тип данных в языке Паскаль и их значения: определение, примеры

Заполнение массива A(10) случайными числами и вывод элементов массива

program n_2;

var i: integer;
    a: array[1..10] of integer;

begin
  randomize;

  for i:=1 to 10 do
    a[i]:=random(100);

  for i:=1 to 10 do
    write(a[i],' ');
end.

Вычисление суммы элементов массива

program  n_3;
  var s, i: integer;
      a: array[1..10] of integer;
begin 
  s:=0;
  randomize;
  for i:=1 to 10 do a[i]:=random(100);
  for i:=1 to 10 do write (a[i],' ');
  for i:=1 to 10 do s:=s+a[i];
  writeln('s=', s)
end.

Вычисление суммы элементов массива
[Используем операторные скобки и всё (ввод, вывод, обработку) делаем в одном цикле]

program  n_3_1;
  var s, i: integer;
      a: array[1..10] of integer;
begin 
  s:=0;
  randomize;

  for i:=1 to 10 do
     begin 
        a[i]:=random(100);
        write(a[i],' ');
        s:=s+a[i]
     end;

  writeln('s=', s)
end.

Программа поиска наибольшего элемента в массиве

program  n_4;
  var i, imax: integer; 
      a: array[1..10] of integer;
begin 
  randomize;

  for i:=1 to 10 do a[i]:=random(100);
  for i:=1 to 10 do write(a[i],' ');

  imax:=1;

  for i:=2 to 10 do
    if a[i]>a[imax] then
       imax:=i;

  write('Наибольший элемент   a[', imax, ']=', a[imax])

end.

Поиск элемента, равного 50

program  n_5;

var   n, i: integer; 
      a: array[1..10] of integer;

begin 
  randomize;

  for i:=1 to 10 do a[i]:=random(100);
  for i:=1 to 10 do write(a[i],' ');

  n:=0;
  for i:=1 to 10 do
    if a[i]=50 then
       n:=i;

  if n=0 then
     write('Нет')
  else
     write(n)

end.

Поиск элемента, равного 50

program  n_5_1;
  var n, i: integer; 
      a: array[1..10] of integer;
begin 
  randomize;
  for i:=1 to 10 do a[i]:=random(100);
  for i:=1 to 10 do write(a[i],' ');

  i:=0;
  repeat
    i:=i+1;
  until (a[i]=50) or (i=10);

  if a[i]=50 then
    write(i) 
  else 
    write('Нет')
end.

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

program  kolich;

var   k, i: integer; 
      a: array[1..10] of integer;

begin 
  randomize;

  for i:=1 to 10 do a[i]:=random(100);
  for i:=1 to 10 do write (a[i],` `);

  k:=0;
  for i:=1 to 10 do
    if a[i]>50 then
       k:=k+1;

  write('k=', k)

end.

Сумма значений элементов, удовлетворяющих условию

program  sum ;

var   s, i: integer; 
      a: array[1..10] of integer;

begin 
  randomize;

  for i:=1 to 10 do
    a[i]:=random(100);

  for i:=1 to 10 do
    write (a[i],` `);

  s:=0;
  for i:=1 to 10 do
    if (a[i]>10) and (a[i]<30) then
      s:=s+a[i];

  write('s=', s)

end.

Сортировка массива

program sort;

var   n, i, j, x, imax: integer;
      a: array [1..10] of integer;

begin
  for i:=1 to 10 do read (a[i]);
  for i:=1 to 10 do write (a[i], ' ');

  for i:=1 to 9 do
  begin
    imax:=i;
    for j:=i+1 to 10 do
      if a[j]>a[imax] then
        imax:=j;

    x:=a[i];
    a[i]:=a[imax];
    a[imax]:=x
  end;

  for i:=1 to 10 do
    write(a[i], ' ')
end.

Возведение числа в любую степень.

program calc_stepen;

var
  a, b, h, i: integer;
  c: real;

begin
  b := 1;
  readln( a, h);
  for i := 1 to abs(h) do
    b := b * a;
  if h < 0 then
    c := 1 / b
  else
    c := b;

  writeln( c:3:5 );

end.

Определение гласных и согласных букв:

program alfabet;

var
  s: char;

begin
  read(s);
  case s of 
    'а','е','ё','и','о','у','ы','э','ю','я': writeln('гласные');
    'б','в','г','д','ж','з','й','к','л','м','н','п','р','с','т','ф','х','ц','ч','ш','щ': writeln('согласные');
    
  else
    writeln('знаки');
  end;
end.


Решение 50 типовых задач на Pascal, Душистов


Урок 22. Сумма элементов массива

Просмотров 22.7к. Обновлено 23 ноября 2020

Урок из серии: «Язык программирования Паскаль«

При работе с элементами одномерного массива можно выделить несколько видов подзадач. Алгоритмы для решения этих подзадач   необходимо знать.

На этом уроке рассмотрим  алгоритмы для  нахождения суммы (или произведения) элементов одномерного массива. Здесь могут быть различные модификации — найти сумму элементов с заданным свойством.

Пример 1. Найти сумму элементов массива.

Решение.

Воспользуемся написанными ранее процедурами для ввода и вывода массива.   Массив заполним случайными числами.

Добавим  функцию Sum для  нахождения суммы элементов массива.  В алгоритме переменная i — является счетчиком элементов массива,  s — сумма элементов массива, она вычисляется по реккурентной формуле s = s+m(i).

Обработка элементов массива производится в цикле. Перед циклом сумме присваивается начальное значение равное нулю: sum := 0. В теле цикла записывается рабочая формула для накопления суммы: s := s + m[i].

Текст функции получится таким:

Function Sum(m: myarray): Integer;
Var   i, s : Integer;
Begin
   sum:=0;
   For i:=1 To n Do
     {к уже найденной сумме первых (i-1) элементов прибавляем i-ый элемент}
     s:=s+m[i];
     sum:=s;
End;

Составим программу. В ней воспользуемся для заполнения массива процедурой  Init2, которая заполняет массив случайными числами из заданного интервала.

Program primer_1;
   Const n = 30;  {n - это количество элементов массива}
   Type
      myarray = Array [1...n] Of Integer;
   Var C : myarray;
       s : Integer; {s - сумма всех элементов массива}

   Procedure Init2(a,b: integer; Var m : myarray);
   {Процедура заполнения массива случайными числами из интервала [a,b] и вывода на экран}
   ...
   Function Sum(m: myarray): Integer;
   {Функция для нахождения суммы элементов массива}
   ...
Begin {main}
   {заполняем массив случайными числами из интервала [-25, 25] и выводим на экран}
   Init2(-25, 25, C);
   s:=Sum(C); {находим сумму элементов}
   Writeln ('Их сумма равна ',s);{выводим результат}
   Readln;
End.

Для нахождения произведение  элементов массива,  переменной P перед циклом присваиваем начальное значение  равное 1: P:= 1. В теле цикла ставится рабочая  рекуррентная формула для нахождения произведения: P:= P* C[i].

Пример 2. Найти сумму элементов массива, кратных заданному числу Решение. Воспользуемся функцией Sum из предыдущей программы, но будем суммировать не все элементы, а только те, которые делятся на заданное число (остаток от деления равен 0)

Function Sum(m : myarray) : Integer;
Var i, s, k : Integer;
Begin
   Writeln ('введите число');
   Readln(k);
   s:=0; {начальное значение суммы}
   For i:=1 To n Do
     {если элемент кратен k,то прибавляем его сумме}
     If m[i] Mod k = 0 Then s := s + m[i];
   sum:=s;
End;

Все остальное можно оставить без изменения.

Вы познакомились с алгоритмом суммирования элементов массива. На следующем уроке продолжим изучение алгоритмов для одномерных массивов.

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