Pascal abc как найти сумму цифр

semshel

1

Найти сумму всех цифр в строке

10.05.2013, 22:07. Показов 2680. Ответов 3


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

дана символьная строка. найти сумму всех цифр в ней.

maksim32

74 / 50 / 29

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

Сообщений: 143

10.05.2013, 22:32

2

Если я правильно понял, то так:

Pascal
1
2
3
4
5
6
7
var s:string;
 i,k:integer;
begin
 readln(s);
 for i:=1 to length(s) do if(ord(s[i])>=ord('0'))and(ord(s[i])<=ord('9')) then inc(k,ord(s[i])-ord('0'));
 writeln(k);
end.



0



antonboom

bmstu-team

301 / 136 / 91

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

Сообщений: 420

Записей в блоге: 10

10.05.2013, 22:36

3

Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
var s:string;
    i,k,j:integer;
begin
writeln('Ââåäèòå ñòðîêó ');
readln(s);
 
k:=0;
{ñïîñîб ïåðâûé
for i:=1 to length(s) do begin
if (s[i]='1')or(s[i]='2')or(s[i]='3')or(s[i]='4')or(s[i]='5')or(s[i]='6')or(s[i]='7')or(s[i]='8')or(s[i]='9')then begin
k:=k+StrToInt(s[i]);
end; end;}
 
{ñïîñîá âòîðîé}
for j:=1 to 9 do begin
for i:=1 to length(s) do begin
if s[i] = IntToStr(j) then begin
k:=k+j;
end; end; end;
 
write('Ñóììà öèôð â ñòðîêå: ',k);
writeln;
end.



1



КонецСвета

Почетный модератор

7966 / 3937 / 2464

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

Сообщений: 5,377

11.05.2013, 00:52

4

Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

альтернативка =)

Pascal
1
2
3
4
5
6
7
8
9
var s: string;
    i: byte;
    sum: integer;
begin
write('s='); readln(s);
for i:=1 to length(s) do
    if s[i] in ['1'..'9'] then inc(sum,strtoint(s[i]));
writeln(sum);
end.



1



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

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

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

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

Простейшие алгоритмы

№1. Сумма вводимых целых чисел

begin
  var n := ReadInteger('Введите число слагаемых:'); 

  var s := 0.0; 
  for var i:=1 to n do
  begin 
    var x := ReadReal($'Введите слагаемое №{i}:'); 
    s += x;
  end;

  Println($'Сумма равна {s}');
end.

В алгоритме используются интерполированные строки вида $’Сумма равна {s}’.
Они начинаются с $. Выражение в фигурных скобках, расположенное в такой строке, заменяется на его значение.

№2. Произведение целых чисел

begin
  var n := ReadInteger('Введите число множителей: ');

  var p := 1.0;
  for var i:=1 to n do
  begin
    var x := ReadReal('Введите множитель: ');
    p *= x;
  end;

  Println($'Произведение равно {p}');
end.

№3. Двойной факториал n!!=n*(n-2)*(n-4)*…*2 (или 1)

begin
  var x := ReadInteger('Введите x: ');

  var p := 1;
  while x>=2 do
  begin
    p *= x;
    x -= 2;
  end;

  Println($'Двойной факториал равен {p}');
end.

№4. Сколько нечетных среди n введенных

begin
  var n := ReadInteger('Введите n: ');

  var c := 0;
  for var i:=1 to n do
  begin
    var x := ReadInteger('Введите целое число: ');
    if x mod 2 <> 0 then
      c += 1;
  end;

  println($'Количество нечетных равно {c}');
end.

№5. Защита от неверного ввода

begin
  var x: real;
  repeat
    x := ReadReal('Введите x>0: ');
    if x<=0 then
      Println('Неверный ввод');
  until x>0;
end.

№6. Табулирование функции f(x) на отрезке в точках, разбивающих отрезок на N частей

Дан отрезок [a,b]

function f(x: real) := sin(x)*x;

begin
  var N := ReadInteger('Введите N: ');
  Assert(N>0);
  var (a,b) := ReadReal2('Введите a и b: ');

  var h := (b-a)/N;
  var x := a;
  loop N+1 do
  begin
    Writeln(x:5:2,f(x):10:4);
    x += h;
  end;
end.

№6a. Решение, использующее while. Погрешность округления и вычислительная погрешность

function f(x: real): real:= sin(x)*x;

begin
  var N:=ReadInteger('Введите N: ');
  Assert(N>0);
  var (a,b):=ReadReal2('Введите a и b: ');
 
  var h := (b-a)/N;
  var x := a;
  while x <= b+h/2 do
  begin
    writeln(x:5:2,f(x):10:4);
    x += h;
  end;
end.

Рекуррентные соотношения

№7. Вывод 10 первых степеней двойки

begin
  var x := 2;
  for var i := 1 to 10 do
  begin
    writeln(i:2,x:5);
    x *= 2;
  end;
