2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Разветвляющиеся структуры. Посмотрите программку на Pascal.
Сообщение04.10.2011, 22:47 
Аватара пользователя


25/08/11
25
$$
S=\begin{cases}
\frac{a+b}{e^x+\cos(x)},&\text{если $x<2,8$;}\\
\frac{a+b}{x+1},&\text{если $2,8\leqslant x<6$;}\\
e^x+\sin(x),&\text{если $x\geqslant 6$.}
\end{cases}
$$
код: [ скачать ] [ спрятать ]
Используется синтаксис Pascal
program razvetvl_struct;

uses crt;

const a=2.6;b=-0.39;

var x,s:real;

begin
     clrscr;  
     write('Введите Х=');
     readln(x);
     if x<2.8 then s:=(a+b)/(exp(x)+cos(x));
     if (x>=2.8) and (x<6) then s:=(a+b)/(x+1);
     else s:=exp(x)+sin(x);
     writeln('s=',s:2:1);
     readkey;
end.

К чему можно придраться? Принимается любая критика и поправки. Что можно улучшить и сократить?

 Профиль  
                  
 
 Re: Разветвляющиеся структуры. Посмотрите программку на Pascal.
Сообщение04.10.2011, 22:57 
Заслуженный участник


04/05/09
4587
Вы проверяли результат? Например, при $x=2$.

-- Вт окт 04, 2011 16:00:22 --

А придраться можно к сравнению с 2.8 - эта константа не представима точно, поэтому если ввести 2.8, то вычисление может пойти как по первой, так и по второй ветке. Чтобы этого избежать, надо бы сравнивать с небольшим допуском.

 Профиль  
                  
 
 Re: Разветвляющиеся структуры. Посмотрите программку на Pascal.
Сообщение05.10.2011, 00:12 
Заслуженный участник


09/08/09
3438
С.Петербург
Я бы все-таки сделал это так:
Используется синтаксис Pascal
    if x < 2.8 then
        s := (a + b) / (exp(x) + cos(x));
    else if x < 6 then
        s := (a + b) / (x + 1);
    else
        s := exp(x) + sin(x);

 Профиль  
                  
 
 Re: Разветвляющиеся структуры. Посмотрите программку на Pascal.
Сообщение05.10.2011, 00:46 
Заслуженный участник


04/05/09
4587
Maslov, ну зачем же так сразу. Дайте человеку подумать. :!:

 Профиль  
                  
 
 Re: Разветвляющиеся структуры. Посмотрите программку на Pascal.
Сообщение05.10.2011, 01:04 
Заслуженный участник


09/08/09
3438
С.Петербург

(Оффтоп)

venco в сообщении #489623 писал(а):
Maslov, ну зачем же так сразу. Дайте человеку подумать. :!:
Ну вот, а хотел ведь как лучше...
Вы бы хоть подмигнули, что ли.

 Профиль  
                  
 
 Re: Разветвляющиеся структуры. Посмотрите программку на Pascal.
Сообщение05.10.2011, 01:07 
Заслуженный участник


04/05/09
4587

(Оффтоп)

;-)

 Профиль  
                  
 
 Re: Разветвляющиеся структуры. Посмотрите программку на Pascal.
Сообщение05.10.2011, 04:14 
Аватара пользователя


25/08/11
25
А разве правильно ставить точку с запятой перед ELSE?

 Профиль  
                  
 
 Re: Разветвляющиеся структуры. Посмотрите программку на Pascal.
Сообщение05.10.2011, 04:22 
Заслуженный участник


26/07/09
1559
Алматы
Здесь паскаль не очень популярен... Поэтому кто-то мог и понадобавлять лишних разделителей. :)

-- Ср окт 05, 2011 07:29:25 --

Ах да, чуть не забыл, что лучше ещё добавить if abs(exp(x)+cos(x))<eps then oops(); и т.д. (в прошлый раз предупреждал, между прочим :) )

 Профиль  
                  
 
 Re: Разветвляющиеся структуры. Посмотрите программку на Pascal.
Сообщение05.10.2011, 08:39 
Супермодератор
Аватара пользователя


29/07/05
8248
Москва
Honey bee
тут пока что дело даже не в синтаксисе, Вам намекают, что написанный Вами код алгоритмически ошибочен. Что произойдет, если ввести значение $x=2$?

 Профиль  
                  
 
 Re: Разветвляющиеся структуры. Посмотрите программку на Pascal.
Сообщение05.10.2011, 11:25 
Заслуженный участник


11/05/08
32166
Honey bee в сообщении #489626 писал(а):
А разве правильно ставить точку с запятой перед ELSE?

Неправильно.

 Профиль  
                  
 
 Re: Разветвляющиеся структуры. Посмотрите программку на Pascal.
Сообщение05.10.2011, 14:38 
Заслуженный участник


09/08/09
3438
С.Петербург
Honey bee в сообщении #489626 писал(а):
А разве правильно ставить точку с запятой перед ELSE?
Неправильно. Признаю свою ошибку (лет 15 уже на Паскале ничего не писал).

 Профиль  
                  
 
 Re: Разветвляющиеся структуры. Посмотрите программку на Pascal.
Сообщение05.10.2011, 20:31 
Заслуженный участник


11/05/08
32166

(Оффтоп)

Maslov в сообщении #489743 писал(а):
Признаю свою ошибку

да чего там признавать -- Вас же ТС спровоцировал, эта несчастная "полуколонка" уже у него была

 Профиль  
                  
 
 Re: Разветвляющиеся структуры. Посмотрите программку на Pascal.
Сообщение06.10.2011, 01:07 
Админ форума
Аватара пользователя


19/03/10
8952
 i  Honey bee, пожалуйста, ответьте на (дважды) заданный Вам вопрос:
venco в сообщении #489609 писал(а):
Вы проверяли результат? Например, при $x = 2$.
PAV в сообщении #489654 писал(а):
Что произойдет, если ввести значение $x = 2$?
Считайте это требованием модератора раздела.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 13 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group