Форум программистов, компьютерный форум, киберфорум
Наши страницы
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.87/15: Рейтинг темы: голосов - 15, средняя оценка - 4.87
MacTb
0 / 0 / 0
Регистрация: 13.10.2010
Сообщений: 11
1

Дискриминант

13.10.2010, 02:35. Просмотров 3094. Ответов 8
Метки нет (Все метки)

нужно что б в процедуре вводило значения а,б,с общитало только дискреминант , в основной программе условия для д=0,д>0,д<0 . Заранее спасиб
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.10.2010, 02:35
Ответы с готовыми решениями:

Дискриминант
Не работает программа: var a,b,c,x, D: integer; begin write('Введите a: '); readln(a); ...

Если дискриминант равен нулю то из него не извлекая корень решать дальше
можно использовать тока оператор CASE (с if просто) а вот с CASE не понимаю как помогите P.S....

Дискриминант
Подскажите как в турбо паскале прогу дискриминанта сделать

Дискриминант
Нужно создать программу решающую квадратные уравнения с помощью дискриминанта.Помогите!Зараннее...

Вычислить дискриминант
Так могу в общем то делать сложение, вычитание, деление, умножение что бы там корень решал. тут...

8
СИМБА
7 / 7 / 3
Регистрация: 19.07.2010
Сообщений: 37
13.10.2010, 06:41 2
Недоконца понял условия, будем исходить из того, что Нужно написать программу, в основной программе пользователь вводит значения, (ограничения значений а=0, б>0, c<0) потом надо передать эти значения в процедуру и там найти дискрименант.
И пиши более понятно задания, чтоб гадать не пришлось чего ты хочеш.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
program asyy;
var x,y,z:integer;
    t:real;
procedure abc(a,b,c:integer; var d:real);
begin
 if b mod 2 =0 then d:=b/2-a*c else d:=sqr(b)-4*a*c;
end;
begin
 writeln ('Wwedite A,B,C');
 readln (x,y,z);
 abc(x,y,z,t);
 abc(x,y,z,t);
 writeln ('Otvet',t:7:3);
 readln;
end.
0
MacTb
0 / 0 / 0
Регистрация: 13.10.2010
Сообщений: 11
13.10.2010, 12:19  [ТС] 3
cмотри ввод 3 числе тоесть как по формуле нахождения дескременанта а*а-4*а*с , тоесть нужно в процедуре это общитать , а уже в основной программе находнения корней уравнения .
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 laba1_4;
uses crt;
var a,b,c,ds,x1,x2,x:real;
procedure d(a,b,c,ds:real);
 
 begin
 writeln('vvedite a,b,c');
 readln(a,b,c);
 ds:=b*b-4*a*c;
 writeln('dis=',ds:2:2);
 end;
 
Begin
clrscr;
 d(ds,a,b,c);
  If ds<0 then
  begin
   writeln('nety korney');
  end;
   If ds>0 then
  begin
   x1:=(-b+(sqrt(ds))/(2*a));
   x2:=(-b-(sqrt(ds))/(2*a));
   writeln('x1=',x1:2:2);
   writeln('x2=',x2:2:2);
  If ds=0
  x:= -b/2*a
  writeln('x=',x:2:2);
  
  end;
 readln;
end.
вот я написал но чето не сходиться
0
Mawrat
12880 / 5782 / 1704
Регистрация: 19.09.2009
Сообщений: 8,807
13.10.2010, 13:00 4
MacTb, твоя процедура, которая дискриминант считает, не возвращает в вызывающую программу значения a,b,c,ds. Чтобы возвращала, надо написать так:
Pascal
1
procedure d(var a,b,c,ds:real);
1
13.10.2010, 13:00
MacTb
0 / 0 / 0
Регистрация: 13.10.2010
Сообщений: 11
13.10.2010, 19:33  [ТС] 5
теперь проблемка , если даже дискр < 0 , то всеравно корни общитует , помогите
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
program laba1_4;
uses crt;
var a,b,c,ds,x1,x2,x:real;
procedure d(var a,b,c,ds:real);
 
 begin
 writeln('vvedite a,b,c');
 readln(a,b,c);
 ds:=b*b-4*a*c;
 writeln('dis=',ds:2:2);
 end;
 
Begin
clrscr;
 d(ds,a,b,c);
  If ds<0 then
  begin
   writeln('nety korney');
  end;
   If ds>0 then
  begin
   x1:=(-b+(sqrt(ds))/(2*a));
   x2:=(-b-(sqrt(ds))/(2*a));
   writeln('x1=',x1:2:2);
   writeln('x2=',x2:2:2);
  end;
  If ds=0  then
  begin
  x:= -b/2*a;
  writeln('x=',x:2:2);
  
  end;
 readln;
end.
0
SuPeR XaKer
2848 / 1977 / 788
Регистрация: 23.09.2010
Сообщений: 4,877
13.10.2010, 19:35 6
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
If ds<0 then
  begin
   writeln('nety korney');
  end
else
   If ds>0 then
  begin
   x1:=(-b+(sqrt(ds))/(2*a));
   x2:=(-b-(sqrt(ds))/(2*a));
   writeln('x1=',x1:2:2);
   writeln('x2=',x2:2:2);
  end
else
  If ds=0  then
  begin
  x:= -b/2*a;
  writeln('x=',x:2:2);
  
  end;
1
MacTb
0 / 0 / 0
Регистрация: 13.10.2010
Сообщений: 11
14.10.2010, 00:20  [ТС] 7
http://imageshost.ru/photo/1132569/id187441.html
вот что получаеться , при д<0 должно сообщение выводить . хз вообщем (
0
znahar
25 / 25 / 14
Регистрация: 01.07.2010
Сообщений: 59
14.10.2010, 00:53 8
Не выводит сообщение потому что у вас не правильно реализована передача фактических параметров в процедуру(строка 15):
Цитата Сообщение от MacTb Посмотреть сообщение
d(ds,a,b,c);
Когда описывали процедуру(строка 4) дискриминант на последнем месте, а когда обращаетесь к процедуре(Строка 15) дискриминант на первом.

Для правильного вывода результата нужно строку 15 заменить на эту:
Pascal
1
d(a,b,c, ds);
1
MacTb
0 / 0 / 0
Регистрация: 13.10.2010
Сообщений: 11
14.10.2010, 02:46  [ТС] 9
спасибо большое ) все работает
0
14.10.2010, 02:46
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.10.2010, 02:46

Дискриминант
Вчера начал изучать Delphi ,решил написать прогу для счета дискриминанты..запутался в типах...

Дискриминант
скиньте код программы для вычисления дискриминанта

Дискриминант
Добрый день. скажите пожалуйста как можно описать комплексные корни в процессе решения квадратного...


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

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

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