Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

Восстановить пароль
Повторная активизация e-mail


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 14.02.2010, 21:18   #1
kykyseno4ek
Пользователь
 
Регистрация: 14.02.2010
Сообщений: 11
Репутация: 10
По умолчанию Решение квадратного уравнения в Паскале


Здравствуйте! Прошу очень, помогите. Задали д/з на решение в Паскале квадратного уравнения. В нете нашла, но без проверки на а.
должна быть проверка на равенство первого коэффициента 0, если он равен нулю, то решить уравнение как линейное; если не равен, считать дискриминант, проверить его значение: если меньше нуля, решений нет, если больше нуля, считаем решения, выводим ответ. Буду очень признательна.
kykyseno4ek вне форума   Ответить с цитированием
Старый 14.02.2010, 21:46   #2
edmynt
Форумчанин
 
Аватар для edmynt
 
Регистрация: 03.06.2009
Адрес: Город герой - Москва
Сообщений: 83
Репутация: 21

icq: 558881133
По умолчанию

Код:
program Untitled;
uses crt;
var
   a,b,c,d:integer;
   x,xx:real;
function lin(b,c:integer):real;
begin
     result:=((-1)*c)/b;
end;
function des(a,b,c:integer):integer;
begin
     result:=(b*b)-(4*a*c);
end;
procedure resh(a,b,c,d:integer;var x,xx:real);
begin
  x:=(((-1)*b)+sqrt(d))/2*a;
  xx:=(((-1)*b)-sqrt(d))/2*a;
end;
begin
  writeln('Enter coeffisents');
  readln (a, b, c);
  if a<>0 then
     begin
       d:=des(a,b,c);
       if d<0 then
          begin
               writeln('No operations');
          end
          else
          begin
               resh(a,b,c,d,x,xx);
               writeln('X1= ',x, ' X2= ',xx);
          end;
     end
     else
     begin
         x:=lin(b,c);
         writeln('X= ',x);
     end;
    readkey;
end.
Вроде так, но на примерах не проверял
edmynt вне форума   Ответить с цитированием
Старый 15.02.2010, 20:05   #3
kykyseno4ek
Пользователь
 
Регистрация: 14.02.2010
Сообщений: 11
Репутация: 10
По умолчанию

Спасибо, но надо что-то попроще, а то не поверят что я написала ее.
Вот нашла в нете, перебрала в Паскале и выводит ошибку
Код:
Program Sq2;
Var A, B, C, D, X, X1, X2 : Real;
Begin
Writeln ('Введите коэффициенты уравнения (A, B, C) ');
If A=0 Then
    If B=0 Then
If C=0 Then Writeln('X - любое число')
Else Writeln('Корней нет! ')
    Else Begin X:=-C/B; Writeln('X=',X:8:3) End
Else
Begin
D:=B*B-4*A*C;
If D<0 Then Writeln ('Корней нет! ')
Else
Begin
X1:=(-B+SQRT(D))/2/A;
X2:=(-B-SQRT(D))/2/A;
Writeln ('X1=', X1:8:3, ' X2=',X2:8:3)
End
End
End.
Почему End не воспринимает?

Последний раз редактировалось Stilet; 16.02.2010 в 10:07.
kykyseno4ek вне форума   Ответить с цитированием
Старый 15.02.2010, 20:19   #4
Базиля
Профессионал
 
Аватар для Базиля
 
Регистрация: 03.12.2009
Адрес: СПб
Сообщений: 1,013
Репутация: 327
По умолчанию

kykyseno4ek
в коде который вы предоставили не хватает ввода данных
Код:
Program Sq2;
Var A, B, C, D, X, X1, X2 : Real;
Begin
Writeln ('Введите коэффициенты уравнения (A, B, C) ');
readln(a,b,c);
If A=0 Then
If B=0 Then
If C=0 Then Writeln('X - любое число')
Else Writeln('Корней нет! ')
Else 
Begin 
X:=-C/B; 
Writeln('X=',X:8:3); 
End
Else
Begin
D:=B*B-4*A*C;
If D<0 Then Writeln ('Корней нет! ')
Else
Begin
X1:=(-B+SQRT(D))/2/A;
X2:=(-B-SQRT(D))/2/A;
Writeln ('X1=', X1:8:3, ' X2=',X2:8:3);
End;
End;
End.
Ведь явно же нужно вводить какие-либо данные чтобы произвести вычисление
P.S. и про запятые не забываем

