Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/18: Рейтинг темы: голосов - 18, средняя оценка - 4.50
 Аватар для Сергей Меркурьев
2 / 2 / 3
Регистрация: 30.04.2009
Сообщений: 98

Квадратное уравнение

03.05.2009, 16:09. Показов 4033. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
ax^2 + bx + c = 0
при заданных коэффициентах a, b и c.

На первой строке выведите число корней заданного уравнения. Затем вывести сами корни по одному на строке с ошибкой, не превосходящей 10^-4. Если для заданных коэффициентов корней бесконечно много, на единственной строке выходного файла выведите -1.

Pascal
1
2
3
4
5
6
7
8
Пример:           
a=1                     a=0
b=-3                    b=-1
c=2                      c=6  
Ответ                  Ответ
2                         1
1.000000              6.000000
2.000000

Вот так я решил данную задачу:

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
var a,b,c,d,x:real;
begin
  readln(a,b,c);
  d:=sqr(b)-4*a*c;
  If (a=0) then If b<0 then Begin
                              Writeln ('1');
                              x:=c/(-b); Write (x:8:6);
                            end
                       else Begin
                              x:=c/b; Writeln ('1');
                              Write (x:8:2);
                            end
           else
  If (a=0) and (b=0) and (c=0) then write (-1)
    else If (a=0) and (b=0) then write (0)
      else If d<0 then writeln(0)
         else if d=0 then Begin
                             Writeln ('1');
                             x:=(-b)/2*a;
                             writeln(x);
                          end
                     else begin
                            Writeln ('2');
                            x:=(-b-sqrt(d))/2*a;
                            writeln(x:8:6);
                            x:=(-b+sqrt(d))/2*a;
                            write(x:8:6);
                          end;
 
end.

Подскажите в чём у меня здесь ошбка!!!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.05.2009, 16:09
Ответы с готовыми решениями:

Квадратное уравнение
a*x*x*x+b*x*x+c*x+d=0 знайти цілі розвязки рівняння.

Квадратное уравнение
1.1 Дано три действительных числа A, B и C (A &lt;&gt; 0). Определить, имеет уравнения A * X2 + B * X + C = 0 действительные корни. В противном...

Квадратное уравнение
Определить имеет ли действительные корни уравнение ax 2+ bx + c = 0 . Если имеет, то значение a возвести в квадрат.

16
Посланник моего господина
111 / 106 / 52
Регистрация: 02.05.2009
Сообщений: 181
03.05.2009, 16:22
Анализ задачи:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
a==0
  b==0
    c==0
      • -1
    c!=0
      • 0
  b!=0
    • 1 root: (-c/b)
a!=0
  d==0
    • 1 root: -b/2a
  d!=0
    • 2 roots: (-b+sqrt(d))/2a; (-b-sqrt(d))/2a
Других вариантов нет.
В твоем коде неправильно построена иерархическая ветвь.
0
 Аватар для Сергей Меркурьев
2 / 2 / 3
Регистрация: 30.04.2009
Сообщений: 98
03.05.2009, 16:30  [ТС]
a!=0
d==0
• 1 root: -b/2a

Почему так? Ведь в таком случае корень будет равен всегда 0!
0
Посланник моего господина
111 / 106 / 52
Регистрация: 02.05.2009
Сообщений: 181
03.05.2009, 16:34
Code
1
2
3
a!=0
d==01 root: -b/2a
В моих условных обозначениях это означает «при a не равное 0 и d равное 0 решение1 и это -b/2a»


x^2-2x+1=0
d=0
x=1
0
 Аватар для Сергей Меркурьев
2 / 2 / 3
Регистрация: 30.04.2009
Сообщений: 98
03.05.2009, 17:38  [ТС]
Вот переделал я задачу как Вы мне посоветовали:

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
var a,b,c,d,x:real;
begin
  readln(a,b,c);
  d:=sqr(b)-4*a*c;
  If (a=0) and (b=0) and (c=0) then write (-1)
    else If c=0 then write (-1)
      else If b=0 then Write ('0')
        else If (a=0) and (d=0) then Begin
                                       Writeln ('1');
                                       x:=-c/b; Write (x:8:6);
                                    end
          else If d=0 then Begin
                             Writeln ('1');
                             x:=(-b)/2*a;
                             writeln(x);
                          end
                     else begin
                            Writeln ('2');
                            x:=(-b-sqrt(d))/2*a;
                            writeln(x:8:6);
                            x:=(-b+sqrt(d))/2*a;
                            write(x:8:6);
                          end;
 
