Задание 1
program HelloMoney;
var
y, i: integer; // Объявим переменные для количества лет вклада и для счетчика цикла
p, s: real; //Объявим переменные для количества процентов и величины вклада
begin
write('Какая сумма вклада? ');
readln(s); // Указываем сколько составляет вклад
write('На сколько лет вклад? ');
readln(y); // Указываем на сколько лет вклад
write('Какая процентная ставка?');
readln(p); // Указываем процентную ставку
for i:=1 to y do
s := s + s*p/100; // Прибавляем к вкладу ежегодный процент
write('Сумма денег составит: ', s);
end.
Объяснение:
На строке 9 "if x>=-7.5 and x<2 then y:=(a*sqrt(abs(x+6))); " в том месте, где выделено жирным, компилятор думает, что необходимо произвести побитовое умножение числа с плавающей точкой типа real -7.5 и целого числа x. Т.к. побитовое умножение применимо только к целым числам, компилятор пытается преобразовать -7.5 к целому числу, т.е. к integer, и у него это не получается, о чем он Вам и говорит.
Чтобы он не думал, что Вы собираетесь производить побитовое умножение (ведь Вы хотите произвести логическую операцию между результатами двух сравнений), нужно занести в скобки выражения x>=-7.5 и x<2, чтобы получилась такая строка: "if (x>=-7.5) and (x<2) then y:=(a*sqrt(abs(x+6))); "
// Внимание! Если программа не работает, обновите версию!
procedure AB(a,b:array of integer);
begin
var (iaMax,ibMax):=(a.IndexMax,b.IndexMax);
var t:=a[iaMax]; a[iaMax]:=b[ibMax]; b[ibMax]:=t
end;
begin
var a:=ArrRandom(9,-99,99);
Write('A: '); a.Println;
var b:=ArrRandom(11,-99,99);
Write('B: '); b.Println;
AB(a,b);
Write('A: '); a.Println;
Write('B: '); b.Println;
end.
Пример
A: -46 -76 98 -83 84 8 -14 46 8
B: 29 -36 37 78 -20 35 -77 -23 80 -50 -55
A: -46 -76 80 -83 84 8 -14 46 8
B: 29 -36 37 78 -20 35 -77 -23 98 -50 -55