На строке 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))); "
Задание 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.
Объяснение:
begin
writeln('Введите N:');
readln(N);
writeln('Введите A:');
readln(A);
if (N = 1) or (N = 3) or (N = 5) or (N = 7) or (N = 8) or (N = 10) or (N = 12) then
writeln('В месяце 31 день')
else if (N = 4) or (N = 6) or (N = 9) or (N = 11) then
writeln('В месяце 30 дней')
else if (N = 2) and (A = 0) then
writeln('В месяце 28 дней')
else if (N = 2) and (A = 1) then
writeln('В месяце 29 дней')
else
writeln('Данные введены неправильно!');
readln;
end.