-
Notifications
You must be signed in to change notification settings - Fork 0
/
Ejercicio8.c
217 lines (216 loc) · 7.68 KB
/
Ejercicio8.c
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
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
/*******************PRESENTACIÓN*******************
NOMBRE: Alejandra Estefanía Martínez Muñoz
FECHA: 21 de febrero de 2023
PROGRAMA: ejercicio8.c
CENTRO UNIVERSITARIO DE LOS ALTOS / UNIVERSIDAD DE GUADALAJARA
INGENIERÍA EN COMPUTACIÓN / 2DO SEMESTRE
PROFESOR: Carlos Javier Cruz Franco
DESCRIPCIÓN: Elaborar calculadora de matrices con voids
**************************************************/
//Incluir librerías
#include <stdio.h>
#include <stdlib.h>
//Declaración de variables para los void
void suma(int m1[3][3], int m2[3][3], int m3[3][3]);
void resta(int m1[3][3], int m2[3][3], int m3[3][3]);
void multip(int m1[3][3], int m2[3][3], int m3[3][3]);
void divisi(int m1[3][3], int m2[3][3], int m3[3][3]);
//Declaración de variables, parte 2
int a, b, i, j, k, m, matriz, lugar;
//Voids: operaciones
//Definir operaciones a void: suma
void suma(int m1[3][3], int m2[3][3], int m3[3][3]){
for(int i=0; i<3; i++){
for(int j=0; j<3; j++){
m3[i][j]=m1[i][j]+m2[i][j];
}
}
}//Definir operaciones a void: resta
void resta(int m1[3][3], int m2[3][3], int m3[3][3]){
for (int i=0; i<3; i++){
for (int j=0; j<3; j++){
m3[i][j]=m1[i][j]-m2[i][j];
}
}
}//Definir operaciones a void: multiplicación
void multip(int m1[3][3], int m2[3][3], int m3[3][3]){
for (int i=0; i<3; i++){
for (int j=0; j<3; j++){
m3[i][j]=0;
for (int k=0; k<3; k++){
m3[i][j]+=m1[i][k]*m2[k][j];
}
}
}
}//Definir operaciones a void: división
void divisi(int m1[3][3], int m2[3][3], int m3[3][3]){
for (int i=0; i<3; i++){
for (int j=0; j<3; j++){
m3[i][j]=m1[i][j]/m2[i][j];
}
}
}
int main() { //Programa principal
//Otra declaración de variables porque no deja de marcar error y ya me enfadé :(
int m1[3][3], m2[3][3], m3[3][3];
do{ //Inicio de ciclo
//Menú de opciones principal
printf("** Calculadora de matrices **\n");
printf("_____________________\n| 1. Guardar valores |\n| 2. Ver matrices |\n| 3. Operaciones |\n| 4. Salir |\n|___________________|\n");
scanf("%d", &a);
if(a==1){ //Opción 1: Guardar números
printf("¿En que matriz quieres guardar?\n\t1 o 2\n");
scanf("%d", &matriz);
int lugar=0;
if(matriz==1){ //Guardar números en matriz 1
while (lugar !=9) {
printf("¿En que lugar quieres guardar?\n\t| 1 2 3 |\n\t| 4 5 6 |\n\t| 7 8 9 |\n");
scanf("%d", &lugar);
switch (lugar) {
case 1: //Guarda en [0, 0]
printf("Ingresa el numero --> ");
scanf("%d", &m1[0][0]);
break;
case 2: //Guarda en [0, 1]
printf("Ingresa el numero --> ");
scanf("%d", &m1[0][1]);
break;
case 3: //Guarda en [0, 2]
printf("Ingresa el numero --> ");
scanf("%d", &m1[0][2]);
break;
case 4: //Guarda en [1, 0]
printf("Ingresa el numero --> ");
scanf("%d", &m1[1][0]);
break;
case 5: //Guarda en [1, 1]
printf("Ingresa el numero --> ");
scanf("%d", &m1[1][1]);
break;
case 6: //Guarda en [1, 2]
printf("Ingresa el numero --> ");
scanf("%d", &m1[1][2]);
break;
case 7: //Guarda en [2, 0]
printf("Ingresa el numero --> ");
scanf("%d", &m1[2][0]);
break;
case 8: //Guarda en [2, 1]
printf("Ingresa el numero --> ");
scanf("%d", &m1[2][1]);
break;
case 9: //Guarda en [2, 2]
printf("Ingresa el numero --> ");
scanf("%d", &m1[2][2]);
break;
default: //Si pone otra cosa que no
printf("QUE ES ESO\n");
break;
}
}
}else if(matriz==2){ //Guardar números en matriz 2
while (lugar !=9) {
printf("¿En que lugar quieres guardar el numero?\n\t| 1 2 3 |\n\t| 4 5 6 |\n\t| 7 8 9 |\n");
scanf("%d", &lugar);
switch (lugar) {
case 1: //Guarda en [0, 0]
printf("Ingresa el numero --> ");
scanf("%d", &m2[0][0]);
break;
case 2: //Guarda en [0, 1]
printf("Ingresa el numero --> ");
scanf("%d", &m2[0][1]);
break;
case 3: //Guarda en [0, 2]
printf("Ingresa el numero --> ");
scanf("%d", &m2[0][2]);
break;
case 4: //Guarda en [1, 0]
printf("Ingresa el numero --> ");
scanf("%d", &m2[1][0]);
break;
case 5: //Guarda en [1, 1]
printf("Ingresa el numero --> ");
scanf("%d", &m2[1][1]);
break;
case 6: //Guarda en [1, 2]
printf("Ingresa el numero --> ");
scanf("%d", &m2[1][2]);
break;
case 7: //Guarda en [2, 0]
printf("Ingresa el numero --> ");
scanf("%d", &m2[2][0]);
break;
case 8: //Guarda en [2, 1]
printf("Ingresa el numero --> ");
scanf("%d", &m2[2][1]);
break;
case 9: //Guarda en [2, 2]
printf("Ingresa el numero --> ");
scanf("%d", &m2[2][2]);
break;
default: //Si pone otra cosa que no
printf("QUE ES ESO\n");
break;
}
}
}
}else if(a==2){ //Opción 2: Ver los valores guardados
printf("Las matrices son:\n Matriz 1 -->\n");
printf("| %d", m1[0][0]); //Fila 0
printf("\t%d", m1[0][1]);
printf("\t%d |", m1[0][2]);
printf("\n| %d", m1[1][0]); //Fila 1
printf("\t%d", m1[1][1]);
printf("\t%d |", m1[1][2]);
printf("\n| %d", m1[2][0]); // Fila 2
printf("\t%d", m1[2][1]);
printf("\t%d |", m1[2][2]);
printf("\n Matriz 2 -->\n");
printf("| %d", m2[0][0]); //Fila 0
printf("\t%d", m2[0][1]);
printf("\t%d |", m2[0][2]);
printf("\n| %d", m2[1][0]); //Fila 1
printf("\t%d", m2[1][1]);
printf("\t%d |", m2[1][2]);
printf("\n| %d", m2[2][0]); // Fila 2
printf("\t%d", m2[2][1]);
printf("\t%d |", m2[2][2]);
}else if(a==3){ //Opción 3: Operaciones de matrices, segundo menú
printf("________________\n| 1. Sumar |\n| 2. Restar |\n| 3. Multiplicar |\n| 4. Dividir |\n|________________|\n");
scanf("%d", &b);
switch(b){
case 1: //Caso 1: Suma de matrices, llamar a void
suma(m1, m2, m3);
break;
case 2: //Caso 2: Resta de matrices, llamar a void
resta(m1, m2, m3);
break;
case 3: //Caso 3: Multiplicación de matrices, llamar a void
multip(m1, m2, m3);
break;
case 4: //Caso 4: División de matrices, llamar a void
divisi(m1, m2, m3);
break;
default: //Si pone otra cosa que no
printf("queseso\n");
break;
}//Muestra de resultados de operaciones
printf("La matriz resultante es: \n");
printf("| %d", m3[0][0]); //Fila 0
printf("\t%d", m3[0][1]);
printf("\t%d |", m3[0][2]);
printf("\n| %d", m3[1][0]); //Fila 1
printf("\t%d", m3[1][1]);
printf("\t%d |", m3[1][2]);
printf("\n| %d", m3[2][0]); // Fila 2
printf("\t%d", m3[2][1]);
printf("\t%d |", m3[2][2]);
}//Pregunta para repetir ciclo de menu
printf("\n___________________\n| 1. volver a menu |\n| 2. salir |\n|__________________|\n");
scanf("%d", &b);
}while(b==1);
printf("Adios, que le vaya bien :D");
//Termina el programa
return 0;
}