Помогите с Pascal
|
|
Jaragar | Дата: Пятница, 10.12.2010, 03:16 | Сообщение # 1 |
Новичок
Группа: Пользователи
Сообщений: 5
Статус: Offline
| Нужно вычислить Y если известно условие Y=... если х <2, Y=... если <2 х∈[-1;3]; Δх=0.2 Помогите пожалуйста. Решил все задания по подобным, а похожее на это не нашел.
|
|
| |
Seqular | Дата: Пятница, 10.12.2010, 09:47 | Сообщение # 2 |
Хранитель
Группа: Администраторы
Сообщений: 859
Статус: 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
Статус: Offline
| Я так думаю здесь не цикл нужен. Икс принадлежит линии от -1 до 3 с шагом 0.2 . Т.е. может принимать значения -1;-0.8;-0.6;и т.д. до трех. Как сделать чтоб паскаль считал только при этом условии?
|
|
| |
Seqular | Дата: Пятница, 10.12.2010, 23:51 | Сообщение # 4 |
Хранитель
Группа: Администраторы
Сообщений: 859
Статус: 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
Статус: 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
Статус: Offline
| 1) Выход из цикла сделай не (х = 3), а (x >= 3). Я не проверял, но должно помочь. Могу объяснить почему. 2) Вывод x и y лучше наверное делать внутри цикла. Иначе он выведет только последнее значение! И смысла в цикле совсем не будет!
Поддерживаю также проект сообщество молодых сисадминов
|
|
| |
Jaragar | Дата: Суббота, 11.12.2010, 15:11 | Сообщение # 7 |
Новичок
Группа: Пользователи
Сообщений: 5
Статус: Offline
| Спасибо большое. Всё работает. Только сделал х>=3.2 а то он значение икса 3 не считает.
|
|
| |
Seqular | Дата: Суббота, 11.12.2010, 18:58 | Сообщение # 8 |
Хранитель
Группа: Администраторы
Сообщений: 859
Статус: Offline
| Jaragar, Ну можно, но технически не верно! Тогда надо знак равенства от трёх убрать! Чтобы строгое неравенство считал! Ну да ладно! Если хотите - оставьте так, если не хотите - калибруйте Until (x > 3). Происходит такая ошибка из-за накапливаемой ошибки округления Real-числа... На самом деле компьютер всегда считает приближенно дробные числа! Поэтому на момент конца цикла будем иметь число что-то вроде: x = 3.000000001, что не равно 3 и не сможем выйти из цикла. ) Это так, немного теории
Поддерживаю также проект сообщество молодых сисадминов
|
|
| |