Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Как правильно написать программу для решения квадратного уравнения на Pascal  (Прочитано 26933 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Walter Milberght

  • Автор темы
  • Участник
  • *
  • Сообщений: 196
    • Просмотр профиля
Сабж.
(Нажмите, чтобы показать/скрыть)



Вопрос: что тут дописать, чтобы оно правильно проверяло по всем параметрам, а также не писало после "Корней нет" еще два какие-то корня, фиг знает откуда взятые.
Все для нации, ничего против нации, нация превыше всего!

narsilandruil

  • Гость
Не точно написана программа. Я на память не помню, но там по-другому быть должно. Советую погуглить.

Вроде там должно быть (дискриминант>0(2корня),=0(1корень),<0-действительных корней нет.
Если дискриминант =0 , то формула другая. ((-b)/2*a)
« Последнее редактирование: 18 Сентября 2012, 18:31:54 от |/|аrsil/-|ndruil »

Оффлайн Walter Milberght

  • Автор темы
  • Участник
  • *
  • Сообщений: 196
    • Просмотр профиля
Да сам знаю, что не точно. Гугл же не хочет выдавать ничего приличного: дает либо с точностью проверок и т.п. похуже, чем у меня, или вообще без таковых.
Все для нации, ничего против нации, нация превыше всего!

narsilandruil

  • Гость
Щас напишу.

Program X
var a,b,c,x,x1,x2,D: real;
begin
writeln (`vvedite a,b,c`);
readln (a,b,c);
D:=sqr b-4*a*c;            ---(или b*b-4*a*c не помню).
if d<0 then writeln (`net korney`);
if d=0 then
begin
x:= -b/(2*a)
writeln (`x=`);
end
if d>0 then
begin
x1:= (-b-sqrt(D))/2*a
x2:= (-b+sqrt(D))/2*a
writeln (`x1=`, `x2=`)
end;
readln;
end.
« Последнее редактирование: 18 Сентября 2012, 18:45:50 от |/|аrsil/-|ndruil »

Оффлайн Walter Milberght

  • Автор темы
  • Участник
  • *
  • Сообщений: 196
    • Просмотр профиля
Ок, жду.

Пользователь решил продолжить мысль 18 Сентября 2012, 18:45:04:
Спасибо.
« Последнее редактирование: 18 Сентября 2012, 18:45:04 от Walter Milberght »
Все для нации, ничего против нации, нация превыше всего!

narsilandruil

  • Гость
Компилятор должен выдать, если ошибки с ";" есть и где они (а они есть). Я не помню уже где точно.
« Последнее редактирование: 18 Сентября 2012, 18:50:03 от |/|аrsil/-|ndruil »

Оффлайн Walter Milberght

  • Автор темы
  • Участник
  • *
  • Сообщений: 196
    • Просмотр профиля
Кстати, не подскажешь какой-нибудь компилятор для Бубны полегче (до 20 метров), а то каждый раз в винду за турбопаскалем лезть - не айс, на инет быстрый все никак руки не дойдут подключить...
Все для нации, ничего против нации, нация превыше всего!

narsilandruil

  • Гость
Нет, к сожалению, не подскажу, я не программист.

Lifewalker

  • Гость
FreePascal отменили? Компилятор там ЕМНИП небольшой.

Оффлайн Walter Milberght

  • Автор темы
  • Участник
  • *
  • Сообщений: 196
    • Просмотр профиля
На зависимости брешет, а какие - не говорит. (через gdebi). А терминал его вообще в упор не видит.
Все для нации, ничего против нации, нация превыше всего!

Оффлайн egorchick3000

  • Новичок
  • *
  • Сообщений: 2
    • Просмотр профиля
вот моя прога


program pr1;
var a,b,c,d:integer;e,r,t:real;
begin
read(a,b,c);if c<>1 then
if c>0 then
writeln(a,'(x(квадрат)+',b,'x +',c,'=0')
else writeln(a,'x(квадрат)+',b,'x',c,' = 0');
if c=1 then writeln(a,'(x(квадрат)+','x +',c,'=0')
else writeln(a,'x(квадрат)+','x',c,' = 0');
d:=sqr(b)-4*a*c;
if b>0 then
b:=b-(2*b);
writeln(b);
if d>0 then
e:=(b+sqrt(d))/(2*a);
if d>0 then
writeln('x2 = ',e);
if d>0 then
r:=(b-sqrt(d))/(2*a);
if d>0 then
writeln('x1 = ',r);
if d<0 then writeln('нет корней');
if d=0 then
t:=(b+0)/(2*a);
if d=0 then
writeln('x1 = ',t);
end.

вроде так


проверял ваши проги нифига не выходит .протестируйте а=5 в=1 с=-4 должно получиться -1 и 0.8 тоесть х1=-1 x2=4/5
« Последнее редактирование: 19 Февраля 2014, 12:09:28 от egorchick3000 »

Оффлайн Señor_Gaga

  • Забанен
  • Активист
  • *
  • Сообщений: 878
  • Ubuntu 12.04LTS & Linux Mint 13LTS "Maya"
    • Просмотр профиля

 

Страница сгенерирована за 0.057 секунд. Запросов: 26.