11.05.2016, 20:50 | #11 (permalink) |
Member
Регистрация: 11.05.2016
Сообщений: 23
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
|
11.05.2016, 20:50 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
По этим ссылкам содержится нужная вам информация Проверка Паскаль. Проверка системы уравнений на совместимость |
11.05.2016, 21:07 | #13 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Ага, ну вот это уже дело другое.
Что же, разберем Вашу программу. 1. Величины e и x лучше задать в виде констант. По крайней мере, е. 2. Если Вы в программе задаёте в явном виде х=0.4, то зачем же вы ставите экранное чтение? Абсолютно ни к чему. 3. Вводить отдельный идентификатор для х² не нужно. Можно написать х*х или Sqr(x) - как больше нравится. 4. Формула для вычисления знаменателей членов последовательности неверна. С учетом всего вышесказанного, рабочий вариант программы можно организовать, например, так: Код:
const e=0.001; x=0.4; var n,A:real; begin A:=x; N:=1; writeln('(a)= ', A:0:5); While (A>e) do begin N:=N+2; A:=A*x*x/(N*(N-1)); writeln('(a)= ', A:0:5); end; Readln end. |
11.05.2016, 21:34 | #15 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Теперь по второй программе.
В принципе как таковых ошибок там нет, есть лишь... как бы это сказать... неряшливости и нелепости. 1. Функция Max2 несколько усложнена, можно проще. 2. Расставляя скобки, не следует руководствоваться принципом "чем больше, тем лучше" - просто сами запутаетесь. Ставьте их там, где они необходимы, и лишь иногда - для повышения читабельности текста программы. 3. Выражение Ln(exp(Q)) - бессмысленно, ибо это всегда просто тождественное Q. 4. Поскольку у Вас в программе фигурирует Ln(xy), то хорошим стилем будет поставить защиту от отрицательных и нулевых значений ху при вводе. Напомню, что логарифм бывает ТОЛЬКО от строго положительных величин. 5. Тут не Ваша вина, а скорее некорректность формулировки задания: "выпали" значения ху=2 и ху=3 (точно). Поэтому среднее неравенство я сделал нестрогим. Итого: Код:
var x,a,y,c,d:Real; function max2(x1,x2:Real):Real; begin if x1>x2 then max2:=x1 else max2:=x2; end; function min3(x1,x2,x3:Real):Real; var min:Real; begin min:=x1; if min<x2 then min:=x2; if min<x3 then min:=x3; min3:=min; end; begin Writeln ('vvod x,y,c,d'); Readln (x,y,c,d); if(x*y>3) then a:=x*x*x+(c*d)*ln(x*y)/ln(10) else if (x*y>=2) and (x*y<=3) then a:=min3(x,y,max2(c*x,d*y))*3 else a:=exp((c*d)*ln(2))-x; Writeln ('a= ', a:0:5); Readln; end. |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
11.05.2016, 22:12 | #18 (permalink) | |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Цитата:
А ответ - правильный: x^5/5!=0.00008533333. После округления оно и получается. И в Вашей программе оно выводится. Или Вы о том, что оно "лишнее"? Можно и убрать. Например, так Код:
const e=0.001; x=0.4; var n,A:real; begin A:=x; N:=1; writeln('(a)= ', A:0:5); While (A>e) do begin N:=N+2; A:=A*x*x/(N*(N-1)); if A>e then writeln('(a)= ', A:0:5); end; Readln end. |
|
11.05.2016, 22:30 | #20 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|