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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.12.2022, 00:26   #1
anna.16110702@gmai
Новичок
Джуниор
 
Регистрация: 11.12.2022
Сообщений: 3
По умолчанию Дано действительное число х. Для функции, график которой представлен, вычислить f(х).

Очень нужна помощь. Дочке по информатике задали составить алгоритм и написать программу на Паскаль. Дочка по информатике не очень, я, кажется, тоже. Помогите, пожалуйста.

Дано действительное число х. Для функции, график которой представлен, вычислить f(х).
Изображения
Тип файла: jpg зад.jpg (27.6 Кб, 0 просмотров)

Последний раз редактировалось anna.16110702@gmai; 11.12.2022 в 00:30. Причина: некорректное отображение символов
anna.16110702@gmai вне форума Ответить с цитированием
Старый 11.12.2022, 02:26   #2
сфинкс
Форумчанин
 
Аватар для сфинкс
 
Регистрация: 17.06.2012
Сообщений: 953
По умолчанию

Надеюсь поможет логика внутри программы на Basic
и осталось подождать когда тему прочитают знающие Pascal
Код:
For x = -5 To 7 ' graf.bas
    If x <= -2 Then y = -2 Else If x >= 4 Then y = 4 Else y = x
    Print x, y
Next
Даже если вместо цикла нужен ввод с клавиатуры
думаю логика останется та же

Результат:
-5 -2
-4 -2
-3 -2
-2 -2
-1 -1
0 0
1 1
2 2
3 3
4 4
5 4
6 4
7 4

Если исходные данные нецелые бэйсик просто переделывается на шаг не целый

Через 5 минут оказалось другие темы помогают решить на Паскаль Pascal

Код:
Program Graf.pas;
var x, y: integer;
begin
   for x:=-5 to 7 do
   begin
       if x <=-2 then y:=-2 
       else if x >=4 then y:=4 
       else y:=x;
       Writeln(x, ' ', y);
   end;
end.
Онлайн проверка https://rextester.com/FLS92645

В моей ночной программе результаты похожи на график
А в ниже следующем ответе график соответствует?
Не проверял...

В любом случае странно если новички принесут "решение" где якобы реализована функция
и дальновиднее мою программу исправить на не целые
Случайные и Массивы https://programmersforum.ru/showthread.php?t=344371 Учим C# & basic & excel & python https://programmersforum.ru/showthre...=327446&page=5 ничего нерекомендую

Последний раз редактировалось сфинкс; 11.12.2022 в 14:56.
сфинкс вне форума Ответить с цитированием
Старый 11.12.2022, 11:49   #3
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,534
По умолчанию

Тут всё неправильно, начиная с условия задачи. Следовало бы: "Написать подпрограмму вычисления функции, график которой представлен на рис."
В ответе ув. сфинкс упущена мааленькая деталь:
Цитата:
Дано действительное число х.
Может, в Бесике и нет такого понятия?
Код:
Program Graf.pas;
var x, y: double;

function lom(arg:double) double ;
begin
   if (arg >= -2) and  (arg <= 4) then lom := arg else 
    if arg < 0 then lom := -2 else lom := 4
end ;
 
begin
    Readln (x) ;
    y := lom(x) ;
    Writeln(x, ' ', y);
end.
Программа работает однократно. Её можно модифицировать как кому в бошку взбредёт: вычислить ряд значений от.. до.. с шагом.. или вычислять в цикле до пока не надоест, закончив, к примеру, по вводу 0.
----------------------------
Цитата:
А в ниже следующем ответе график соответствует?
Доверяй - но проверяй. 2 * 2 = 4, говорите? Нет, надо чтоб проверкой доказать. Как по мне, так это чуть-чуть паранойя.

Последний раз редактировалось digitalis; 11.12.2022 в 14:43.
digitalis вне форума Ответить с цитированием
Старый 13.12.2022, 15:32   #4
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,304
По умолчанию

Моя толика. Отрезок можно просто "отрезать".
Код:
Program Graf.pas;
var x, y: double;

function lom(arg:double) double ;
begin
   if arg <= -2 then    {первый левый интервал}
      lom := -2         {возвращаемое значение}
   else
      if arg <= 4 then  {следующий интервал}
         lom := arg
      else
         lom := 4;       {оставшийся интервал}
end ;
 
begin
    Readln (x) ;
    y := lom(x) ;
    Writeln(x, ' ', y);
end.
PS: За основу взял код от digitalis
Так логика решения смотрится проще, на мой взгляд.
Решений с функцией возможно у них ещё не было, но код легко поправить.
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 13.12.2022, 17:12   #5
сфинкс
Форумчанин
 
Аватар для сфинкс
 
Регистрация: 17.06.2012
Сообщений: 953
По умолчанию

Решение без функции включая цикл while
Код:
var x,y: double;
begin
x:=-4.5;
while x <= 6.6 do begin
    if x <=-2 then y:=-2 else if x >=4 then y:=4 else y:=x;
    Writeln(x, ' ', y);
x:=x +0.75
end;
end.
https://rextester.com/ZVJW98110
За основу взят мой краткий вариант
Случайные и Массивы https://programmersforum.ru/showthread.php?t=344371 Учим C# & basic & excel & python https://programmersforum.ru/showthre...=327446&page=5 ничего нерекомендую

Последний раз редактировалось сфинкс; 13.12.2022 в 17:15.
сфинкс вне форума Ответить с цитированием
Старый 14.12.2022, 12:18   #6
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,534
По умолчанию

ViktorR Ну мы просто с разных концов начали резать
"Урезать - так урезать!" - сказал самурай, делая себе харакири. © А. Райкин
Сейчас так бы не сказали из уважения к чувствам самураев.

Цитата:
Решений с функцией возможно у них ещё не было
А им это уже и не надо...
digitalis вне форума Ответить с цитированием
Старый 26.12.2022, 19:19   #7
anna.16110702@gmai
Новичок
Джуниор
 
Регистрация: 11.12.2022
Сообщений: 3
По умолчанию

Всем спасибо большое!
anna.16110702@gmai вне форума Ответить с цитированием
Старый 07.02.2023, 11:40   #8
Hoshemit
 
Регистрация: 06.04.2021
Сообщений: 7
По умолчанию

If (X>-2) and (X<4) then Y:=X else Case X of -8..-2 : Y:=-2; 4..8 : Y:=4; end;
Hoshemit вне форума Ответить с цитированием
Старый 07.02.2023, 12:08   #9
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

А откуда взялись -8 и 8?

ADD: Тогда уж так, если хочется использовать case
Код:
case Floor(X) of -2 .. 3: Y := X; else if X < 0 then Y := -2 else Y := 4; end;

Последний раз редактировалось macomics; 07.02.2023 в 20:00.
macomics вне форума Ответить с цитированием
Старый 07.02.2023, 14:16   #10
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

В PascalABC.NET значение выражения-переключателя должно быть порядкового или строкового типа (а в Turbo Pascal и строковый тип нельзя), а вещественные числа не являются порядковыми, так что case нельзя использовать.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дано действительное число x. Вычислить f(x) danil031997 Паскаль, Turbo Pascal, PascalABC.NET 2 14.11.2016 23:13
Дано действительное число x, вычислить значение у Stixon Общие вопросы C/C++ 0 04.10.2016 20:55
Дано действительное число а. Вычислить f(a) для функции f(x) Artem1987 Помощь студентам 11 11.11.2010 09:51
Дано действительное число x. Вычислить hewlett Помощь студентам 2 26.06.2010 08:30
Дано действительное число х. Вычислить Incognitoal Помощь студентам 7 09.03.2009 12:27