• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о проекте, чтобы узнать больше. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Программирование разветвляющихся алгоритмов

Sandra 2000

Новые
Регистрация
4 Окт 2012
Сообщения
49
Реакции
0
Баллы
0
Программирование разветвляющихся алгоритмов

Нужно составить программу вычисления функции(смотрите вложение) и проверить на контрольном примере(можете помочь составить программу и подобрать числа которые нужно подставлять).tehno035
 

Вложения

  • Безымяггнный.webp
    Безымяггнный.webp
    7 KB · Просмотры: 188
можете помочь составить программу
С удовольствием. Но именно "помочь" а не "написать за меня, чтобы я могла бездумно скатать и сдать". Сандра, поймите - сейчас задания начнут усложняться, и что? Вы вознамерились до конца обучения "выезжать" на форумах, т.е. каждый раз, получая задание, тупо вываливать его сюда и в аналогичные места? Не пойдет. Чужим умом не проживешь. Потому искренне советую - пока не поздно и задания идут детские, беритесь за ум. Потом не догоните.
Так что попробуйте написать хоть что-нибудь самостоятельно, а мы посмотрим, подскажем, исправим. Учитесь - это нужно Вам, а не нам.
подобрать числа которые нужно подставлять
А вот в этом попробую помочь, ибо действительно непросто.
Начнем со второго уравнения. Там под корнем стоит 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.
 
Вы правы

Я конечно согласна с вами,но не думайте что я тупая и все "скатываю".В конечном счете я не собираюсь оправдываться!
И знаете я не сижу без дела и не жду готовенького.Я задала этот вопрос лишь потому что у меня не работает правильно программа либо я подставляю не те величины.Если я вас не утруждаю, можете указать мои ошибки?
программа представлена внизу.
 

Вложения

  • олооооо.webp
    олооооо.webp
    24 KB · Просмотры: 145
Сандра, не злитесь. Я всегда предпочитаю именно помогать, а не писать программы под аккомпанемент "Я не шарю". Но... если не трудно - дайте в текстовом режиме, а то перенабивать с рисунка как-то скучно. Я, конечно, попробую дома FineReader'ом переконвертировать, но не знаю, что из этого выйдет...
 
Хорошо

Вот в текстовом
Код:
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.
 
Спасибо, но зачем так сложно, через файл? Исправил.
Да, ошибок очень много. Но ничего, "добьем".
 
Вот... нарисовал. Громоздко, правда, несколько получилось. Но попробуйте так:
Код:
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.
Извините за английские надписи - с кириллицей мне большая морока возиться.
 
К сожалению

Здесь нужно программу попроще т.е. нельзя использовать операторы с циклом,только с помощью операторов выбора(IF).
 
Здесь нужно программу попроще т.е. нельзя использовать операторы с циклом,только с помощью операторов выбора(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.
 
Спасибо большущее!tehno042
 
еще вопрос что такое Halt?
 
Назад
Сверху