|
Главная | Правила | Регистрация | Дневники | Справка | Пользователи | Календарь | Поиск | Сообщения за день | Все разделы прочитаны |
|
Опции темы | Опции просмотра |
29.09.2012, 05:28 | #1 (permalink) | ||
Member
Регистрация: 29.09.2012
Сообщений: 72
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Вычислить значения функции, заданной графически
|
||
29.09.2012, 05:28 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Ранее такую же проблему уже обсуждали тут Программа для вычисления значения первой и второй производных функции x^n в заданной Значения напряжения в реальном времени Pascal ABC. Массивы. Нахождение значения переменной Y |
29.09.2012, 09:13 | #2 (permalink) | |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Цитата:
Код:
Var X,Y:Real; Begin Writeln('To quit the program type -10 az X'); Repeat Repeat Write('X= '); Readln(X); If (X<0) and (X<>-10) then Writeln('X out of range: negatives are forbidden!'); Until (X>=0) or (X=-10); If X>4 then Repeat X:=X-4; Until X<=4; If X<>-10 then begin If X<1 then Y:=Sqrt(1-Sqr(X-1)) else If (X>=1) and (X<3) then Y:=1-Sqrt(1-Sqr(X-2)) else Y:=Sqrt(1-Sqr(X-3)); Writeln('Y= ',Y:0:3); end; Until X=-10; End. |
|
30.09.2012, 17:37 | #4 (permalink) |
Member
Регистрация: 29.09.2012
Сообщений: 72
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Здравствуйте! не могли бы вы сделать описание пожалуйста)) что бы на будущее писать такие программы самому)) и если вас это не затруднит написать алгоритм ОГРОМНОЕ СПАСИБО!!!!!!!!
|
30.09.2012, 19:34 | #5 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Описание - попробую. А вот писать алгоритмы, извините, не умею.
Программа оформлена в виде бесконечного замкнутого цикла ввод аргумента - вывод значения функции - ввод аргумента - вывод и т.д. Прерывание цикла и выход из программы осуществляется, если ввести значение Х=-10 (сама величина не принципиальна). Код:
Var X,Y:Real; Описали переменные X и Y Begin Начало программы Writeln('To quit the program type -10 az X'); Здесь на экран вывели информацию о способе прерывания программы: ввести Х=-10 Repeat Открываем глобальный цикл, о котором сказано выше Repeat Write('X= '); Readln(X); If (X<0) and (X<>-10) then Writeln('X out of range: negatives are forbidden!'); Until (X>=0) or (X=-10); Вводим Х тоже с помощью цикла. Поскольку допустимы только положительные значения Х и единственное отрицательное Х=-10 (для прерывания), повторяем цикл ввода до тех пор, пока не будет введено неотрицательное число. В случае ввода отрицательных значений (кроме -10), выводим уведомление "Отрицательные значения запрещены!" If X>4 then Repeat X:=X-4; Until X<=4; Поскольку изображенная на графике функция периодична с периодом 4, вычитаем из Х этот период до тех пор, пока Х не окажется между 0 и 4. If X<>-10 then Проверяем, не равен ли аргумент -10. Если нет, то вычисляем значение функции. begin Далее находим значения Y, разбив интервал 0 - 4 на три участка: от 0 до 1, от 1 до 3 и от 3 до 4. Во всех случаях используем уравнение окружности (X-X0)² + (Y-Y0)² = R², где X0, Y0 - координаты центра, R - радиус (в данном случае R=1). If X<1 then Y:=Sqrt(1-Sqr(X-1)) else Если Х находится в интервале от 0 до 1, то функция представляет собой дугу окружности (II сегмент) с центром (1, 0). If (X>=1) and (X<3) then Y:=1-Sqrt(1-Sqr(X-2)) else Если Х находится в интервале от 1 до 3, то функция представляет собой дугу окружности (III и IV сегменты, т.е. нижняя полу- окружность) с центром (2, 1). Y:=Sqrt(1-Sqr(X-3)); И, наконец, если Х находится в интервале от 3 до 4, то функция представляет собой дугу окружности (I сегмент) с центром (3, 0). Writeln('Y= ',Y:0:3); Выводим результат на экран end; Until X=-10; Проверяем выполнение условия выхода из глобального цикла. End. Всё! |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
02.10.2012, 20:47 | #8 (permalink) |
Member
Регистрация: 29.09.2012
Сообщений: 72
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
вообще без циклов)
я их тут убрал но все равно есть ошибка Program Vitjok; Uses CRT; Var X,Y:Real; Begin Write('X= '); Readln(X); If (X<0) then Writeln('X out of range: negatives are forbidden!'); If X>4 then x:=x-4; begin If X<1 then Y:=Sqrt(1-Sqr(X-1)); If (X>=1) and (X<3) then Y:=1-Sqrt(1-Sqr(X-2)) else Y:=1-Sqrt(1-sqr(x-3)); Writeln('Y= ',Y:0:3); end; End. |
02.10.2012, 20:56 | #9 (permalink) |
Member
Регистрация: 29.09.2012
Сообщений: 72
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
просто нужно что бы этот код Program Vitjok;
Uses CRT; Var X,Y:Real; Begin Write('X= '); Readln(X); If (X<0) then Writeln('X out of range: negatives are forbidden!'); If X>4 then x:=x-4; begin If X<1 then Y:=Sqrt(1-Sqr(X-1)); If (X>=1) and (X<3) then Y:=1-Sqrt(1-Sqr(X-2)) else Y:=1-Sqrt(1-sqr(x-3)); Writeln('Y= ',Y:0:3); end; End. работал при вводе положительного числа |
02.10.2012, 23:11 | #10 (permalink) | |
VIP user
Регистрация: 10.03.2011
Сообщений: 765
Записей в дневнике: 1
Сказал(а) спасибо: 10
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 3453
|
у вас корень из отрицательного числа получается при вводе положительного числа.
вот тут Цитата:
|
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
Опции темы | |
Опции просмотра | |
|
|