Последний раз редактировалось Базиля; 15.02.2010 в 20:27.
Базиля вне форума   Ответить с цитированием
Старый 15.02.2010, 21:17   #5
kykyseno4ek
Пользователь
 
Регистрация: 14.02.2010
Сообщений: 11
Репутация: 10
По умолчанию

Базиля, спасибо огромное. Я прогнала
kykyseno4ek вне форума   Ответить с цитированием
Старый 15.02.2010, 21:41   #6
kykyseno4ek
Пользователь
 
Регистрация: 14.02.2010
Сообщений: 11
Репутация: 10
По умолчанию

Может еще кто-нибудь сказать что означает эта строка?
Writeln ('X1=', X1:8:3, ' X2=',X2:8:3);

Заранее благодарна.
kykyseno4ek вне форума   Ответить с цитированием
Старый 15.02.2010, 22:18   #7
Базиля
Профессионал
 
Аватар для Базиля
 
Регистрация: 03.12.2009
Адрес: СПб
Сообщений: 1,013
Репутация: 327
По умолчанию

kykyseno4ek
Код:
Writeln ('X1=', X1:8:3, ' X2=',X2:8:3);
ну в первую очередь запомни то что writeln это оператор вывода данных.
Внутри (т.е. в скобках) можно указать комментарии (выделяется верхними кавычками) Паскаль выводит эти комментарии не взирая на то что ты там написала). Далее после этих кавычек идет запятая которая говорит о том что после вывода твоего комментария стоит вывести значение X1:8:3 где цифра 8 говорит о том что под все число при выводе отведется 8 позиций, и из них 3 под дробую часть.(о Х2 можно сказать тоже самое) В итоге получаем 5 позиций под целую часть и 3 под дробную Например:
12345.678 вот пожалуйста тебе число которое подходит под этот формат вывода.
Если бы у тебя стояло бы
writeln(X1:8); значит что у числа отсутствует дробная часть, под все число отведется 8 позиций. Но этот формат вывода применим только к переменным целочисленного типа.( т.к. у них дробная часть отсутствует )

Последний раз редактировалось Базиля; 15.02.2010 в 22:23.
Базиля вне форума   Ответить с цитированием
Старый 16.02.2010, 21:21   #8
kykyseno4ek
Пользователь
 
Регистрация: 14.02.2010
Сообщений: 11
Репутация: 10
По умолчанию

Спасибо)))Сегодня вроде как рассказала ей по этой программе, а она говорит что надо сделать проверку только на равенство нулю коэффициента А, будем по умолчанию считать, что коэффициенты В и С являются всегда ненулевыми.
Уравнение может иметь вид АХ^2+ВХ+С=D!!! В решении нужно учесть, что правая часть может быть равна D,а не 0. Не могу понять, что неправильного в проге, она ведт работает. Можешь пожалуйста помочь. До меня никак дойти не может что неправильного.
kykyseno4ek вне форума   Ответить с цитированием
Старый 16.02.2010, 21:35   #9
L_M
ФорумчанинФорумчанин
 
Регистрация: 25.02.2008
Сообщений: 289
Репутация: 41

icq: 563981551
По умолчанию

А что нужно сделать, если А=0(вывести сообщение об ошибке или еще что-то)? если уравнение =d, а не 0, то просто разделить на d можно.
__________________
Упс...
L_M вне форума   Ответить с цитированием
Старый 16.02.2010, 21:40   #10
kykyseno4ek
Пользователь
 
Регистрация: 14.02.2010
Сообщений: 11
Репутация: 10
По умолчанию

Если а=0, то уравнение не квадратное и решаем: x=-c/b, выводим х, а если а не равно нулю, то находим дискриминант, сравниваем его с нулем, если меньше нуля-то реш-й нет-конец, а если больше нуля, то ищем корни и выводим х1,х2.-конец.
kykyseno4ek вне форума   Ответить с цитированием
Ответ

Опции темы

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

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

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
корни квадратного уравнения, пример Alexxx92 Помощь студентам 5 19.02.2009 00:37
Вычисления корней квадратного уравнения Наталья111 Общие вопросы Delphi 4 25.12.2008 12:06
решение Квадратного уравнения методом Виета Claster Помощь студентам 3 16.09.2008 20:18
Решение квадратного уравнения Stiv Assembler 2 30.11.2007 16:15
корни квадратного уравнения InseR Общие вопросы Delphi 12 01.06.2007 17:30


15:14.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.