end.

№8. Вывод всех двухзначных чисел, кратных 5

begin
  var x := 10;
  while x < 100 do
  begin
    writeln(x:3);
    x += 5;
  end;
end.

№9. Вывод n первых чисел Фибоначчи

begin
  var n := ReadInteger('Введите целое число n (n > 1): ');
  Assert(n>1);
  var (a,b) := (1,1);
  Print(a,b);
  loop n-2 do
  begin
    (a,b):=(b,a+b);
    Print(b);
  end;
end.

В алгоритме используются кортежи. В момент переприсваивания в цикле создаются буферные переменные, что позволяет нам избежать их объявления вручную.

№10. Найти НОД(A,B), используя алгоритм Евклида:

НОД(A,B) = НОД(B,A mod B); НОД(A,0) = A

begin
  var (a,b):=ReadInteger2('Введите целые числа A и B: ');
  while b<>0 do
    (A,B):=(B,A mod B);
  println($'НОД(A,B) = {A}');
end.

№11. Найти сумму цифр целого числа m

begin
  var m := ReadInteger('Введите целое число m: ');
 
  var (s,m1) := (0,abs(m));
  while m1 > 0 do
  begin
    s += m1 mod 10;
    m1 := m1 div 10;
  end;
 
  println($'Сумма цифр числа {m} равна {s}');
end.

Для работы с отрицательными числами в алгоритме используется стандартная функция abs(x) возвращающая модуль от x.

Максимумы и минимумы

№12. Найти max из введенных чисел

begin
  var n := ReadInteger('Введите целое число n (n>0): ');
  assert(n>0);
 
  var x := ReadReal('Введите 1 число: ');
  var max := x;
  for var i := 2 to n do
  begin
    x := ReadReal($'Введите {i} число: ');
    if max < x then
      max := x;
  end;
 
  Println($'Максимальное из введенных чисел: {max}');
end.

№12a. Найти min, удовлетворяющее условию p(x)

// Условие взятое как пример (Если число положительное, то условие p(x) возвращает true, иначе false)
function p(x: real): boolean:=x > 0;
 
begin
  var n := ReadInteger('Введите целое число n (n>0): ');
  assert(n>0);
 
  var min := real.MaxValue;
  for var i := 1 to n do
  begin
    var x := ReadReal($'Введите {i} число: ');
    if (x < min) and p(x) then
      min := x;
  end;
 
  if min = real.MaxValue then
    println('Нет чисел, удовлетворяющих условию')
  else println($'Минимальное из введенных чисел, удовлетворяющее условию: {min}');
end.

Суммирование рядов (конечных и бесконечных)

№13. Вычислить Σ(i=1..n) a^i/i!

begin
  var a:=ReadReal('Введите a: ');
  var n:=ReadInteger('Введите n (n>0): ');
  assert(n>0);
  var x := a;
  var s := x;
  for var i := 2 to n do
  begin
    x *= a / i;
    s += x;
  end;
  Println($'Сумма = {s}');
end.

№13a. Вычислить Σ(i=1..∞) (-1)^i * a^i/i!

begin
  var a:=ReadReal('Введите a (0 < a < 1): ');
  assert((a>0) and (a<1));
 
  var eps := 0.0001;
  var i := 1;
  var s := 0.0;
  var y := -a;
  repeat
    s += y / i;
    i += 1;
    y *= -a;
  until abs(y/i) < eps;
 
  Println($'Сумма = {s}');   
end.

Поиск значения

№14. Есть ли среди введенных число k?

var n,k: integer;
begin
  write('Введите целые числа n (n>0) и k: ');
  readln(n,k);
  assert(n>0);

  var Exists := false;
  for var i := 1 to n do
  begin
    write('Введите ', i, ' целое число: ');
    var x := ReadInteger;
    if x = k then
    begin
      Exists := true;
      break;
    end;
  end;

  if Exists then
    writeln('Число ', k, ' было введено')
  else writeln('Число ', k, ' не было введено');
end.

№14b. Есть ли среди введенных число k? (то же с использованием while)

var n,k: integer;
begin
  write('Введите целые числа n (n>0) и k: ');
  readln(n,k);
  assert(n>0);

  var Exists := false;
  var i := 1;
  while (i <= n) and not Exists do
  begin
    write('Введите ', i, ' целое число: ');
    var x := ReadInteger;
    i += 1;
    if x = k then
      Exists := true;
  end;

  if Exists then
    writeln('Число ', k, ' было введено')
  else writeln('Число ', k, ' не было введено');
end.

№15. Является ли число N>1 простым?

begin
  write('Введите целое число N (N>1): ');
  var N := ReadInteger;
  assert(N>1);

  var IsPrime := True;
  for var i := 2 to round(sqrt(N)) do
    if N mod i = 0 then
    begin
      IsPrime := False;
      break;
    end;

  if IsPrime then
    writeln('Число ', N, ' является простым')
  else writeln('Число ', N, ' является составным');
