Форум программистов, компьютерный форум, киберфорум
Наши страницы
Free Pascal
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
Neic
1 / 1 / 0
Регистрация: 12.12.2010
Сообщений: 16
1

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

12.12.2010, 17:09. Просмотров 1990. Ответов 12
Метки нет (Все метки)

Вот недавно начал изучать Паскаль и написал квадратное уравнение ниже код, только вот паскаль не хочет его запускать. Укажите мою ошибку.
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
program kvadrat;
 
uses crt;
var a, b, c, d, x1, x2 : integer;
 
BEGIN
clrscr;
writeln('Укажите переменную a');
read(a);
writeln('Укажите переменную b');
read(b);
writeln('Укажите переменную c');
read(c);
 
d := b * b - 4 * a * c;
writeln ('Результат дескриминанта');
writeln (d);
writeln ('Если дескриминант < 0 то корней нет');
x1 := -b - sqrt(d) div 2;
writeln ('Результат x1');
writeln (x1) ;
x2 := -b + sqrt(d) div 2;
writeln ('Результат x2');
writeln (x2);
 
readln;
readln;
readln;
 
 
END.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.12.2010, 17:09
Ответы с готовыми решениями:

Квадратное уравнение
&quot;Целая&quot; проблема квадратного уравнения Входные данные В единственной строке задано через...

Квадратное уравнение
Написать программу которая вычисляет корни квадратного уравнения. Коэффициенты вводит пользователь....

Квадратное уравнение
program ddd; var a,b,c,D,x1,x2:real; begin writeln('ўўҐ¤ЁвҐ a b б'); write('a='); ...

Квадратное уравнение с ветвлением
Спасайте ,совершенно не смыслю в паскале. Нужно написать программку с решением квадратного...

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

12
katenka
0 / 0 / 0
Регистрация: 12.12.2010
Сообщений: 11
12.12.2010, 17:13 2
нужно разбивать на условия, если дискриминант больше или меньше нуляс момощью If ... then...
0
Neic
1 / 1 / 0
Регистрация: 12.12.2010
Сообщений: 16
12.12.2010, 17:16  [ТС] 3
Мне это пока не надо, мне надо чтобы квадратный корень считал.
0
katenka
0 / 0 / 0
Регистрация: 12.12.2010
Сообщений: 11
12.12.2010, 17:19 4
Так он вам не отбросит значения дискриминанта меньшего нуля и просто не извлечет корень

в вашем случае
if d<0 then
writeln('корней нет');
else x:=(-b+sqrt(d))/2a;

и так далее
0
12.12.2010, 17:19
Neic
1 / 1 / 0
Регистрация: 12.12.2010
Сообщений: 16
12.12.2010, 17:55  [ТС] 5
Переделал вот что вышло :
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
program kvadrat;
 
uses crt;
var a, b, c, d, x1, x2 : integer;
 
BEGIN
clrscr;
writeln('Укажите переменную a');
read(a);
writeln('Укажите переменную b');
read(b);
writeln('Укажите переменную c');
read(c);
 
d := b * b - 4 * a * c;
writeln ('Результат дескриминанта');
writeln (d);
if d<0 then begin
writeln('Корней нет');
else x1 := (-b - sqrt(d)) div 2 * a;
writeln ('Результат x1');
writeln (x1) ;
end
if d<0 then begin
writeln('Корней нет');
else x2 := (-b - sqrt(d)) div 2 * a;
writeln ('Результат x2');
writeln (x2);
end;
 
readln;
readln;
readln;
 
 
END.
Я недавно только начал изучать else, if , then еще не полностью освоился. Паскаль всеравно не хочет запускать приложение пишет:
Код
kvadtat.pas(20,1) Fatal: Syntax error, ";" expected but "ELSE" found
.

Добавлено через 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
30
31
32
33
34
35
36
37
38
39
40
41
program kvadrat;
 
uses crt;
var a, b, c, d, x1, x2, x3, x4, x5, x6 : integer;
 
BEGIN
clrscr;
writeln('Укажите переменную a');
read(a);
writeln('Укажите переменную b');
read(b);
writeln('Укажите переменную c');
read(c);
 
d := b * b - 4 * a * c;
writeln ('Результат дескриминанта');
writeln (d);
if (d<0) then begin
writeln('Корней нет');
end
 
else begin
x1 := sqrt(d);
x2 := -b - x1;
x3 := x2 div 2 * a;
 
writeln ('Результат x1');
writeln (x3);
x4 := sqrt(d);
x5 := -b + x4;
x6 := x5 div 2 * a;
writeln ('Результат x2');
writeln(x6);
end;
 
readln;
readln;
readln;
 
 
END.
0
katenka
0 / 0 / 0
Регистрация: 12.12.2010
Сообщений: 11
12.12.2010, 17:56 6
после end поставьте;
0
Neic
1 / 1 / 0
Регистрация: 12.12.2010
Сообщений: 16
12.12.2010, 17:58  [ТС] 7
Поставил, предыдущий пост обновил. Вся проблема в sqrt оно просто не хочет его читать.
0
Tpou
0 / 0 / 0
Регистрация: 09.12.2010
Сообщений: 3
15.12.2010, 17:54 8
Добрый вечер) Попробуй взять вещественный тип данных и в место div используй обычное деление "/". И остаётся немного подкорректировать код, здесь ты на правильном пути. Ну а в остальном разберёшься сам наверное. =)

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
program kvadrat;
 
uses crt;
var a, b, c, d, x1, x2 : integer;
 
