Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.07.2020, 15:11   #1
tarhun69
Новичок
Джуниор
 
Регистрация: 20.07.2020
Сообщений: 7
По умолчанию Протабулировать функцию у = f(x) на отрезке [0; 24] с шагом h — 2,4

PascalABC
Протабулировать функцию у = f(x) на отрезке [0; 24] с шагом h — 2,4, . Результаты вычислений вывести на экран в виде таблицы пар чисел х, у. Вычислить количество и произведение тех значений функции у, для которых выполняется неравенство 1,13 < у < 5. Задачу решить с использованием оператора с параметром For.
Смог написать через while , попытался переделать на For но не получилось
Функция y=10.8*|cos(x^2/1.13)|*sin(x+1.4)
Код:
var
  col,umn,x,y:real;
begin
  x:=0;
  col:=0;
  umn:=1;
  for x:=0 to 24 do begin
  begin
    Y:=10.8*abs(cos(x*x/1.13))* sin( x+1.4);
    Write(x:3:1,' ');
    write(y:6:2);
    if (Y>1.3) and (Y<5) then
    col:=col+1;
    if (Y>1.3) and (Y<5) then
    Umn:=umn*y;
    
    X:=X+2.4;
    writeln;
  end;
  writeln('Количество: ',col);
  writeln('Умножение: ',umn:4:2);
  readln;
 
end;
end.
tarhun69 вне форума Ответить с цитированием
Старый 23.07.2020, 15:28   #2
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,538
По умолчанию

Зачем у вас 2 шт begin:
Код:
for x:=0 to 24 do begin
  begin
И зачем 2 шт end в конце ? Хотя, есле это у вас модуль unit, а не program, то да , 2 шт.

Ну и главная ошибка, даже 2 шибки - переменная-счетчик в for - не ординарного типа ( x:real), а во вторых вы её еще и ставите в левую часть оператора приваивания X:=X+2.4;

Так что добавьте в var
Код:
i:Integer;
и поменяйте
Код:
for i:=0 to 10 do
и заработает.

Ну и кроме того, я не проверял саму арифметику и умножения для Y - неохота.
Кстати, вместо
Код:
col:=col+1;
есть
Код:
Inc(col);
type_Oleg вне форума Ответить с цитированием
Старый 25.07.2020, 14:11   #3
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,949
По умолчанию

Код:
const a=0;
      b=24;
      h=2.4;
var
  umn,x,y:real;
  col,i:integer;
begin
  col:=0;
  umn:=1;
  for i:=a to Round(b/h) do
  begin
    x:=i*h;
    Y:=10.8*abs(cos(x*x/1.13))* sin( x+1.4);
    Write(x:3:1,' ');
    write(y:6:2);
    if (Y>1.13) and (Y<5) then
    begin
       col:=col+1;
       Umn:=umn*y;
    end;
    writeln;
  end;
  writeln('Количество: ',col);
  writeln('Умножение: ',umn:4:2);
  readln;
end.
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]

Последний раз редактировалось newerow1989; 25.07.2020 в 14:13. Причина: 1.3 заменен на 1.13!
newerow1989 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
протабулировать функцию y=ctg(x+1/2) y на промежутке [-0.5; 0.5] с шагом h = 0,1. tima58 Помощь студентам 4 20.03.2015 06:21
Протабулировать функцию Y на заданном отрезке и записать в одномерный массив ( на СИ ) Тофи Помощь студентам 0 21.11.2013 17:39
Протабулировать функцию на отрезке aleshkus Паскаль, Turbo Pascal, PascalABC.NET 6 15.12.2011 23:24
протабулировать функцию на отрезке , сдавать скоро aleshkus Паскаль, Turbo Pascal, PascalABC.NET 8 15.12.2011 22:53
Протабулировать функцию y=экспонетна в степени x, с шагом h в заданном диапазоне systemv Помощь студентам 3 29.10.2010 13:48