Вторник, 07.01.2025
Pascal 4 All
[ · Новые сообщения · Участники · Правила форума · Поиск · RSS ]

 

  • Страница 1 из 1
  • 1
Модератор форума: Seqular, Pavel  

Помогите с Pascal
JaragarДата: Пятница, 10.12.2010, 03:16 | Сообщение # 1
Новичок
Группа: Пользователи
Сообщений: 5
Репутация: 0
Замечания: 0%
Статус: Offline
Нужно вычислить Y если известно условие
Y=... если х <2, Y=... если <2
х∈[-1;3]; Δх=0.2
Помогите пожалуйста. Решил все задания по подобным, а похожее на это не нашел.
 
SeqularДата: Пятница, 10.12.2010, 09:47 | Сообщение # 2
Хранитель
Группа: Администраторы
Сообщений: 859
Репутация: 35
Статус: Offline
Jaragar, Че-то совсем не понятное условие.
Если x < 2, чему равен Y? Точно такие данные?
Но почему-то напрашивается цикл типа:
Code
x := -1;
Repeat   
x := x + 0.2;
if (x < 2) then y := ...;
Until x = 3;

Повторюсь, условие не понял )


Поддерживаю также проект сообщество молодых сисадминов
 
JaragarДата: Пятница, 10.12.2010, 22:14 | Сообщение # 3
Новичок
Группа: Пользователи
Сообщений: 5
Репутация: 0
Замечания: 0%
Статус: Offline
Я так думаю здесь не цикл нужен. Икс принадлежит линии от -1 до 3 с шагом 0.2 . Т.е. может принимать значения -1;-0.8;-0.6;и т.д. до трех. Как сделать чтоб паскаль считал только при этом условии?
 
SeqularДата: Пятница, 10.12.2010, 23:51 | Сообщение # 4
Хранитель
Группа: Администраторы
Сообщений: 859
Репутация: 35
Статус: Offline
Jaragar, Тогда вам следует подумать еще раз. И, может быть, почитать вообще про циклы в Pascal.
Code
x := -1;  
Repeat    
if (x < 2) then y := ...;  
x := x + 0.2;  
Until x = 3;

Изначально x = -1;
1 итерация. Сравниваем х с 2. (-1 < 2) Меньше? Да. Выполняем нахождение у. Увеличиваем х на 0.2.
2 итерация. ,,-,,-,,-,,- (-0.8 < 2) Меньше? Да... бла-бла-бла..
И т.д.
До тех пор, пока не выполнится условие x = 3. Тогда выход из цикла. Разве не это нужно?


Поддерживаю также проект сообщество молодых сисадминов
 
JaragarДата: Суббота, 11.12.2010, 04:09 | Сообщение # 5
Новичок
Группа: Пользователи
Сообщений: 5
Репутация: 0
Замечания: 0%
Статус: Offline
В общем вот что получилось. Ошибок не обнаружено но программа зависает.

Code
Program 111;
VAR
x,y:Real;
begin
x:=-1;
Repeat
if (x<=2) then
y:=exp(sin(x))+1;
else
y:=sqrt(x+1)-1.5;
x:=x+0.2;
Until x=3;
Writeln ('y=',y);
Writeln ('x=',x);
end.
 
SeqularДата: Суббота, 11.12.2010, 09:41 | Сообщение # 6
Хранитель
Группа: Администраторы
Сообщений: 859
Репутация: 35
Статус: Offline
1) Выход из цикла сделай не (х = 3), а (x >= 3). Я не проверял, но должно помочь. Могу объяснить почему.
2) Вывод x и y лучше наверное делать внутри цикла. Иначе он выведет только последнее значение! И смысла в цикле совсем не будет!


Поддерживаю также проект сообщество молодых сисадминов
 
JaragarДата: Суббота, 11.12.2010, 15:11 | Сообщение # 7
Новичок
Группа: Пользователи
Сообщений: 5
Репутация: 0
Замечания: 0%
Статус: Offline
Спасибо большое. Всё работает. Только сделал х>=3.2 а то он значение икса 3 не считает.
 
SeqularДата: Суббота, 11.12.2010, 18:58 | Сообщение # 8
Хранитель
Группа: Администраторы
Сообщений: 859
Репутация: 35
Статус: Offline
Jaragar, Ну можно, но технически не верно! Тогда надо знак равенства от трёх убрать! Чтобы строгое неравенство считал! Ну да ладно! Если хотите - оставьте так, если не хотите - калибруйте Until (x > 3). Происходит такая ошибка из-за накапливаемой ошибки округления Real-числа... На самом деле компьютер всегда считает приближенно дробные числа! Поэтому на момент конца цикла будем иметь число что-то вроде: x = 3.000000001, что не равно 3 и не сможем выйти из цикла. ) Это так, немного теории

Поддерживаю также проект сообщество молодых сисадминов
 
  • Страница 1 из 1
  • 1
Поиск:

Copyright MyCorp © 2025
Используются технологии uCoz
javascript:;" rel="nofollow" onclick="loginPopupForm(); return false;