Sistema de ecuaciones 3x3 con Cramer
Publicado por Ma (1 intervención) el 12/12/2018 00:56:47
Buenas! Necesito ayuda. Tengo que hacer un programa que me calcule un sistema de 3x3 con el método de Cramer. Si bien hacer las operaciones es sencillo, lo que es complicado es el hecho de que el programa se vea ordenado y se imprima bien.
Que si el usuario coloca el número 1 no se muestre; si el usuario coloca el número cero no se muestre nada en ese espacio; si el usuario coloca -1 solo se muestre el signo menos y si el usuario coloca un número negativo (además del 1, claro está), no se muestre +- que suele suceder.
Lo que hice fue arreglar estos problemas por separado y ver cómo podría combinarlos todos.
Aquí muestro el programa completo y donde arreglo el problema del 1. Para arreglar el problema del 0 y del -1 utilicé el mismo algoritmo pero cambiando el valor que toman las variables (que si A=-1 o, en el caso del 0, A=0 y eso)
Aquí muestro como arreglo el problema del -1
y el del 0 es igual. Lo que quiero saber es que si hay alguna manera de poder combinarlos todos o tengo que volver a hacer el algoritmo :/ (tengo que usar puros condicionales, por cierto).
Les agradecería mucho si me ayudan :(
Que si el usuario coloca el número 1 no se muestre; si el usuario coloca el número cero no se muestre nada en ese espacio; si el usuario coloca -1 solo se muestre el signo menos y si el usuario coloca un número negativo (además del 1, claro está), no se muestre +- que suele suceder.
Lo que hice fue arreglar estos problemas por separado y ver cómo podría combinarlos todos.
Aquí muestro el programa completo y donde arreglo el problema del 1. Para arreglar el problema del 0 y del -1 utilicé el mismo algoritmo pero cambiando el valor que toman las variables (que si A=-1 o, en el caso del 0, A=0 y eso)
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
156
program cramer;
uses crt;
var A,B,C,D,A1,B1,C1,D1,A2,B2,C2,D2,ts,tx,ty,tz:integer;
x,y,z:real;
respuesta:string;
begin
A:=0;
B:=0;
C:=0;
D:=0;
A1:=0;
B1:=0;
C1:=0;
D1:=0;
A2:=0;
B2:=0;
C2:=0;
D2:=0;
respuesta:='si';
writeln('Bienvenido. Este programa resuelve ecuaciones de la forma:');
writeln('Ax+By+Cz=D');
writeln('A1x+B1y+C1z=D1');
writeln('A2x+B2y+C2z=D2');
writeln('Ingrese el valor de A, B, C y D separados de un espacio.');
readln(A,B,C,D);
writeln('Ingrese el valor de A1, B1, C1 y D1 separados de un espacio.');
readln(A1,B1,C1,D1);
writeln('Ingrese el valor de A2, B2, C2 y D2 separados de un espacio.');
readln(A2,B2,C2,D2);
begin
if (A=1) and (B=1) and (C=1) then
writeln('x+y+z=',D)
else
begin
if (a=1) and (b=1) then
writeln('x+y+',c,'z=',d)
else
begin
if (b=1) and (c=1) then
writeln(a,'x+y+z=',d)
else
begin
if (a=1) and (c=1) then
writeln('x+',b,'y+z=',d)
else
begin
if (a=1) then
writeln('x+',b,'y+',c,'z=',d)
else
begin
if (b=1) then
writeln(a,'x+y+',c,'z=',d)
else
begin
if (c=1) then
writeln(a,'x+',b,'y+z=',d)
else
writeln(a,'x+',b,'y+',c,'z=',d)
end;
end;
end;
end;
end;
end;
end
begin
if (A1=1) and (B1=1) and (C1=1) then
writeln('x+y+z=',D1)
else
begin
if (a1=1) and (b1=1) then
writeln('x+y+',c1,'z=',d1)
else
begin
if (b1=1) and (c1=1) then
writeln(a1,'x+y+z=',d1)
else
begin
if (a1=1) and (c1=1) then
writeln('x+',b1,'y+z=',d1)
else
begin
if (a1=1) then
writeln('x+',b1,'y+',c1,'z=',d1)
else
begin
if (b1=1) then
writeln(a1,'x+y+',c1,'z=',d1)
else
begin
if (c1=1) then
writeln(a1,'x+',b1,'y+z=',d1)
else
writeln(a1,'x+',b1,'y+',c1,'z=',d1)
end;
end;
end;
end;
end;
end;
end;
begin
if (A2=1) and (B2=1) and (C2=1) then
writeln('x+y+z=',D2)
else
begin
if (a2=1) and (b2=1) then
writeln('x+y+',c2,'z=',d2)
else
begin
if (b2=1) and (c2=1) then
writeln(a2,'x+y+z=',d2)
else
begin
if (a2=1) and (c2=1) then
writeln('x+',b2,'y+z=',d2)
else
begin
if (a2=1) then
writeln('x+',b2,'y+',c2,'z=',d2)
else
begin
if (b2=1) then
writeln(a2,'x+y+',c2,'z=',d2)
else
begin
if (c2=1) then
writeln(a2,'x+',b2,'y+z=',d2)
else
writeln(a2,'x+',b2,'y+',c2,'z=',d2)
end;
end;
end;
end;
end;
end;
end;
begin
writeln('Desea continuar?');
readln(respuesta);
if respuesta='si' then
begin
ts:=A*B1*C2+A1*B2*C+B*C1*A2-C*B1*A2+B*A1*C2+A*C1*B2;
tx:=D*B1*C2+D1*B2*C+B*C1*D2-C*B1*D2+B*D1*C2+D*C1*B2;
ty:=A*B1*C2+A1*D2*C+D*C1*A2-C*D1*A2+D*A1*C2+A*C1*D2;
tz:=A*B1*D2+A1*B2*D+B*D1*A2-D*B1*A2+B*A1*D2+A*D1*B2;
x:=tx div ts;
y:=ty div ts;
z:=tz div ts;
writeln('El valor de x es:',x:3:3);
writeln('El valor de y es:',y:3:3);
writeln('El valor de z es:',z:3:3)
end;
end;
readln();
end.
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
begin
if (A=-1) and (B=-1) and (C=-1) then
writeln('-x-y-z=',D)
else
begin
if (a=-1) and (b=-1) then
writeln('-x-y+',c,'z=',d)
else
begin
if (b=-1) and (c=-1) then
writeln(a,'x-y-z=',d)
else
begin
if (a=-1) and (c=-1) then
writeln('-x+',b,'y-z=',d)
else
begin
if (a=-1) then
writeln('-x+',b,'y+',c,'z=',d)
else
begin
if (b=-1) then
writeln(a,'x-y+',c,'z=',d)
else
begin
if (c=-1) then
writeln(a,'x+',b,'y-z=',d)
else
writeln(a,'x+',b,'y+',c,'z=',d)
end;
end;
end;
end;
end;
end;
end;
Les agradecería mucho si me ayudan :(
Valora esta pregunta
0