end.
Добавлено через 30 секунд
Но она всё равно не проходит((

Добавлено через 1 минуту 28 секунд
Messenger of G., в вашем примере a=1 !!! А Вы мне написали что он равен 0

Добавлено через 1 час 1 минуту 24 секунды
Айййй, помогите мне найти ошибку в моей программе((
0
Посланник моего господина
111 / 106 / 52
Регистрация: 02.05.2009
Сообщений: 181
03.05.2009, 19:20
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
var a,b,c,d,x:real;
begin
readln(a,b,c);
d:=sqr(b)-4*a*c;
if (a=0) then
   if (b=0) then
      if (c=0)
         then write ('0')
         else write ('-1')
   else {if b<>0}
       begin
            Writeln ('1');
            x:=-c/b; Write (x:8:6);
       end
else {if a<>0}
    if d=0
       then begin
                 Writeln ('1');
                 x:=(-b)/(2*a);
                 writeln(x);
       end
       else begin
                 Writeln ('2');
                 x:=(-b-sqrt(d))/(2*a);
                 writeln(x:8:6);
                 x:=(-b+sqrt(d))/(2*a);
                 write(x:8:6);
       end;
end.
0
 Аватар для Сергей Меркурьев
2 / 2 / 3
Регистрация: 30.04.2009
Сообщений: 98
03.05.2009, 19:24  [ТС]
Хммм, интересно. Но программа к сожалению ещё не совершенна. Тут есть какая-то загвостка!!! Вот только в чём она заключается?
0
 Аватар для Сергей Меркурьев
2 / 2 / 3
Регистрация: 30.04.2009
Сообщений: 98
04.05.2009, 21:05  [ТС]
А есть ли ещё какие либо закономерности?
0
2838 / 1647 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
04.05.2009, 22:58
Вообще неплохо бы перебрать разные варианты и смотреть, где ошибка, перед тем, как спрашивать.
Code
1
2
3
4
5
6
....
    if (c=0) then
      write ('-1')
    else
      write ('0');
    // а не наоборот
И что-то мне ещё кажется :-) что паскаль не работает с комплексными числами.
2
 Аватар для Сергей Меркурьев
2 / 2 / 3
Регистрация: 30.04.2009
Сообщений: 98
05.05.2009, 12:37  [ТС]
Спасибо конечно, но что-то есть ещё)) А давайте я Вам полное условие дам:

Квадратное уравнение


Сложно найти человека, который любит решать однообразные задачки по математике. В последнее время школьникам стало легче, ведь с появлением компьютеров почти в каждой квартире стало существенно проще проверять себя.

Но программы, в которых решение уравнений является стандартной функцией, установлены не везде. Напишите программу, которая сможет решить уравнение

ax^2 + bx + c = 0
при заданных коэффициентах a, b и c.

Входные данные
Единственная строка входного файла INPUT.TXT содержит три целых числа a, b и c, каждое из которых не превосходит по модулю 30000. Числа разделяются пробелами.

Выходные данные
На первой строке выходного файла OUTPUT.TXT выведите число корней заданного уравнения. Затем выведите сами корни по одному на строке с ошибкой, не превосходящей 10^-4. Если для заданных коэффициентов корней бесконечно много, на единственной строке выходного файла выведите -1.
0
Почетный модератор
 Аватар для Puporev
64319 / 47615 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
05.05.2009, 15:12
Что-то из пустяковой задачи раздули целый мануал. А всего-то нужно
1. a<>0 исследуем уравнение 2й степени - 3 варианта
- d>0
- d<0
- d=0;
2. а=0 исследуем линейное уравнение 4 варианта
- b=0 c<> 0
- b=0 c=0
- b<>0 c=0
- b<>0 c<>0
1
Посланник моего господина
111 / 106 / 52
Регистрация: 02.05.2009
Сообщений: 181
05.05.2009, 15:41
Верно, и это как раз и не удается сделать.
(Позор...)
0
 Аватар для Сергей Меркурьев
2 / 2 / 3
Регистрация: 30.04.2009
Сообщений: 98
05.05.2009, 20:08  [ТС]
Ну вот сделал всё как ВЫ и посоветовали(( Но увы...

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
var a,b,c,x,d:real;
begin
  assign(input,'input.txt');
  reset(input);
  assign(output,'output.txt');
  rewrite(output);
  readln(a,b,c);
  d:=sqr(b)-4*a*c;
  If a<>0 then
  If d<0 then write ('0')
         else If d=0 then Begin
                             Writeln ('1');
                             x:=(-b)/2*a;
                             writeln(x:8:6);
                          end
                     else begin
                            Writeln ('2');
                            x:=(-b-sqrt(d))/2*a;
                            writeln(x:8:6);
                            x:=(-b+sqrt(d))/2*a;
                            write(x:8:6);
                          end
  else  If (a=0) then if (b=0) then If (c<>0) then Write ('0')
                                              else write ('-1')
                               else If c=0 then Begin
                                                  writeln ('1');
                                                  x:=0;
                                                  Write (x:8:6);
                                                End
                                           else Begin
                                                  Writeln ('1');
                                                  x:=-c/b;
                                                  writeln(x:8:6);
                                                end;
end.
0
2838 / 1647 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
05.05.2009, 22:50
x:=(-b)/2*a
x:=(-b-sqrt(d))/2*a;
x:=(-b+sqrt(d))/2*a;
Операции с одинаковым приоритетом, если что, выполняются слева направо
1
Почетный модератор
 Аватар для Puporev
64319 / 47615 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
06.05.2009, 07:00
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
uses crt;
var a,b,c,x,d:real;
    input,output:text;
begin
clrscr;
assign(input,'input.txt');
reset(input);
assign(output,'output.txt');
rewrite(output);
read(input,a);
read(input,b);
read(input,c);
close(input);
if a<>0 then
 begin
  d:=sqr(b)-4*a*c;
  If d<0 then writeln (output,'0')
  else If d=0 then
   begin
     Writeln (output,'2');
     x:=(-b)/2*a;
     writeln(output,x:7:4);
     writeln(output,x:7:4);
   end
  else
   begin
     writeln (output,'2');
     x:=(-b-sqrt(d))/2*a;
     writeln(output,x:7:4);
     x:=(-b+sqrt(d))/2*a;
     write(output,x:7:4);
    end
  end
else  {if a=0}
 begin
  if (b=0)and(c<>0) then write(output,'0');
  if (b=0)and(c=0)then write (output,'-1');
  if (b<>0)and(c=0) then
   begin
     writeln (output,'1');
     x:=0;
     write (output,x:7:4);
   end;
  if (b<>0)and(c<>0)then
   begin
     writeln (output,'1');
     x:=-c/b;
     write(output,x:7:4);
   end;
 end;
writeln('Работа программы завершена!');
close(output);
readln
end.
1
 Аватар для Сергей Меркурьев
2 / 2 / 3
Регистрация: 30.04.2009
Сообщений: 98
07.05.2009, 17:25  [ТС]
Puporev, спасибо конечно, но и Ваша программа не прошла бы. Причина заключается в том, что требовалось поставить скобки в данных выражениях:
XML
1
2
3
x:=(-b)/2*a
x:=(-b-sqrt(d))/2*a;
x:=(-b+sqrt(d))/2*a;
ТО есть 2*а нужно всего лишь заменить на (2*а) и задача полностью решена!!!

Somebody, Puporev, Messenger of G., Спасибо Вам большое!!!
0
Почетный модератор
 Аватар для Puporev
64319 / 47615 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
07.05.2009, 17:56
А я у тебя списал, и в мелочи не вникал, написал суть.
Пост #13
x:=(-b-sqrt(d))/2*a;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.05.2009, 17:56
Помогаю со студенческими работами здесь

Квадратное уравнение
Определить имеет ли действительные корни уравнение ax 2+ bx + c = 0 . Если имеет, то значение a возвести в квадрат.

квадратное уравнение
Ребят помогите написать программу на паскале по вычесление квадратного уравнения. Мне задали, я все пытался-пытался, а программа в конце...

Квадратное уравнение.
Вот задача которую задал препод Дано уравнение вида: x*x*a+x*b+c=0 .Найти корни x1 ,та x2 Вот как я её сделал. program kv; var ...

Квадратное уравнение
Знающие люди, составьте пожалуйста программу:

Несведенное квадратное уравнение
Можно ли решить на компьютере несведенное квадратное уравнение?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определенном условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru