Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 08.10.2012, 09:16   #1 (permalink)
Sandra 2000
Member
 
Аватар для Sandra 2000
 
Регистрация: 04.10.2012
Сообщений: 49
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Программирование разветвляющихся алгоритмов

Нужно составить программу вычисления функции(смотрите вложение) и проверить на контрольном примере(можете помочь составить программу и подобрать числа которые нужно подставлять).
Миниатюры
aacuiyaaiiue.png  
Sandra 2000 вне форума   Ответить с цитированием

Старый 08.10.2012, 09:16
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Участники нашего форума уже создавали что то подобное, ознакомьтесь с этими темами

Web программирование
Программирование МС
Turbo Pascal. Программирование алгоритмов циклической структуры

Старый 08.10.2012, 12:22   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Sandra 2000 Посмотреть сообщение
можете помочь составить программу
С удовольствием. Но именно "помочь" а не "написать за меня, чтобы я могла бездумно скатать и сдать". Сандра, поймите - сейчас задания начнут усложняться, и что? Вы вознамерились до конца обучения "выезжать" на форумах, т.е. каждый раз, получая задание, тупо вываливать его сюда и в аналогичные места? Не пойдет. Чужим умом не проживешь. Потому искренне советую - пока не поздно и задания идут детские, беритесь за ум. Потом не догоните.
Так что попробуйте написать хоть что-нибудь самостоятельно, а мы посмотрим, подскажем, исправим. Учитесь - это нужно Вам, а не нам.
Цитата:
Сообщение от Sandra 2000 Посмотреть сообщение
подобрать числа которые нужно подставлять
А вот в этом попробую помочь, ибо действительно непросто.
Начнем со второго уравнения. Там под корнем стоит 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.
Vladimir_S вне форума   Ответить с цитированием
Старый 08.10.2012, 16:52   #3 (permalink)
Sandra 2000
Member
 
Аватар для Sandra 2000
 
Регистрация: 04.10.2012
Сообщений: 49
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Вы правы

Я конечно согласна с вами,но не думайте что я тупая и все "скатываю".В конечном счете я не собираюсь оправдываться!
И знаете я не сижу без дела и не жду готовенького.Я задала этот вопрос лишь потому что у меня не работает правильно программа либо я подставляю не те величины.Если я вас не утруждаю, можете указать мои ошибки?
программа представлена внизу.
Миниатюры
ieiiiii.png  
Sandra 2000 вне форума   Ответить с цитированием
Старый 08.10.2012, 17:38   #4 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Сандра, не злитесь. Я всегда предпочитаю именно помогать, а не писать программы под аккомпанемент "Я не шарю". Но... если не трудно - дайте в текстовом режиме, а то перенабивать с рисунка как-то скучно. Я, конечно, попробую дома FineReader'ом переконвертировать, но не знаю, что из этого выйдет...
Vladimir_S вне форума   Ответить с цитированием
Старый 08.10.2012, 18:59   #5 (permalink)
Sandra 2000
Member
 
Аватар для Sandra 2000
 
Регистрация: 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.
Sandra 2000 вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 08.10.2012, 20:06   #6 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Спасибо, но зачем так сложно, через файл? Исправил.
Да, ошибок очень много. Но ничего, "добьем".
Vladimir_S вне форума   Ответить с цитированием
Старый 08.10.2012, 22:02   #7 (permalink)
Vladimir_S
Специалист
 
Регистрация: 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.
Извините за английские надписи - с кириллицей мне большая морока возиться.
Vladimir_S вне форума   Ответить с цитированием
Старый 09.10.2012, 18:18   #8 (permalink)
Sandra 2000
Member
 
Аватар для Sandra 2000
 
Регистрация: 04.10.2012
Сообщений: 49
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию К сожалению

Здесь нужно программу попроще т.е. нельзя использовать операторы с циклом,только с помощью операторов выбора(IF).
Sandra 2000 вне форума   Ответить с цитированием
Старый 09.10.2012, 20:50   #9 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Sandra 2000 Посмотреть сообщение
Здесь нужно программу попроще т.е. нельзя использовать операторы с циклом,только с помощью операторов выбора(IF).
Да можно и попроще...
Код:
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.
Vladimir_S вне форума   Ответить с цитированием
Старый 09.10.2012, 20:52   #10 (permalink)
Sandra 2000
Member
 
Аватар для Sandra 2000
 
Регистрация: 04.10.2012
Сообщений: 49
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Спасибо большущее!
Sandra 2000 вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 09:31.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.