• Viernes 29 de Marzo de 2024, 07:53

Autor Tema:  REVISION DE UN EJERCICIO  (Leído 1427 veces)

RICARDOJ.

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
REVISION DE UN EJERCICIO
« en: Lunes 13 de Diciembre de 2010, 13:53 »
0
1) Realizar un programa que presente dos opciones alusuario:
      MENU 1:
       a) Trabajar con vectores: Lee del teclado un vector numérico realde 10 posiciones y lo visualiza del revés, empezando por el ultimo valor introducido.
       b) Trabajar con matrices:
               - Cargar una matriz "A" de orden 3x4 con numeros enteros.
               - Visualizar porpantalla la matriz "A".
               - Calcularlamatriz traspuesta de "A" y guardarla con el nombre de atriz "B".
               - Visualizar la matriz "B".
      MENU 2:
      Operar con matrices cuadradas de orden 3x3. El usuario introducira los valores de los elementos de la dos matrices y a continuación se le presentara un        menu que le permitira seleccionar las operaciones a realizar.
          a) Suma de matrices.
          b) Resta de matrices.
          c) Calcular determinantes de las dos matrices.

EN EL PROGRAMA QUE PRESENTO A CONTINUACION ME FALTA SOLO LA PARTE DEL MENU 1, QUE NOSE COMO REALIZARLA,ME GUSTARIA UNA PEQUEÑA AYUDA....GRACIAS DE ANTE MANO.


//Libreria basica de entrada/salida de datos.
#include <stdio.h>
//Libreria que permite limpiar el texto en la pantalla para facilitar su lectura.
#include <conio.h>
//Libreria que permite hacer operaciones matematicas avanzadas.
#include <math.h>

