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

В этом примере продемонстрировано использование оператора +=, внутриблочных описаний переменных, автоопределения типа и описания переменной в заголовке цикла 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: Особенности языка

ShiningSky

0 / 0 / 0

Регистрация: 06.06.2016

Сообщений: 3

1

Найти общую сумму введенных чисел

06.06.2016, 14:50. Показов 8455. Ответов 5

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

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

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Program z5v8;
var s:string;
n,a,i: integer;
begin
CLS;
writeln ('Введите элементы через пробел'); {Примерно 12 11 32 27. Нужно посчитать общую сумму этих чисел}
readln(s);
n:=length(s);
a:=0;
for i:=1 to n do begin
if s[i]=' ' then a:=a+1;
end;
writeln ('a= ',a);
end.



0



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

06.06.2016, 14:50

Ответы с готовыми решениями:

Программа просит вас ввести пять чисел a1, b1, c1, d1, e1 и найти сумму положительных чисел из введенных чисел
Программа просит вас ввести пять чисел a1, b1, c1, d1, e1 и найти сумму положительных чисел из…

Из 5 введенных чисел найти сумму положительных, сумму отрицательных, а также их количество
С клавиатуры вводится 5 чисел. Написать программу, которая найдет сумму положительных чисел, сумму…

Найти сумму введенных чисел
Последовательно вводятся числа, найдите их сумму. Ввод остановить после ввода второго нуля.

Найти их сумму чисел, введенных в строку
Вообщем тема такова: есть 2 целых длинных числа по модулю не больше 10^30 степени(числа вводятся в…

5

257 / 234 / 185

Регистрация: 02.04.2016

Сообщений: 898

06.06.2016, 15:00

2

Количество цифр — это количество пробелов +1



0



0 / 0 / 0

Регистрация: 06.06.2016

Сообщений: 3

06.06.2016, 15:18

 [ТС]

3

Попытался. Считает количество символов которые я ввел (Например ввел 41 20 Посчитал как 2, нужно их сложить между собой чтобы в итоге получилось в ответе 61 т.е сложение). Пытался через второй массив. Он выводит числа которые я вводил,но не производит сложение. Мучился три часа,но в голову ничего не пришло -з-
Не было бы этих чертовых пробелов.



0



shilko2013

257 / 234 / 185

Регистрация: 02.04.2016

Сообщений: 898

06.06.2016, 17:04

4

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Program z5v8;
var s:string;
n,a,i: integer;
begin
CLS;
writeln ('Введите элементы через пробел'); {Примерно 12 11 32 27. Нужно посчитать общую сумму этих чисел}
readln(s);
n:=length(s);
a:=0;
for i:=1 to n do begin
if s[i]=' ' then a:=a+1;
end;
writeln ('a= ',a);
writeln ('Количество цифр= ',a-1);
end.



1



ShiningSky

0 / 0 / 0

Регистрация: 06.06.2016

Сообщений: 3

06.06.2016, 17:15

 [ТС]

5

Большое спасибо за ваши старания. *___* Уже нашел способ, как решить подобную задачу. Получилось так:

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
program zadacha3v8;
const cf=['0'..'9'];
var s,c: string;
    i,j,a : integer;
    n,sum,err:integer;
begin
CLS;
Writeln('Введите элементы через пробел:');
  ReadLn(s);
  sum:=0;
  i:=1;
  while i<=length(s) do
  if s[i] in cf then
   begin
    c:='';
    j:=i;
    while (s[j] in cf)and(j<=length(s)) do
     begin
      c:=c+s[j];
      j:=j+1;
     end;
    val(c,n,err);
    if err=0 then sum:=sum+n;
    i:=i+length(c);
   end
  else i:=i+1;
writeln('Сумма целых чисел=',sum);
n:=length(s);
a:=0;
for i:=1 to n do begin
if s[i]=' ' then a:=a+1;
end;
writeln ('a= ',a);
end.



0



257 / 234 / 185

Регистрация: 02.04.2016

Сообщений: 898

06.06.2016, 17:52

6

ShiningSky, Аа, сори затупил я считал количество чисел, а не их сумму)



0



Формулировка задачи:

Последовательно вводятся числа, найдите их сумму. Ввод остановить после ввода второго нуля.

Код к задаче: «Найти сумму введенных чисел»

textual

var
  a, s, k : integer;
begin
  k := 0;
  s := 0;
  repeat
    write('введи число: ');
    readln(a);
    s := s + a;
    if a = 0 then inc(k)
  until k = 2;
  writeln('сумма равна: ', s)
end.

Полезно ли:

9   голосов , оценка 4.222 из 5

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

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

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

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

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

Просмотров 23к. Обновлено 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;

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

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

Понравилась статья? Поделить с друзьями:
  • Посудомоечная машина bosch ошибка e25 как исправить
  • Как составить корм для кролика
  • Как найти помещения для аптеки
  • Как исправить ошибку адаптера беспроводной сети
  • Как найти мятные листы геншин