|
Главная | Правила | Регистрация | Дневники | Справка | Пользователи | Календарь | Поиск | Сообщения за день | Все разделы прочитаны |
|
Опции темы | Опции просмотра |
08.10.2012, 09:16 | #1 (permalink) |
Member
Регистрация: 04.10.2012
Сообщений: 49
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Программирование разветвляющихся алгоритмов
|
08.10.2012, 09:16 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Участники нашего форума уже создавали что то подобное, ознакомьтесь с этими темами Web программирование Программирование МС Turbo Pascal. Программирование алгоритмов циклической структуры |
08.10.2012, 12:22 | #2 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
С удовольствием. Но именно "помочь" а не "написать за меня, чтобы я могла бездумно скатать и сдать". Сандра, поймите - сейчас задания начнут усложняться, и что? Вы вознамерились до конца обучения "выезжать" на форумах, т.е. каждый раз, получая задание, тупо вываливать его сюда и в аналогичные места? Не пойдет. Чужим умом не проживешь. Потому искренне советую - пока не поздно и задания идут детские, беритесь за ум. Потом не догоните.
Так что попробуйте написать хоть что-нибудь самостоятельно, а мы посмотрим, подскажем, исправим. Учитесь - это нужно Вам, а не нам.А вот в этом попробую помочь, ибо действительно непросто. Начнем со второго уравнения. Там под корнем стоит Sin(ab), и это означает, что должно выполняться условие 1. Sin(ab) ≥ 0. Далее, обратимся к третьему уравнению. Там предполагается возведение х в степень (2+b). Поскольку b может быть любым, в том числе дробным, корректное осуществление этой операции требует выполнения условия 2. x > 0 (обратите внимание: неравенство строгое!). Наконец, в уравнениях 1 и 3 показатели степени не должны быть слишком большими, иначе произойдет ошибка переполнения разрядной сетки. Исходя из всего вышеперечисленного, я бы предложил такие диапазоны: Во всех случаях -12 ≤ b ≤ 8 - этим мы ограничим показатель степени в третьем уравнении до ±10. 0 ≤ a ≤ π, тогда 0 < b ≤ min(π/a, 8) (при a = 0 b - любое в диапазоне -12 ≤ b ≤ 8 ) или 0 > a ≥ -π, тогда 0 > b ≥ max(π/a, -12) x > 0. |
08.10.2012, 16:52 | #3 (permalink) |
Member
Регистрация: 04.10.2012
Сообщений: 49
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Вы правы
Я конечно согласна с вами,но не думайте что я тупая и все "скатываю".В конечном счете я не собираюсь оправдываться!
И знаете я не сижу без дела и не жду готовенького.Я задала этот вопрос лишь потому что у меня не работает правильно программа либо я подставляю не те величины.Если я вас не утруждаю, можете указать мои ошибки? программа представлена внизу. |
08.10.2012, 17:38 | #4 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Сандра, не злитесь. Я всегда предпочитаю именно помогать, а не писать программы под аккомпанемент "Я не шарю". Но... если не трудно - дайте в текстовом режиме, а то перенабивать с рисунка как-то скучно. Я, конечно, попробую дома FineReader'ом переконвертировать, но не знаю, что из этого выйдет...
|
08.10.2012, 18:59 | #5 (permalink) |
Member
Регистрация: 04.10.2012
Сообщений: 49
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Хорошо
Вот в текстовом
Код:
Program pr1; Var a,b,x,z:real; Begin Write('введите х'); ReadLn(x); Write('введите а'); ReadLn(a); Write('введите b'); ReadLn(b); If x<a then Begin z:=exp(a*x)+sqr(cos(a+x)); WriteLn('z=',z:6:3); end; if (sin(a*b)>0) and (sin(a*b)<1) then writeln('нет корней') else begin If x=a then z:=sqrt(sin(a*b)); writeln('z=',z:6:3); end; If x>a then If (a+x)=0 then WriteLn('нет корней') else z:=(3*exp((2+b)*ln(x)))+((x+b)/(a+x)); end. |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
08.10.2012, 22:02 | #7 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Вот... нарисовал. Громоздко, правда, несколько получилось. Но попробуйте так:
Код:
Program pr1; Var a,b,x,b1:real; Function Z(y:real):real; begin If x<a then Z:=exp(a*x)+sqr(cos(a+x)) else If x=a then Z:=sqrt(sin(a*b)) else Z:=(3*exp((2+b)*ln(x)))+((x+b)/(a+x)); end; Function Max(m1,m2:real):real; begin If m1>m2 then Max:=m1 else Max:=m2; end; Function Min(m1,m2:real):real; begin If m1<m2 then Min:=m1 else Min:=m2; end; Begin Repeat repeat Write('Enter a ((a>=0 and a<=Pi) or (a<0 and a>-Pi); a=100 to quit): '); ReadLn(a); until ((a>=0) and (a<=Pi)) or ((a<0) and (a>-Pi)) or (a=100); If a<>100 then begin If a=0 then repeat Write('Enter b (b>=-12 and b<=8): '); Readln(b); until ((b>=-12) and (b<=8)) else If a>0 then begin b1:=Min(Pi/a,8.0); repeat Write('Enter b (b>0 and b<=',b1:0:3,'): '); Readln(b); until ((b>=0) and (b<=b1)); end else begin b1:=Max(Pi/a,-12.0); repeat Write('Enter b (b<0 and b>=',b1:0:3,'): '); Readln(b); until ((b<0) and (b>=b1)); end; Writeln('a= ',a:0:5); Writeln('b= ',b:0:5); Repeat Write('Next x (x>0; x<=0 to quit): '); Readln(x); If x=-a then Writeln('Thes value is forbidden! Try other.'); If (x>0) and (x<>-a) then Writeln('Z= ',Z(x):0:5); Until x<=0; end; Until a=100; End. |
09.10.2012, 20:50 | #9 (permalink) | |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Цитата:
Код:
Program pr1; Var a,b,x:real; Function Z(a1,b1,x1:real):real; begin If x1<a1 then Z:=exp(a1*x1)+sqr(cos(a1+x1)) else If x1=a1 then Z:=sqrt(sin(a1*b1)) else Z:=3*exp((2+b1)*ln(x1))+(x1+b1)/(a1+x1); end; Begin Write('a= '); ReadLn(a); Write('b= '); ReadLn(b); Write('x= '); ReadLn(x); If ((x<a) and ((a*x>10) or (a*x<-10))) or ((x=a) and (Sin(a*b)<0)) or ((x>a) and ((2+b>10) or (2+b<-10) or (a+x=0))) then begin Writeln('Parameters out of range!'); Readln; Halt; end else Writeln('Z= ',Z(a,b,x):0:5); Readln End. |
|
09.10.2012, 20:52 | #10 (permalink) |
Member
Регистрация: 04.10.2012
Сообщений: 49
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Спасибо большущее!
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
Опции темы | |
Опции просмотра | |
|
|