void main(void)
{
   //Declaracion de variables con su tipo.
   int Vector1[5], Vector2[5], Vector3[5];
   float Modulo1=0, Modulo2=0;
   int Ind=0;
   float Matriz1[3][3], Matriz2[3][3], Matriz3[3][3], MatrizTp1[3][3], MatrizTp2[3][3];
   int Fil=0, Col=0, Fil1=0, Col1=0;
   int Opcion1=0, Opcion2=4;

   //Presentacion del programa.
   printf("t ESTE PROGRAMA REALIZA OPERACIONES CON MATRICES Y VECTORES.");
   printf("nntt PULSE UNA TECLA PARA INICIAR EL PROGRAMA");
   getch();
   //Limpieza de pantalla.
   clrscr();
   //Bucle que se repite mientras el usuario no especifica salir del programa.
   do
   {
      //Presentacion del menu principal con sus opciones.
      printf("tttt --MENU PRINCIPAL--");
      printf("nntt ESCOJA UNA DE LAS SIGUIENTES OPCIONES:");
      printf("nntt 1.-EJERCICIO 1.");
      printf("nntt 2.-EJERCICIO 2");
      printf("nntt 3.-SALIR DEL PROGRAMA");
      printf("nntt Nº DE LA OPCION ESCOGIDA: ");
      //Depuracion del teclado por si se produce un "Overflow".
      fflush(stdin);
      //Lectura de la opcion definida por el usuario.
      scanf("%i", &Opcion1);
      //Limpieza de pantalla para pasar al siguiente menu.
      clrscr();
      //Bucle que se repite mientras el usuario no especifica salir del submenu.
      do
      {
         //Selector que ejecuta una u otra opcion dependiendo de la deseada por
         //el usuario.
         switch(Opcion1)
         {
            //Submenu de opeacion con vectores.
            case 1:
            //Presentacion del menu.
            printf("tttt--Menu de Ejercicio 1--");
            printf("nntt Elija el tipo de operacion que desea:");
            printf("nntt 1. Trabajar con vectores.");
            printf("nntt 2. Trabajar con matrices.");
            printf("nntt 3. Volver al menu principal.");
            printf("nntt Su opcion: ");
            //Depuracion del teclado por si se ha producido un "Overflow".
            fflush(stdin);
            //Lectura de la opcion deseada por el usuario.
            scanf("%i", &Opcion2);
            printf("n");
            //Condicion que nos permite introducir los datos si quiere realizar
            //el usuario algun tipo de operacion.
            if(Opcion2<4 && Opcion2>0)
            //Selector que ejecuta la opcion definida por el usuario.
            switch(Opcion2)
            {
               //Opcion: Visualizar vector al reves.
               case 1:
               {
               printf("Introduzca los valores del Vector 1:nn");
               //Bucle que recopila los datos del vector 1 introducidos por teclado.
               for(Ind=0; Ind<5; Ind++)
               {
                  printf("Valor %i: ", Ind);
                  scanf("%i", &Vector1[Ind]);
               }
            }
               //Opcion: Trasponer matriz.
               case 2:

               case 3:
               //Limpieza de pantalla.
               clrscr();
               break;
               //Resto de opciones.
               default:
               printf("nPor favor, escoja una opcion valida.");
               printf("nPulse una tecla para continuar.");
               getch();
               //Limpieza de pantalla.
               clrscr();
            }
            break;
            //Submenu de Ejercicio 2.
            case 2:
            //Presentacion del menu.
            printf("tttt --Menu de Ejercicio 2--");
            printf("nntt Elija el tipo de operacion que desea:");
            printf("nntt 1. Sumar las matrices.");
            printf("nntt 2. Restar las matrices.");
            printf("nntt 3. Trasponer las matrices.");
            printf("nntt 4. Salir al menu principal.");
            printf("nntt Su opcion: ");
            //Depuracion del teclado por posibles "Overflow".
            fflush(stdin);
            //Lectura de la opcion deseada por el usuario.
            scanf("%i", &Opcion2);
            printf("n");
            //Condicion que nos permite introducir los datos si el usuario ha
            //escogido una opcion que requiera lectura de datos.
            if(Opcion2<4 && Opcion2>0)
            {
               //Peticion de los datos de la matriz 1.
               printf("nIntroduzca los valores de la Matriz 1:n");
               //Bucle para rellenar cada celda de la matriz.
               for(Fil=0; Fil<3; Fil++)
               {
                  for(Col=0; Col<3; Col++)
                  {
                     printf("Valor x = %i, y = %i: ", Fil, Col);
                     scanf("%f", &Matriz1[Fil][Col]);
                  }
               }
               printf("n");
               //Peticion de los datos de la matriz 2.
               printf("Introduzca los valores de la Matriz 2:n");
               //Bucle para rellenar cada celda de la matriz.
               for(Fil=0; Fil<3; Fil++)
               {
                  for(Col=0; Col<3; Col++)
                  {
                     printf("Valor x = %i, y = %i: ", Fil, Col);
                     scanf("%f", &Matriz2[Fil][Col]);
                  }
               }
            }
            //Selector que nos lleva a la opcion seleccionada por el usuario.
            switch(Opcion2)
            {
               //Opcion_ Suma de matrices.
               case 1:
               printf("nHa elegido suma de matrices.");
               //Bucle para calcular la suma de la misma celda de cada matriz.
               for(Fil=0; Fil<3; Fil++)
               {
                  for(Col=0; Col<3; Col++)
                  {
                     //Calculo de la suma de cada componente.
                     Matriz3[Fil][Col]=Matriz1[Fil][Col]+Matriz2[Fil][Col];
                  }
               }
               //Representacion de los resultados obtenidos por pantalla.
               printf("nnEl resultado de la suma de las matrices es:nn");
               //Bucle para representar el valor de cada celda.
               for(Fil=0; Fil<3; Fil++)
               {
                  for(Col=0; Col<3; Col++)
                  {
                     printf("%7.1f", Matriz3[Fil][Col]);
                  }
                  printf("n");
               }
               printf("nPulse una tecla para continuar.");
               getch();
               //Limpieza de pantalla.
               clrscr();
               break;
               //Opcion: Resta de matrices.
               case 2:
               printf("nHa elegido resta de matrices.");
               //Bucle para calcular la resta de los valores de la misma celda de
               //cada matriz.
               for(Fil=0; Fil<3; Fil++)
               {
                  for(Col=0; Col<3; Col++)
                  {
                     //Calculo de la resta de cada valor.
                     Matriz3[Fil][Col]=Matriz1[Fil][Col]-Matriz2[Fil][Col];
                  }
               }
               //Representacion de los resultados obtenidos por pantalla.
               printf("nnEl resultado de la resta de las matrices es:nn");
               //Bucle para representar cada valor de cada celda.
               for(Fil=0; Fil<3; Fil++)
               {
                  for(Col=0; Col<3; Col++)
                  {
                     printf("%7.1f", Matriz3[Fil][Col]);
                  }
                  printf("n");
               }
               printf("nPulse una tecla para continuar.");
               getch();
               //Limpieza de los datos por pantalla.
               clrscr();
               break;
               //Opcion: Trasposicion de matrices.
               case 3:
               //Bucle para rellenar cada valor de la trasposicion de la matriz 1.
               for(Col=0; Col<3; Col++)
               {
                  for(Fil=0; Fil<3; Fil++)
                  {
                     //Asignacion de valores.
                     MatrizTp1[Fil1][Col1]=Matriz1[Fil][Col];
                     //Incremento de la columna de la matriz traspuesta para asignar
                     //los valores correctamente.
                     Col1++;
                  }
               //Incremento de la fila de la matriz traspuesta para asignar los
               //valores correctamente.
               Fil1++;
               //Vuelta a la columna 0 para asignar los valores de una fila nueva.
               Col1=0;
               }
               //Vuelta a las coordenadas 0,0 de la matriz traspuesta.
               Fil1=0;
               Col1=0;
               //Bucle para rellenar cada valor de la trasposicion de la matriz 2.
               for(Col=0; Col<3; Col++)
               {
                  for(Fil=0; Fil<3; Fil++)
                  {
                     //Asignacion de valores.
                     MatrizTp2[Fil1][Col1]=Matriz2[Fil][Col];
                     //Incremento de la columna de la matriz traspuesta para asignar
                     //los valores correctamente.
                     Col1++;
                  }
               //Incremento de la fila de la matriz traspuesta para asignar los
               //valores correctamente.
               Fil1++;
               //Vuelta a la columna 0 para asignar valores a una fila nueva.
               Col1=0;
               }
               //Representacion de los resultados por pantalla.
               printf("nnEl resultado de la trasposicion de la Matriz 1 es:nn");
               //Bucle para representar cada celda de la matriz 1.
               for(Fil1=0; Fil1<3; Fil1++)
               {
                  for(Col1=0; Col1<3; Col1++)
                  {
                     printf("%7.1f", MatrizTp1[Fil1][Col1]);
                  }
                  printf("n");
               }
               //
               printf("nnEl resultado de la trasposicion de la Matriz 2 es:nn");
               //Bucle para representar cada celda de la matriz 2.
               for(Fil1=0; Fil1<3; Fil1++)
               {
                  for(Col1=0; Col1<3; Col1++)
                  {
                     printf("%7.1f", MatrizTp2[Fil1][Col1]);
                  }
                  printf("n");
               }
               printf("nPulse una tecla para continuar.");
               getch();
               //Limpieza de pantalla.
               clrscr();
               break;
               //Opcion: Volver al menu principal.
               case 4:
               //Limpieza de pantalla.
               clrscr();
               break;
               //Resto de opciones.
               default:
               printf("Por favor, escoja una opcion valida.");
               printf("nPulse una tecla para continuar.");
               getch();
               //Limpieza de pantalla.
               clrscr();
            }
            break;
            //Opcion para salir del programa.
            case 3:
            //Limpieza de pantalla.
            clrscr();
            break;
            //Resto de opciones.
            default:
            printf("Por favor, introduzca una opcion valida.");
            printf("nPulse una tecla para continuar.");
            getch();
            //Limpieza de pantalla.
            clrscr();
            break;
         }
      //Condicion del bucle para repetir los diferentes submenus.
      }while(Opcion2!=4);
   //Condicion del bucle para salir del programa.
   }while(Opcion1!=3);
}

NovaG8

  • Nuevo Miembro
  • *
  • Mensajes: 12
    • Ver Perfil
Re: REVISION DE UN EJERCICIO
« Respuesta #1 en: Lunes 13 de Diciembre de 2010, 20:56 »
0
a ver si entendi, eso lo tienes que hacer con un while y encapsulando un switch dentro del while, mas o menos asi:
lo voy hacer en c++:
cout<<"MENU"<<endl;
cout<<"1. Suma de Matrices"<<endl;
cout<<"2. resta de matrices"<<endl;
cout<<"1. Determinates"<<endl;
int n;
cout<<"Seleccione La operacion"<<endl;
cin>>n;
while(n<0 !! n>4){
   
    swich(n){
         case: 1
            //aca pones el codigo de la suma.
         case: 2
          //aca pones el codigo de la resta
        case: 3
            //aca el determinates.
}
}
Bueno esa es la idea, mientras no preciones 1, 2 o 3
el bucle se repetira, tambien puedes agregar otra opcion para salir.
la verdad no tuve tiempo de ver tu codigo, es mucha rola,
pero esa es la idea.

espero que te sirva