| Ver tema anterior :: Ver siguiente tema | | Autor | Mensaje |
|---|
nieves
Registrado: 16 Oct 2004 Mensajes: 146
| Publicado: 26/10/2004 1:34 pm | | | Título: Un peqeño problema |
| hola! aver si alguien puede ayudarme.tengo que hacer una calculadora de matrices con la opcion de que sume dos matrices, las reste, haga una combinacion lineal y salga.tambien primero tiene que preguintar al usuario si qiere hacer alguna operacion.Lo he hecho todo y me va bien, pero me falla el salir y la opcion incorrecta, cuand ponga el 4 para salir me dao una matriz resultante negativa y no tendria que hacer nada.Aver si alguien podria mirarselo y ayudarme.Gracias!Os dejo el codigo.
/* Programa que simula una 'petita calculadora' de matrius reals quadrades */ #include <stdio.h> #include <conio.h> #include <stdlib.h> #define DimMat 2
void main() { /* Declaració de variables*/ float M1[DimMat][DimMat], M2[DimMat][DimMat]; float Resultat[DimMat][DimMat], a, b; int i, j, operacio; char resp;
do { printf("Vols fer una operacio? (S)i o (N)o:"); //Demanar una operació fflush(stdin); resp=getchar();
for (i=0; i<DimMat; i++) //S'introdueix els valors per a la primera matriu for (j=0; j<DimMat; j++) { printf("\nIntrodueix un valor per a la posicio %d %d de la primera matriu: ", i, j); scanf("%f",&M1[i][j]); }
for (i=0; i<DimMat; i++) //S'introdueix els valors per a la segona matriu for (j=0; j<DimMat; j++) { printf("\nIntrodueix un valor per a la posicio %d %d de la segona matriu: ", i, j); scanf("%f",&M2[i][j]); }
printf("\nEscolleix una opcio: \n1.-Sumar \n2.-Restar \n3.-Combinacio lineal \n4.-Sortir\n"); fflush(stdin); scanf("%d", &operacio);
switch (operacio) { case 1: for (i=0; i<DimMat; i++) for (j=0; j<DimMat; j++) Resultat[i][j]=M1[i][j] + M2[i][j]; //Suma els valors de les dues matrius i l'introdueix en la matriu Resultat break; case 2: for (i=0; i<DimMat; i++) for (j=0; j<DimMat; j++) Resultat[i][j]=M1[i][j] - M2[i][j]; //Resta els valors de les dues matrius i l'introdueix en la matriu Resultat break; case 3: printf("Introdueix un valor real per a 'a': "); scanf("%f", &a); printf("Introdueix un valor real per a 'b': "); scanf("%f", &b);
for (i=0; i<DimMat; ++i) for (j=0; j<DimMat; ++j) Resultat[i][j]=(a*M1[i][j]) + (b*M2[i][j]); //Realitza la combinació lineal de les dues matrius break; case 4: resp='n'; break; default: printf("\nOpcio incorrecta!\n"); getch(); break; } //Aquest codi mostra la matriu Resultat per pantalla: printf("\nLa matriu resultant es:\n"); for (i=0; i<DimMat; i++) { printf("\n\t|"); for (j=0; j<DimMat; j++) printf(" %.2f ", Resultat[i][j]); printf("|"); } } //Continuar mentre contestem sí while (resp=='s' || resp=='S'); getch(); } |
| | Volver arriba | |  | nieves
Registrado: 16 Oct 2004 Mensajes: 146
| Publicado: 26/10/2004 1:38 pm | | | Título: |
| Tambien he probado d acerlo asi, queda un poco mejor pero ocurre lo mismo.
/* Programa que simula una 'petita calculadora' de matrius reals quadrades */ #include <stdio.h> #include <conio.h> #include <stdlib.h> #define DimMat 2
void main() { /* Declaració de variables*/ float M1[DimMat][DimMat], M2[DimMat][DimMat]; float Resultat[DimMat][DimMat], a, b; int i, j, operacio; char resp;
printf("Vols fer una operacio? (S)i o (N)o:"); //Demanar una operació fflush(stdin); resp=getchar();
//Continuar mentre contestem sí while (resp=='s' || resp=='S') { for (i=0; i<DimMat; i++) //S'introdueix els valors per a la primera matriu for (j=0; j<DimMat; j++) { printf("\nIntrodueix un valor per a la posicio %d %d de la primera matriu: ", i, j); scanf("%f",&M1[i][j]); }
for (i=0; i<DimMat; i++) //S'introdueix els valors per a la segona matriu for (j=0; j<DimMat; j++) { printf("\nIntrodueix un valor per a la posicio %d %d de la segona matriu: ", i, j); scanf("%f",&M2[i][j]); }
printf("\nEscolleix una opcio: \n1.-Sumar \n2.-Restar \n3.-Combinacio lineal \n4.-Sortir\n"); fflush(stdin); scanf("%d", &operacio);
switch (operacio) { case 1: for (i=0; i<DimMat; i++) for (j=0; j<DimMat; j++) Resultat[i][j]=M1[i][j] + M2[i][j]; //Suma els valors de les dues matrius i l'introdueix en la matriu Resultat break; case 2: for (i=0; i<DimMat; i++) for (j=0; j<DimMat; j++) Resultat[i][j]=M1[i][j] - M2[i][j]; //Resta els valors de les dues matrius i l'introdueix en la matriu Resultat break; case 3: printf("Introdueix un valor real per a 'a': "); scanf("%f", &a); printf("Introdueix un valor real per a 'b': "); scanf("%f", &b);
for (i=0; i<DimMat; ++i) for (j=0; j<DimMat; ++j) Resultat[i][j]=(a*M1[i][j]) + (b*M2[i][j]); //Realitza la combinació lineal de les dues matrius break; case 4: resp='n'; break; default: printf("\nOpcio incorrecta!\n"); getch(); break; } //Aquest codi mostra la matriu Resultat per pantalla: printf("\nLa matriu resultant es:\n"); for (i=0; i<DimMat; i++) { printf("\n\t|"); for (j=0; j<DimMat; j++) printf(" %.2f ", Resultat[i][j]); printf("|"); } } getch(); } |
| | Volver arriba | |  | nieves
Registrado: 16 Oct 2004 Mensajes: 146
| Publicado: 27/10/2004 10:58 am | | | Título: |
| | Quien no entienda lo que pido que me lo diga.Gracias |
| | Volver arriba | |  | | |
| No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas
|
|
| |