Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.09.2010, 18:42   #1
Nitoo
Новичок
Джуниор
 
Регистрация: 28.09.2010
Сообщений: 1
По умолчанию Изменить приведенную программу, используя оператор варианта CASE(Pascal)

квадратное уравнение
А*х*x + В*х + С = 0
задача допускает 6 вариантов решения в зависимости от численного значения коэф-фициентов:
1.А = В = С = 0 - решений бесконечно много, х - любое число;
2.А = В = О, С не равно 0 - решений не существует;
3.А = 0; В не равно 0 - единственное решение х = - С/В;
4.А не равно 0; В2 - 4АС = 0 - кратные корни х1 = х2 = - В/2А;
5.А не равно 0; В2 - 4АС > 0 - два вещественных корня;
6.А не равно 0; B2 - 4АС<0 - два комплексно-сопряженных корня.


Задание: Изменить приведенную программу, используя оператор варианта CASE

Код:
Program cwadr (input, output);
label 20;
var a, b, c, d, e, d1, x, x1, x2 : real;
begin
writeln ('введите a, b, c'); readln ('a, b, c');
if a=0 then begin
if b=0 then begin
if c=0 then begin
writeln ('x-любое число');
goto 20; end;
writeln ('решений нет');
goto 20; end;
writeln ('корень один x= ', x);
goto 20; end;
d:= b*b-4*a*c; e:= 2*a;
if d=0 then begin
writeln ('корни кратные х1 = х2 = ', -b/e);
goto 20; end;
d1:= sqrt (abs (d));
if d<0 then begin
writeln ('корни комплексно-сопряженные');
writeln ('x1 = ', -b/e, ' -i* ', d1/e);
writeln ('x2 = ', -b/e, ' +i* ', d1/e);
goto 20; end;
writeln ('корни действительные');
writeln ('x2 = ', ( - b+d1)/e );
writeln ('x1 = ', ( - b+d1)/e );
20; 
end.

Последний раз редактировалось Stilet; 29.09.2010 в 11:56.
Nitoo вне форума Ответить с цитированием
Старый 29.09.2010, 11:25   #2
krGorka
Пользователь
 
Регистрация: 26.04.2010
Сообщений: 35
По умолчанию

Наверное , приблизительно так:
Код:
Program cwadr (input, output);
var  a,b,c:real;
      x1,x2,d,e : real;
      i:integer;
 begin
  writeln ('введите a, b, c'); readln ('a, b, c');

  if ((a=0) and (b=0) and(c=0)) then i:=1;
  if ((a=0) and (b=0) and(c<>0)) then i:=2;
  if ((a=0) and (b<>0) ) then i:=3;
  if (a<>0) then
   begin
    d:=b*b-4*a*c;
    e:=2*a;
    if  (d= 0 ) then i:=4;
    if  (d> 0 ) then i:=5;
    if (d < 0 ) then i:=6;
   end;

  case i of
  1: writeln ('x-любое число');
  2: writeln ('решений нет');
  3: begin 
       x1:=-c/b;
       writeln ('корень один x= ', x1);
      end;
  4: begin
      x1:= -b/e;
      writeln ('корни кратные х1 = х2 = ', x1);
     end;
  5: begin
      d:=sqrt(d);
      x2:=(-b-d)/e;
      x1:=(-b+d)/e;
     writeln ('корни действительные x1 = ',x1, '  x2 = ',x2);
     end;
  6: begin
       writeln ('корни комплексно-сопряженные');
      writeln ('x1 = ', -b/e, ' -i* ', d/e);
      writeln ('x2 = ', -b/e, ' +i* ', d/e);
     end;
  end;
end.
Метки уже давно не в моде.

Последний раз редактировалось Stilet; 29.09.2010 в 11:56.
krGorka вне форума Ответить с цитированием
Старый 29.09.2010, 15:16   #3
savva
Форумчанин
 
Регистрация: 10.06.2010
Сообщений: 225
По умолчанию

как я понял

Код:
if ((a=0) and (b=0) and(c=0)) then i:=1;
  if ((a=0) and (b=0) and(c<>0)) then i:=2;
  if ((a=0) and (b<>0) ) then i:=3;
  if (a<>0) then
   begin
    d:=b*b-4*a*c;
    e:=2*a;
    if  (d= 0 ) then i:=4;
    if  (d> 0 ) then i:=5;
    if (d < 0 ) then i:=6;
   end;
этого не должно быть, и любое упоминание if карается неудом
За помощь: Нажмите на весы слева от сообщения!
savva вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перечислимые типами и оператор варианта! flintovich Помощь студентам 0 29.05.2010 19:39
Турбо Паскаль. Оператор варианта lilia2121 Помощь студентам 2 28.04.2010 17:22
Pascal. решить задачу используя цикл for и оператор безусловного перехода goto Knubbe Помощь студентам 8 18.12.2009 03:08
используя оператор цикла и графики , составте программу для рисования на экране рисунка maksu6ka2009 Паскаль, Turbo Pascal, PascalABC.NET 3 25.04.2009 13:08
оператор варианта Кирилл17 Помощь студентам 2 21.12.2008 22:55