Pascal: c клавиатуры вводиться 3 5-значных числа. найти сумму цифр наименьшего числа, сумму цифр наибольшего числа и вывести на экран разность между этими суммами.

badery346 badery346    2   28.08.2019 08:40    0

Ответы
GDIZzzEr GDIZzzEr  06.10.2020 00:15
1. Вот так это можно написать коротко, быстро и понятно, если разбираться в современном Паскале.

// PascalABC.NET 3.2, сборка 1417 от 28.03.2017
// Внимание! Если программа не работает, обновите версию!

function SoD(Self:integer):integer; extensionmethod;
begin
  while Self>0 do (Result,Self):=(Result+Self mod 10,Self div 10);
end;

function Diff(Self:array of integer):integer; extensionmethod;
begin
  Result:=Self.Max.SoD-Self.Min.SoD
end;

begin
  Writeln(ReadArrInteger('Три пятизначных числа:',3).Diff)
end.

Пример
Три пятизначных числа: 12345 23456 34567
10

2. А вот так примерно учат у нас в школах...

program School;
var
  i,n,max,min,d:integer;
begin
  Write('Введите 1-е пятизначное число: '); Read(n);
  max:=n;
  min:=n;
  for i:=2 to 3 do begin
    Write('Введите ',i,'-е пятизначное число: '); Read(n);
    if n<min then min:=n
    else
      if n>max then max:=n;
    end;
  d:=0;
  while max>0 do begin
    d:=d+max mod 10;
    max:=max div 10
    end;
  while min>0 do begin
    d:=d-min mod 10;
    min:=min div 10
    end;
  Writeln(d)
end.

Пример
Введите 1-е пятизначное число: 12345
Введите 2-е пятизначное число: 23456
Введите 3-е пятизначное число: 34567
10
ПОКАЗАТЬ ОТВЕТЫ
alianna366 alianna366  06.10.2020 00:15
Function sumd(n: integer): integer;
var s: integer;
begin
  s:=0;
  repeat
    s:=s+ n mod 10;
    n:=n div 10;
  until n=0;
  sumd:=s;
end;  
// основная программа  
var a,b,c,mx,mn: integer;
begin
  write('числа a,b,c через пробел: ');
  readln(a,b,c);
  mx:=max(a,max(b,c));
  mn:=min(a,min(b,c));
  writeln(sumd(mx)-sumd(mn));
end.

числа a,b,c через пробел: 12345 23456 34567
10
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика