Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Delphi, Kylix and Pascal


Ответ
 
Опции темы Опции просмотра
Старый 29.09.2012, 05:28   #1 (permalink)
vitjok
Member
 
Регистрация: 29.09.2012
Сообщений: 72
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Вычислить значения функции, заданной графически

Здравствуйте помогите написать программу к решения геометрической задачи в паскальСоставить алгоритм и написать код программы, вычисляющей значения функции y, заданной графически, по значениям аргумента x, введенным с консоли: aacuiyiiue.jpg
Замечание:
На будущее - НЕ цепляемся к чужим темам, создаем свои.
Модератор.
vitjok вне форума   Ответить с цитированием

Старый 29.09.2012, 05:28
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Ранее такую же проблему уже обсуждали тут

Программа для вычисления значения первой и второй производных функции x^n в заданной
Значения напряжения в реальном времени
Pascal ABC. Массивы. Нахождение значения переменной Y

Старый 29.09.2012, 09:13   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от vitjok Посмотреть сообщение
Здравствуйте помогите написать программу к решения геометрической задачи в паскаль:)Составить алгоритм и написать код программы, вычисляющей значения функции y, заданной графически, по значениям аргумента x, введенным с консоли.
Легко. Для прерывания программы введите значение Х=-10.
Код:
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.
Vladimir_S вне форума   Ответить с цитированием
Старый 29.09.2012, 14:13   #3 (permalink)
vitjok
Member
 
Регистрация: 29.09.2012
Сообщений: 72
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Большое Спасибо!!!
vitjok вне форума   Ответить с цитированием
Старый 30.09.2012, 17:37   #4 (permalink)
vitjok
Member
 
Регистрация: 29.09.2012
Сообщений: 72
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Здравствуйте! не могли бы вы сделать описание пожалуйста)) что бы на будущее писать такие программы самому)) и если вас это не затруднит написать алгоритм ОГРОМНОЕ СПАСИБО!!!!!!!!
vitjok вне форума   Ответить с цитированием
Старый 30.09.2012, 19:34   #5 (permalink)
Vladimir_S
Специалист
 
Регистрация: 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.
Всё!
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 02.10.2012, 18:59   #6 (permalink)
vitjok
Member
 
Регистрация: 29.09.2012
Сообщений: 72
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

здравствуйте)) как будет выгладить данный код без цикла?))
vitjok вне форума   Ответить с цитированием
Старый 02.10.2012, 20:01   #7 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от vitjok Посмотреть сообщение
здравствуйте)) как будет выгладить данный код без цикла?))
Здравствуйте! Без какого именно цикла? И чем циклы Вам мешают?
Vladimir_S вне форума   Ответить с цитированием
Старый 02.10.2012, 20:47   #8 (permalink)
vitjok
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.
vitjok вне форума   Ответить с цитированием
Старый 02.10.2012, 20:56   #9 (permalink)
vitjok
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.
работал при вводе положительного числа
vitjok вне форума   Ответить с цитированием
Старый 02.10.2012, 23:11   #10 (permalink)
Gruvi
VIP user
 
Аватар для Gruvi
 
Регистрация: 10.03.2011
Сообщений: 765
Записей в дневнике: 1
Сказал(а) спасибо: 10
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 3453
По умолчанию

у вас корень из отрицательного числа получается при вводе положительного числа.
вот тут
Цитата:
Y:=Sqrt(1-Sqr(X-1))
Gruvi вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 09:49.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.