/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

Un peqeño problema

 
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
nieves



Registrado: 16 Oct 2004
Mensajes: 146

MensajePublicado: 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

MensajePublicado: 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

MensajePublicado: 27/10/2004 10:58 am
Título:

Quien no entienda lo que pido que me lo diga.Gracias
Volver arriba
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com