vakhitov100961
?>

Условие : покупатель должен заплатить в кассу s рублей. у него имеются 10, 50, 100, 500, 1000 и 5000 рублей сколько купюр разного достоинства отдаст покупатель, если он начинает платить с самых крупных купюр? что не так в коде? : var s, i, q, f, t, z, y: integer; begin write('введите сумму: '); readln(s); while s> 5000 do s: =s-5000; i: =i+1; writeln('купюр "5000" всего: ', i); while s> 1000 do s: =s-1000; q: =q+1; writeln('купюр "1000" всего: ', q); while s> 500 do s: =s-500; f: =f+1; writeln('купюр "500" всего: ', f); while s> 100 do s: =s-100; t: =t+1; writeln('купюр "100" всего: ', t); while s> 50 do s: =s-50; z: =z+1; writeln('купюр "50" всего: ', z); while s> 10 do s: =s-10; y: =y+1; writeln('купюр "10" всего: ', y); end.

Информатика

Ответы

violettamakhina2537
В Вашем варианте после 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
Andreeva
Программу надо сформатировать и тогда её структура будет видна лучше.
А чтобы понять, как идет выполнение, в нужных точках ставим промежуточную выдачу - это называется "трассировкой".

var
  s, k: integer;
label
  met;
begin
  s:=-12;
  k:=90;
  Writeln('s=',s,', k=',k);
  s:=s+10;
  Writeln('s=',s);
met:
  Writeln('Метка met:');
  k:=k+10; Write('k=',k);
  if k<200 then s:=50 else s:=s+k;
  Writeln(', s=',s);
  if k<200 then goto met;
  Writeln('Результат: s=',s)
end.

Результат выполнения программы:
s=-12, k=90
s=-2
Метка met:
k=100, s=50
Метка met:
k=110, s=50
Метка met:
k=120, s=50
Метка met:
k=130, s=50
Метка met:
k=140, s=50
Метка met:
k=150, s=50
Метка met:
k=160, s=50
Метка met:
k=170, s=50
Метка met:
k=180, s=50
Метка met:
k=190, s=50
Метка met:
k=200, s=250
Результат: s=250
aksmobile
Cvar
  f: Text;
  k: integer;
  s, p: longint;
  i: integer;

begin
  Assign(f, 'output.dat');
  Rewrite(f);
  writeln('Вводите данные, окончание число 7777');
  repeat
    read(k);
    if k<>7777 then writeln(f,k)
    until k=7777;
  Close(f);
  Reset(f);
  s := 0;
  p := 1;
  writeln;
  while not Eof(f) do
  begin
    readln(f, k);
    write(k:4);
    s := s + k;
    if k <> 0 then p := p * k
  end;
  Close(f);
  writeln;
  writeln('Сумма= ', s, ', произведение= ', p)
end.

Вводите данные, окончание число 7777
3
6
-4
6
2
-3
-4
2
6
0
5
-1
7777

   3   6  -4   6   2  -3  -4   2   6   0   5  -1
Сумма= 18, произведение= 622080

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

Условие : покупатель должен заплатить в кассу s рублей. у него имеются 10, 50, 100, 500, 1000 и 5000 рублей сколько купюр разного достоинства отдаст покупатель, если он начинает платить с самых крупных купюр? что не так в коде? : var s, i, q, f, t, z, y: integer; begin write('введите сумму: '); readln(s); while s> 5000 do s: =s-5000; i: =i+1; writeln('купюр "5000" всего: ', i); while s> 1000 do s: =s-1000; q: =q+1; writeln('купюр "1000" всего: ', q); while s> 500 do s: =s-500; f: =f+1; writeln('купюр "500" всего: ', f); while s> 100 do s: =s-100; t: =t+1; writeln('купюр "100" всего: ', t); while s> 50 do s: =s-50; z: =z+1; writeln('купюр "50" всего: ', z); while s> 10 do s: =s-10; y: =y+1; writeln('купюр "10" всего: ', y); end.
Ваше имя (никнейм)*
Email*
Комментарий*

Популярные вопросы в разделе

kotofei147516
marinakovyakhova
smirnovaL1286
Серопян
lenacari
Inforealto
milenaochirova01017424
a-lossev111
Vladimirovna1997
edvard-b
steff77
sashakrotova943
catsk8
Lenamihluk50
egoryandiana3727283