2014 dxdy logo

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

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




 
 Разветвляющиеся структуры. Посмотрите программку на Pascal.
Сообщение04.10.2011, 22:47 
Аватара пользователя
$$
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 
Вы проверяли результат? Например, при $x=2$.

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

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

 
 
 
 Re: Разветвляющиеся структуры. Посмотрите программку на Pascal.
Сообщение05.10.2011, 00:12 
Я бы все-таки сделал это так:
Используется синтаксис 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 
Maslov, ну зачем же так сразу. Дайте человеку подумать. :!:

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

(Оффтоп)

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

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

(Оффтоп)

;-)

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

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

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

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

 
 
 
 Re: Разветвляющиеся структуры. Посмотрите программку на Pascal.
Сообщение05.10.2011, 08:39 
Аватара пользователя
Honey bee
тут пока что дело даже не в синтаксисе, Вам намекают, что написанный Вами код алгоритмически ошибочен. Что произойдет, если ввести значение $x=2$?

 
 
 
 Re: Разветвляющиеся структуры. Посмотрите программку на Pascal.
Сообщение05.10.2011, 11:25 
Honey bee в сообщении #489626 писал(а):
А разве правильно ставить точку с запятой перед ELSE?

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

 
 
 
 Re: Разветвляющиеся структуры. Посмотрите программку на Pascal.
Сообщение05.10.2011, 14:38 
Honey bee в сообщении #489626 писал(а):
А разве правильно ставить точку с запятой перед ELSE?
Неправильно. Признаю свою ошибку (лет 15 уже на Паскале ничего не писал).

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

(Оффтоп)

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

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

 
 
 
 Re: Разветвляющиеся структуры. Посмотрите программку на Pascal.
Сообщение06.10.2011, 01:07 
Аватара пользователя
 i  Honey bee, пожалуйста, ответьте на (дважды) заданный Вам вопрос:
venco в сообщении #489609 писал(а):
Вы проверяли результат? Например, при $x = 2$.
PAV в сообщении #489654 писал(а):
Что произойдет, если ввести значение $x = 2$?
Считайте это требованием модератора раздела.

 
 
 [ Сообщений: 13 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group