end.

Другие алгоритмы

№16. Разложение числа на простые множители

begin
  var x := ReadInteger('Введите целое число x (x>1): ');
  assert(x>1);

  var i := 2;
  write(x, ' = 1');
  repeat
    if x mod i = 0 then
    begin
      Print('*', i);
      x := x div i;
    end
    else i += 1;
  until x = 1;
end.

№17. Вычисление значения многочлена в точке x по схеме Горнера

var 
  x,a: real;
  n: integer;
begin
  write('Введите x: ');
  readln(x);
  write('Введите степень многочлена n (n>0): ');
  readln(n);
  assert(n>=0);
  write('Введите коэффициенты: ');
  readln(a);

  var s := a;
  for var i := 1 to n do
  begin
    write('Введите a_{', i+1,'}: ');
    readln(a);
    s := s*x + a;
  end;

  writeln('Значение многочлена p(x) = a_{1}*x^n + a_{2}*x^(n-1) + ... + a_{n}*x + a_{n+1} в точке x = ', x, ' равно ', s);
end.

№18. Дана непрерывная на отрезке функция f(x), имеющая на отрезке ровно один корень. Найти его методом половинного деления

Дан отрезок [a,b] (f(a)*f(b)<=0)

// В качестве примера взяты eps = 0.0001 и функция f(x) = sin(x)
const eps = 0.0001;
const f = sin;

var a,b: real;
begin
  write('Введите числа a и b (a<b): ');
  readln(a,b);
  assert(a<b);

  var fa := f(a);
  var fb := f(b);
  assert(fb*fa<0);

  while (b-a) > eps do
  begin
    var x := (b+a)/2;
    var fx := f(x);
    if fa*fx <= 0 then
      b := x;
    else
    begin
      a := x;
      fa := fx;
    end;
  end;

  writeln('Корень функции на [a,b] равен ',(b+a)/2);
end.

© Буцев Виктор, Белоусько Тихон, Зуев Семен, Гончаров Владислав, Батраков Михаил, Гаджиев Казанфар, Пак Владислав

Сумма цифр числа (Паскаль)

Программа подсчитывает сумму цифр числа.

Пример. Подсчет суммы цифр числа

var a,x:integer;
 i,s:integer;

begin
 writeln('введите целое число');
 readln( a ); x:=a;
 s:=0;
 while ( x<>0 ) do
 begin
   s := s + (x mod 10);
   x := x div 10;
 end;
writeln( 'Сумма цифр числа ',a,' = ', s );
end.


2008-03-19 • Просмотров [ 107549 ]

Порядок вывода комментариев:

Thomas-Bergersen

2022-05-26

0

№42

можно перевести все число в строку и по символом суммировать

Thomas_Bergersen

2022-05-26

0

№41

Можно сделать циклом for

нет аватара

Виктор Ткачев

2022-02-22

0

№40

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

нет аватара

нет аватара

нет аватара

Помогите решить задачу,я чаще чайник.
Даны 5 чисел,найти делится ли сумма на 5.(Сумма не может быть отрицательной и должна быть больше 1000)

var a,b,c,d,e,s:integer;

begin
writeln(‘Введите 5 чисел’);
read(a,b,c,d,e);
s:=a+b+c+d+e;
if (s mod 5 = 0) then writeln(‘Сумма делится на 5’)
else
writeln(‘Сумма не делится на 5’)
end.

нет аватара

Помогите решить задачу.
Даны целые числа M и N, не превосходящие по абсолютной величине 104. Найти сумму чисел от M до N.

var
M, N, i: word;
su: integer;

begin
writeln(‘Введите значение M, N rageo’);
read(M, N);
su := 0;
for i := M to N do
begin
write(i, ‘ ‘);
su := su + i;
end;
writeln(‘{сумма чисел’, ‘=’, su, ‘}’)
end.

нет аватара

s:=0 — сумматор обнуляется перед входом в цикл, а не то он может начать считать не с нуля, а бог знает с чего. Неизвестно же, что ранее хранилось в ячейке памяти, выделенной под s.

нет аватара

Даны целые положительные числа. Составить программу на сортировку чисел по сумме цифр числа. Сортировку осуществить по возрастанию…Решите пжл

нет аватара

noname , разве можно сразу и mod и div?

admin

2016-04-28-16:21

0

№29

а почему нет? что вас смущает?

1-10 11-20 21-29

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

Код к задаче: «Найти сумму цифр заданного натурального числа N»

textual

var
   s,n,m :integer;
begin
write('введите натуральное число: ');
readln(n);
s:= 0;
repeat
   m:= n mod 10;
   s:= s + m;
   n:= n div 10;
until n = 0;
writeln('сумма цифр: ',s);
end.

Полезно ли:

7   голосов , оценка 3.429 из 5

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