BEGIN
clrscr;
writeln('Укажите переменную a');
read(a);
writeln('Укажите переменную b');
read(b);
writeln('Укажите переменную c');
read(c);
 
d := b * b - 4 * a * c;
writeln ('Результат дескриминанта');
writeln (d);
if d<0 then begin
writeln('Корней нет');
else x1 := (-b - sqrt(d)) div 2 * a;
writeln ('Результат x1');
writeln (x1) ;
end
if d<0 then begin
writeln('Корней нет');
else x2 := (-b - sqrt(d)) div 2 * a;
writeln ('Результат x2');
writeln (x2);
end;
 
readln;
readln;
readln;
 
 
END.
0
_антон_
19 / 19 / 9
Регистрация: 15.12.2010
Сообщений: 120
15.12.2010, 19:05 9
Ещё не все переменные integer, могут быть и дробные!

Добавлено через 25 минут
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
program Dd;
uses CRT;
var
a,b,c:real;{ êîýôôèöèåГ*ГІГ» ГіГ°Г*ГўГ*ГҐГ*ГЁГї }
xl,x2:real; { êîðГ*ГЁ ГіГ°Г*ГўГ*ГҐГ*ГЁГї }
d:real;        { äèñêðèìèГ*Г*Г*ГІ }
begin
writeln('Ââåäèòå Гў îäГ*îé ñòðîêå Г§Г*Г*Г·ГҐГ*ГЁГї êîýôôèöèåГ*òîâ');
readln(a,b,c);       { ââîä êîýôôèöèåГ*òîâ }
d:=b*b-4*a*c; { âû÷èñëåГ*ГЁГҐ äèñêðèìèГ*Г*Г*ГІГ* }
if d >=0
then
begin
xl:=-b+sqrt(d)/(2*a);
x2:=-b-sqrt (d)/(2*a);
writeln('ÊîðГ*ГЁ ГіГ°Г*ГўГ*ГҐГ*ГЁГї:');
writeln('xl=',xl:9:3);
writeln('x2=',x2:9:3);
end
else
writeln('ÊîðГ*ГҐГ© Г*ГҐГІ');
end.
0
Neic
1 / 1 / 0
Регистрация: 12.12.2010
Сообщений: 16
16.12.2010, 18:38  [ТС] 10
Mда, вы хоть знаете паскаль ? Вот этот знак деление "/" используется только при значении переменных "real". И _антон_ мне надо с integer, понимаешь ? Внимательней смотрите, перед тем как что то писать.
0
Tpou
0 / 0 / 0
Регистрация: 09.12.2010
Сообщений: 3
16.12.2010, 23:25 11
Цитата Сообщение от Neic Посмотреть сообщение
Mда, вы хоть знаете паскаль ? Вот этот знак деление "/" используется только при значении переменных "real". И _антон_ мне надо с integer, понимаешь ? Внимательней смотрите, перед тем как что то писать.
Если ты его сам не давно изучаешь - значит ты его сам не особо знаешь. Для начала почитай с каким типом данных работает функция "sqrt" Тебе помочь хотели... а ты тут отписываешь "Мда....".
0
Neic
1 / 1 / 0
Регистрация: 12.12.2010
Сообщений: 16
17.12.2010, 15:06  [ТС] 12
Если я не давно его изучаю это не значит что я не знаю моментов при которых не будут работать некоторые функции. Лучше почитай с каким типом данных работает "div" и "/". Возможно ты тоже недавно начал изучать Паскаль и уже пытаешься кому то помочь, на тебе это не написано. Я написал "Мда..." по вашим постам потому что знаю где можно применять "div" и "/" а где нет.
0
Tpou
0 / 0 / 0
Регистрация: 09.12.2010
Сообщений: 3
17.12.2010, 21:13 13
Хорошо, без обид В твоём случаи переменная d (дискриминант) у тебя объявлена как integer, а функция sqrt работает с типом real (вещественный) и объявляется так Function Sqrt (x:real): real; . Т.е. когда целое значение присваивается вещественной переменной, оно автоматически преобразуется в вещественный тип и никакие функции для этого не требуются (real := integer) Такое преобразование типов называется неявным. Обратного неявного преобразования нет: будет ошибкой пытаться присваивать переменной целого типа вещественный результат (integer := real). А чтобы использовать оператор div надо преобразовать переменную из real => integer, т.к. оператор div работает с переменными типа integer. Возможно ты имел ввиду так:

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
program kvadrat;
uses crt;
var 
    a, b, c, d, x1, x2, i1, i2 : integer;
    o1, o2 : real;
    button : char;
begin
 repeat
 clrscr;
 writeln('Vvedite a,b,c: ');
 readln(a,b,c);
 writeln('');
  d:= b * b - 4 * a * c;
  writeln('Resultat deskriminanta: ',d);
if d>0 then
 begin
   o1:= sqrt(d);
   i1:= trunc(o1);        {преобразуем вещественное в целый тип, отбрасывая дробную часть}
   x1:= (-b + i1) div 2 * a;  {здесь переменные уже типа integer}  
    o2:= sqrt(d); 
    i2:= trunc(o2);       {преобразуем вещественное в целый тип, отбрасывая дробную часть}
    x2:= (-b - i2) div 2 * a;  {здесь переменные уже типа integer}
     writeln('Resultat x1: ',x1);
     writeln('Resultat x2: ',x2);
 end
else
 writeln('Korney net');
writeln('');
writeln('Prodolgit => y');
button:=readkey;
until button <> 'y'
end.
0
17.12.2010, 21:13
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.12.2010, 21:13

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

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

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


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru