Pascal/Turbo Pascal - Ayuda con un ejercicios de subprogramas

 
Vista:
sin imagen de perfil
Val: 6
Ha aumentado su posición en 46 puestos en Pascal/Turbo Pascal (en relación al último mes)
Gráfica de Pascal/Turbo Pascal

Ayuda con un ejercicios de subprogramas

Publicado por Andres Chavarri (15 intervenciones) el 14/06/2021 17:57:29
Elaborar un programa en Pascal que, usando subprogramas, realice el cálculo de
las raices en una ecuación cuadrática. Para ello debe pedir por teclado los valores
de a,b, y c que deben ser pasados como parámetros desde el programa principal a
un subprograma , realizar en el subprograma los cálculos de las raíces y devolver
los resultado obtenidos hacia el programa principal, en donde se deben visualizar.
No se deben solicitar los datos de entrada ni visualizar los resultados en los
subprogramas, todos los mensajes de entrada y salida de datos se deben
hacer en el programa principal
El cálculo del discriminante de la ecuación debe realizarse a través de una
FUNCTION.
Para calcular las raíces de la ecuación cuadrática se usa la fórmula: ax2 + bx + c = 0 ,
teniendo en cuenta que :
a) Si “a” es igual a 0 y “b” es igual a 0, imprimiremos un mensaje diciendo que la
“Ecuación es degenerada”.
b) Si “a” es igual a 0 y “b” no es igual a 0, existe una raíz única con valor –c/b, en este
caso se debe enviar el mensaje “Existe una raíz única” y de seguida el valor de la raíz.
c) En los demás casos, utilizaremos la fórmula: xi = (-b ± √(b2 – 4ac))/(2a)
 La expresión d = b2 – 4ac se denomina discriminante.
 Si “d” es mayor o igual que 0 entonces hay dos raíces reales, que se deben calcular
según la fórmula y mostrarse, junto al mensaje “Existen dos raíces reales”.
 Si “d” es menor que 0 entonces hay dos raíces complejas de la forma: J+Qi y J-Qi.
Siendo J = –b/2a y Q = √!(b2-4ac)!/(2a), que se se lee como ( la raíz cuadrada
del valor absoluto de (b2-4ac))/(2a).
Nota : el carácter √ corresponde a raíz cuadrada
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
-1
Responder

Ayuda con un ejercicios de subprogramas

Publicado por Armando Fuenmayor (6 intervenciones) el 17/06/2021 16:07:08
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
program vv;
uses crt;
   var
    a , b , c : integer ;
    res : String ;
 
 
function xxxx(a1, b1 : integer ) : integer ;
begin
  if  (a1 = 0) and (b1 = 0)  then
  begin
     xxxx  := 1
  end
  else
  begin
    if  (a1 = 0) and not (b1 = 0)  then
    begin
       xxxx := 2 ;
    end
    else
    begin
      xxxx := 3;
    end;
  end;
end;  // fin de funcion
 
function unica(  b1 ,c1: integer ) : real ;
begin
  unica  := ((-1*c1) / b1);
end;
 
function jota(  a1 ,b1: integer ) : real ;
begin
  jota  := ((-1*b1) / (2 * a1));
end;
 
function discriminante(  a1, b1 ,c1: integer ) : real ;
begin
  discriminante  := (b1 * b1) + (-4.0 * (a1 * c1));
end;
 
 
function valormas(a1, b1, c1 : integer ) : real ;
begin
  valormas := ((-1*b1)+ sqrt(b1 * b1 + (-4.0 * (a1 * c1))))/ (2* a1);
end;
 
function valormenos(a1, b1, c1 : integer ) : real ;
begin
  valormenos := ((-1*b1) - sqrt(b1 * b1 + (-4.0 * (a1 * c1))))/ (2* a1);
end;
 
 
  (***********************)
  (* programa principal  *)
  (***********************)
begin
  res := 'S';
  while (res = 'S') do
  begin
    clrscr;
 
    writeln('ingrese el valor de A: ');
    readln(a);
 
    writeln('ingrese el valor de B: ');
    readln(b);
 
    writeln('ingrese el valor de C: ');
    readln(c);
 
    writeln;
 
 
 
 
 case xxxx(a, b)  of
      1 : begin
            writeln('Ecuación es degenerada ');
          end;
      2 : begin
            writeln('Existe una raíz única');
            writeln('Valor unico: ', unica(b,c));
    (* OJO no entiendo y de seguida el valor
       de la raíz *)
 
          end;
      3 : begin
            if  ( discriminante(a,b,c) >= 0) then
            begin
              writeln('Existen dos raíces reales');
              writeln(' X1 =  ', valormas(a,b,c));
              writeln();
              writeln(' X2 =  ', valormenos(a,b,c));
              writeln();
            end
            else
            begin
              writeln('Existen 2 raíces complejas');
              writeln(' J1  =  ', jota(a,b));
              writeln();
              writeln(' Q1  =  ', sqrt(abs(discriminante(a,b,c)))/ (2*a )) ;
            end;
       end;
 end;
 
     writeln(' Desea continuar  [S/N] '  );
     readln(res);
 
     res := upcase(res);
 
  end;
readln;
 
end.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar