Задание 1: Дана блок-схема алгоритма.Определить результат выполнения алгоритма при определенных значениях исходных данных и заполнить таблицу. Таблицу не приложила
PascalABC.NET 3.2, сборка 1383 от 09.02.2017 Внимание! Если программа не работает, обновите версию!
Используем "жадный" алгоритм. Он не всегда дает минимальное общее количество купюр, но зато простой в понимании.
begin var k:=Arr(500,100,50,10,5,2,1); // массив с достоинствами купюр var s:=ReadInteger('Введите сумму:'); // сумма к оплате Writeln('Уплатить:'); var i:=0; while s>0 do begin var p:=s div k[i]; if p>0 then Writeln(p,' шт. достоинством ',k[i],' руб.'); s:=s mod k[i]; i+=1 end; end.
Примеры Введите сумму: 3794 Уплатить: 7 шт. достоинством 500 руб. 2 шт. достоинством 100 руб. 1 шт. достоинством 50 руб. 4 шт. достоинством 10 руб. 2 шт. достоинством 2 руб.
Введите сумму: 507 Уплатить: 1 шт. достоинством 500 руб. 1 шт. достоинством 5 руб. 1 шт. достоинством 2 руб.
// PascalABC.NET 3.2, сборка 1383 от 09.02.2017 // Внимание! Если программа не работает, обновите версию!
1)
begin var b:=ArrRandom(ReadInteger('n='),-99,99); b.Println; var jn:=b.FindIndex(x->x<0); // индекс первого отрицательного var jm:=b.IndexMax; // индекс первого максимального Swap(b[jn],b[jm]); b.Println end.
Внимание! Если программа не работает, обновите версию!
Используем "жадный" алгоритм. Он не всегда дает минимальное общее количество купюр, но зато простой в понимании.
begin
var k:=Arr(500,100,50,10,5,2,1); // массив с достоинствами купюр
var s:=ReadInteger('Введите сумму:'); // сумма к оплате
Writeln('Уплатить:');
var i:=0;
while s>0 do begin
var p:=s div k[i];
if p>0 then Writeln(p,' шт. достоинством ',k[i],' руб.');
s:=s mod k[i]; i+=1
end;
end.
Примеры
Введите сумму: 3794
Уплатить:
7 шт. достоинством 500 руб.
2 шт. достоинством 100 руб.
1 шт. достоинством 50 руб.
4 шт. достоинством 10 руб.
2 шт. достоинством 2 руб.
Введите сумму: 507
Уплатить:
1 шт. достоинством 500 руб.
1 шт. достоинством 5 руб.
1 шт. достоинством 2 руб.
// Внимание! Если программа не работает, обновите версию!
1)
begin
var b:=ArrRandom(ReadInteger('n='),-99,99); b.Println;
var jn:=b.FindIndex(x->x<0); // индекс первого отрицательного
var jm:=b.IndexMax; // индекс первого максимального
Swap(b[jn],b[jm]); b.Println
end.
Пример
n= 15
33 60 -72 13 -15 -36 21 98 -21 -22 56 -20 0 -98 28
33 60 98 13 -15 -36 21 -72 -21 -22 56 -20 0 -98 28
2)
begin
var a:=ArrRandom(ReadInteger('n='),-99,99); a.Println;
a:=a[:4]+Arr(8)+a[4:]; a.Println;
end.
Пример
n= 10
65 56 31 74 -4 -54 43 8 -58 -94
65 56 31 74 8 -4 -54 43 8 -58 -94