Задание 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))); "
int main(void) {
int a1,a2,b,k1=0,k2=0;
printf("a1 = ");
scanf("%d",&a1);
printf("a2 = ");
scanf("%d",&a2);
if (a1>0) b=a1; else b=-a1;
while (b>0) {
k1++; b /= 10;
}
if (a2>0) b=a2; else b=-a2;
while (b>0) {
k2++; b /= 10;
}
if (k1>k2) printf("В числе %d больше цифр, чем в числе %d",a1,a2);
else if (k2>k1) printf("В числе %d больше цифр, чем в числе %d",a2,a1);
else printf("Количество цифр в числах одинаково");
return 0;
}
Пример:
a1 = 153
a2 = -4680
В числе -4680 больше цифр, чем в числе 153