calculadora ecuaciones segundo grado
Publicado por Guerrero15 (9 intervenciones) el 30/01/2021 15:08:39
Buenos días:
Hace una semana me propuse hacer una calculadora que resolviera ecuaciones de segundo grado. Estoy intentando hacer de una manera que no sé cómo puede ser de complicada.
He cogido todas las posibilidades que se puedan dar en una ecuacion de segundo grado y las he resuelto con if y else if, pero mucho de ellos se superponen y a veces no aparecen los printf o simplemente el resultado que me da es -1 #J. A veces en vez de J es una R.
No sé si hay alguna manera de que no se superpongan los if, y la verdad ando escaso de conocimientos, no llevo mucho tiempo con esto.
Llevo varios días haciendo el programa, pero no se me ocurre nada.
Alguna idea?
No me deja adjuntar el programa con formato cpp, así que lo voy a pegar.
Aviso que el programa son 160 lineas:
Hace una semana me propuse hacer una calculadora que resolviera ecuaciones de segundo grado. Estoy intentando hacer de una manera que no sé cómo puede ser de complicada.
He cogido todas las posibilidades que se puedan dar en una ecuacion de segundo grado y las he resuelto con if y else if, pero mucho de ellos se superponen y a veces no aparecen los printf o simplemente el resultado que me da es -1 #J. A veces en vez de J es una R.
No sé si hay alguna manera de que no se superpongan los if, y la verdad ando escaso de conocimientos, no llevo mucho tiempo con esto.
Llevo varios días haciendo el programa, pero no se me ocurre nada.
Alguna idea?
No me deja adjuntar el programa con formato cpp, así que lo voy a pegar.
Aviso que el programa son 160 lineas:
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
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <locale.h>
#include <Wchar.h>
int main(){
float a, b, c, x0, x1, x2, babs, rzc;
/*
babs es el valor absoluto de b
rzc es la raiz cuadrada de c
a = ax^2
b = bx
c = c
1 Resultado
===========
x0 = resultado
Varios resultados
=================
x1 = Primer resultado
x2 = Segundo resultado
*/
setlocale (LC_ALL, "");
printf ("\n\t CALCULADORA DE SEGUNDO GRADO");
printf ("\n\t ============================");
printf ("\n\n\t ECUACIÓN DE SEGUNDO GRADO: Ax^2 + Bx + C \n\n\t Por favor, ponga COMAS, NO puntos");
printf ("\n\n\t Inserte el valor de A: ");
scanf ("%f", &a);
printf ("\n\t Inserte el valor de B: ");
scanf ("%f", &b);
printf ("\n\t Inserte el valor de C: ");
scanf ("%f", &c);
babs = fabs (b);
rzc = sqrt (c);
system ("cls");
if (a==0 && b==0 && c==0){
printf ("\n\t RESULTADO");
printf ("\n\t =========");
printf ("\n\n\t Todos los valores son cero, por lo tanto X = 0");
}
else if (a==0){
x0 = -c/b;
printf ("\n\t RESULTADO");
printf ("\n\t =========");
printf ("\n\n\t X = %.2f", x0);
}
else if (b==0){
if ((c>0 && a>0) || (c<0 && a<0)){
printf ("\n\t RESULTADO");
printf ("\n\t =========");
printf ("\n\n\t No existe resultado, ya que es una raiz negativa");
}
else if (c<0 || a<0){
x1 = sqrt (-c/a);
x2 = -x1;
printf ("\n\t RESULTADO");
printf ("\n\t =========");
printf ("\n\n\t X1 = %.2f", x1);
printf ("\n\n\t X2 = %.2f", x2);
}
}
else if (c==0){
x1 = 0;
x2 = -b/a;
printf ("\n\t RESULTADO");
printf ("\n\t =========");
printf ("\n\n\t X1 = 0");
printf ("\n\n\t X2 = %.2f", x2);
}
else if (a==0 && b==0){
printf ("\n\t RESULTADO");
printf ("\n\t =========");
printf ("\n\n\t El resultado no existe, ya que %.2f no puede ser igual a 0", c);
}
else if ((b==0 && c==0) || (a==0 && c==0)){
printf ("\n\t RESULTADO");
printf ("\n\t =========");
printf ("\n\n\t X = 0");
}
else if (pow (b, 2) > 4*a*c){
x1 = ((-1*b)/(2*a))+(sqrt (pow (b, 2) - 4*a*c))/(2*a);
x2 = ((-1*b)/(2*a))-(sqrt (pow (b, 2) - 4*a*c))/(2*a);
printf ("\n\t RESULTADO");
printf ("\n\t =========");
printf ("\n\n\t X1 = %.2f", x1);
printf ("\n\n\t X2 = %.2f", x2);
}
else if (pow (b, 2) == 4*a*c){
x0 = -b/(2*a);
printf ("\n\t RESULTADO");
printf ("\n\t =========");
printf ("\n\n\t X1 = %.2f", x0);
}
else if (pow (b, 2) < 4*a*c){
printf ("\n\t RESULTADO");
printf ("\n\t =========");
printf ("\n\n\t No existe resultado, ya que es una raiz negativa");
}
else if (babs/2 == rzc){
x0 = rzc;
printf ("\n\t RESULTADO");
printf ("\n\t =========");
printf ("\n\n\t X = %.2f", x0);
}
printf ("\n\n\t *En caso de ser el resultado una raiz negativa,");
printf ("\n\t esperen a la siguiente versión, intentaremos ");
printf ("\n\t solucionarlo. Gracias por su comprensión.");
printf ("\n\n\t Presione una tecla para continuar...");
return 0;
}
Valora esta pregunta


0