Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Прошу о помощи с паскалем

a da? Ученик (124), закрыт 1 месяц назад
Выдает такую ошибку Параметр цикла for в PascalABC.NET должен описываться в заголовке цикла. В чем может быть ошибка?

program Calculation;

var
x, y, sum: real;
count: integer;

begin
sum := 0;
count := 0;

for x := -2 to 2 step 0.2 do
begin
if x > 0 then
begin
y := power(x, 3) + power(cos(x), 4);
sum := sum + y;
count := count + 1;
end;
end;

if count > 0 then
writeln('Среднее арифметическое положительных значений функции: ', sum/count:0:2)
else
writeln('Нет положительных значений функции');
end.

Вообще нужно вычислить среднее арифметическое всех положительных значений функции

y(x) = x3 + cos4x, на промежутке [-2; 2] с шагом h = 0.2.
Лучший ответ
indrish of Skalitz Профи (883) 1 месяц назад
Ошибка заключается в том, что параметр цикла for в PascalABC.NET должен быть целочисленным, а не вещественным. В данном случае параметр step указан как 0.2, что является вещественным числом.

Для того чтобы исправить ошибку, необходимо изменить параметр шага цикла for на целочисленный, например, использовать шаг 1:

vbnet
Copy code
for x := -20 to 20 step 2 do
После внесения данного изменения программа должна корректно вычислить среднее арифметическое всех положительных значений функции на заданном промежутке.
Остальные ответы
Undertaker Знаток (322) 1 месяц назад
var
x, y, sum: real;
count: integer;

begin
sum := 0;
count := 0;

for x := -2 to 2 step 0.2 do
begin
if x > 0 then
begin
y := power(x, 3) + power(cos(x), 4);
sum := sum + y;
count := count + 1;
end;
end;

if count > 0 then
writeln('Среднее арифметическое положительных значений функции: ', sum/count:0:2)
else
writeln('Нет положительных значений функции');
end.
a da?Ученик (124) 1 месяц назад
и что поменялось кроме удаления 1 строчки? тем более проблема не решилась
Undertaker Знаток (322) a da?, по идее должно было помочь. Если нет, то тогда что-то не до установил в компиляторе.
a da?Ученик (124) 1 месяц назад
это уже предустановленно в паскале
Undertaker Знаток (322) a da?, попробуй прописать переменную x непосредственно в цикле for. То есть: for x:real:= -2 ... И в начале кода не забудь убрать x из var.
Krab Bark Искусственный Интеллект (283030) 1 месяц назад
Это не ошибка. Это просто плохо сформулированное замечание от разработчиков PascalABC.NET , что это не обычный Pascal и в нем есть гораздо более продвинутые средства, чем в обычном Pascal. Но обычный вид цикла и в PascalABC.NET сработает, несмотря на это замечание. Так что просто игнорируй его.
a da?Ученик (124) 1 месяц назад
и как решить проблему тогда?
Krab Bark Искусственный Интеллект (283030) a da?, а нет никакой проблемы. Можешь написать разработчикам PascalABC.NET , чтобы убрали из компилятора это вводящее в заблуждение замечание. Или использовать другой Pascal, не ABC.NET , хотя смысла в этом я не вижу.
Похожие вопросы