nikitalandsberg
13.10.2020 14:16

Как в языке Паскаля решить задачу ('cif6')

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
smirnov27121981
16.07.2020 11:49
Const
  n = 40;

var
  x: array[1..n] of integer;
  i, k, s: integer;

begin
  Randomize;
  Writeln('Элементы массива');
  k := 0; s := 0;
  for i := 1 to n do
  begin
    x[i] := Random(50);
    Write(x[i]:3);
  end;
  Writeln;
  Writeln('Элементы со значением в интервале [7;10]');
  for i := 1 to n do
    if (x[i] >= 7) and (x[i] <= 10) then
    begin
      k := k + 1; s := s + x[i];
      Write(x[i]:3)
    end;
  if k = 0 then Writeln('не найдены')
  else Writeln(#13#10, ' Элементов:', k, ', среднее арифметическое=', s / k:5:3)
end.

Тестовое решение:

Элементы массива
 24 33 36 29 12  7  5 36  3 48 40 40 46  6 10 23 33  3 38 48 29 37 11 40 44 16 17 18 34 38 33 39  9  0 41 37 42  2 40 31
Элементы со значением в интервале [7;10]
  7 10  9
 Элементов:3, среднее арифметическое=8.667
0,0(0 оценок)
Ответ:
котикkatya
03.03.2023 08:52
В Вашем варианте после while необходимо писать begin, а после Writeln - end. Но само по себе решение некрасивое.
Вот Вам еще два на выбор.

1. Без массива

var
  s,n:integer;
begin
  Write('Введите сумму: '); Read(s);
  n:=s div 5000;
  if n>0 then begin
    Writeln('Банкнот "5000" всего: ',n);
    s:=s mod 5000
    end;
  n:=s div 1000;
  if n>0 then begin
    Writeln('Банкнот "1000" всего: ',n);
    s:=s mod 1000
    end;
  n:=s div 500;
  if n>0 then begin
    Writeln('Банкнот "500" всего: ',n);
    s:=s mod 500
    end;
  n:=s div 100;
  if n>0 then begin
    Writeln('Банкнот "100" всего: ',n);
    s:=s mod 100
    end;
  n:=s div 50;
  if n>0 then begin
    Writeln('Банкнот "50" всего: ',n);
    s:=s mod 50
    end;
  n:=s div 10;
  if n>0 then begin
    Writeln('Банкнот "10" всего: ',n);
    s:=s mod 10
    end;
  if s>0 then Writeln('Недоплачено: ',s)
end.

Пример:
Введите сумму: 162504
Банкнот "5000" всего: 32
Банкнот "1000" всего: 2
Банкнот "500" всего: 1
Недоплачено: 4

2. С массивом

const
  k:array[1..6] of integer=(5000,1000,500,100,50,10);
var
  s,n,i:integer;
begin
  Write('Введите сумму: '); Read(s);
  for i:=1 to 6 do begin
    n:=s div k[i];
    if n>0 then begin
      Writeln('Банкнот "',k[i],'" всего: ',n);
      s:=s mod k[i]
      end
    end;
  if s>0 then Writeln('Недоплачено: ',s)
end.

Пример
Введите сумму: 15470
Банкнот "5000" всего: 3
Банкнот "100" всего: 4
Банкнот "50" всего: 1
Банкнот "10" всего: 2
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота