Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: wazausky en 9 Noviembre 2012, 01:51 AM

Título: ¿COMO HAGO QUE UN PROGRAMA BORRE PANTALLA Y REGRESE HASTA EL INICIO?
Publicado por: wazausky en 9 Noviembre 2012, 01:51 AM
QUE TAL.
PUES BIEN NECESITO QUE MI PROGRAMA NO TERMINE HASTA QUE SE SELECCIONE LA OPCION, MIENTRAS NO SE SELECCIONE LA OPCION TIENE QUE REGRESAR HASTA EL PRINCIPIO; TIENE QUE LIMPIAR LA PANTALLA Y VOLVER A CORRER TODO Y ESO SERA HASTA QUE SE SELECCIONE LA OPCION SALIR.
QUIEN ME PUEDA AYUDAR MUCHAS GRACIAS! :)

#include <stdio.h>
#include <stdlib.h>
/*PROGRAMA QUE CREA UNA MATRIZ A Y UNA MATRIZ B; DA 4 OPCIONES: SUMAR, RESTAR (A - B), RESTAR (B - A) Y TERMINAR PROGRAMA*/
int main(int argc, char *argv[])
{  
 int x, y, matrizA[10][10], matrizB[10][10], matrizR[10][10], RA, CA, RB, CB, O;
 printf("Cuantos renglones quiere que tenga la matriz A: ");
 scanf("%i", &RA);
 printf("\nCuantas columnas quiere que tenga la matriz A: ");
 scanf("%i", &CA);
 printf("\nCuantos renglones quiere que tenga la matriz B: ");
 scanf("%i", &RB);
 printf("\nCuantas columnas quiere que tenga la matriz B: ");
 scanf("%i", &CB);
/*SE GENERA LA MATRIZ A*/
 printf("\nMATRIZ A\n\n");
 for (x=1; x<=RA; x++)
{
 for (y=1; y<=CA; y++)
{
 matrizA[x][y] = rand()%10;
 printf("%i   ", matrizA[x][y]);
}
 printf("\n\n");
}
 printf("\n");
/*SE GENERA LA MATRIZ B*/
 printf("MATRIZ B\n\n");
 for (x=1; x<=RB; x++)
{
 for (y=1; y<=CB; y++)
{
 matrizB[x][y] = rand()%10;
 printf("%i   ", matrizB[x][y]);
}
 printf("\n\n");
}
/*SE ELIGE LA OPERACION*/
 printf("1.-SUMA\n\n2.-RESTA (A - B)\n\n3.-RESTA (B - A)\n\n4.-TERMINAR APLICACION\n\n");
 printf("QUE OPERACION DESEA REALIZAR: ");
 scanf("%i", &O);
/*SE HACE LA OPERACION ELEGIDA*/
 switch (O)
{
/*SUMA*/
 case 1:
 if (RA!=RB || CA!=CB)
{
 printf("\nNO SE PUEDEN SUMAR MATRICES DE DISTINTO ORDEN\n\n");
 break;
}
 else
{
 printf("\nMATRIZ RESULTANTE\n\n");
 for (x=1; x<=RB; x++)
{
 for (y=1; y<=CB; y++)
{
 matrizR[x][y] = matrizA[x][y] + matrizB[x][y];
 printf("%i   ", matrizR[x][y]);
}
 printf("\n\n");
}
 break;
}
/*RESTA (A - B)*/
 case 2:
 if (RA!=RB || CA!=CB)
{
 printf("\nNO SE PUEDEN RESTAR MATRICES DE DISTINTO ORDEN\n\n");
 break;
}
 else
{
 printf("\nMATRIZ RESULTANTE\n\n");
 for (x=1; x<=RB; x++)
{
 for (y=1; y<=CB; y++)
{
 matrizR[x][y] = matrizA[x][y] - matrizB[x][y];
 printf("%i   ", matrizR[x][y]);
}
 printf("\n\n");
}
 break;
}
/*RESTA (B - A)*/
 case 3:
 if (RA!=RB || CA!=CB)
{
 printf("\nNO SE PUEDEN RESTAR MATRICES DE DISTINTO ORDEN\n\n");
 break;
}
 else
{
 printf("\nMATRIZ RESULTANTE\n\n");
 for (x=1; x<=RB; x++)
{
 for (y=1; y<=CB; y++)
{
 matrizR[x][y] = matrizB[x][y] - matrizA[x][y];
 printf("%i   ", matrizR[x][y]);
}
 printf("\n\n");
}
 break;
}
 case 4:
 system("PAUSE");
 return 0;
 break;
}
 system("PAUSE");
 return 0;
}
Título: Re: ¿COMO HAGO QUE UN PROGRAMA BORRE PANTALLA Y REGRESE HASTA EL INICIO?
Publicado por: Ferno en 9 Noviembre 2012, 05:21 AM
Amigo, no se entiende nada.
Primero, aflojá con las mayúsculas, no son necesarias.

Segundo, el código siempre dentro de las etiquetas GeSHi, por favor!
Título: Re: ¿COMO HAGO QUE UN PROGRAMA BORRE PANTALLA Y REGRESE HASTA EL INICIO?
Publicado por: darkangel2125 en 9 Noviembre 2012, 05:27 AM
bueno para borrar pantalla se usa el
clrscr();
despues de que presiones un enter borraras pantalla
ahora para regresar al inicio creo que era

goto 0,0;

Título: Re: ¿COMO HAGO QUE UN PROGRAMA BORRE PANTALLA Y REGRESE HASTA EL INICIO?
Publicado por: leosansan en 9 Noviembre 2012, 13:08 PM
CitarMenudo desastre de código  ;D ;D ;D.
A ver si era esto lo que querías:
REEDITO LOS INDICES A CERO
Código (cpp) [Seleccionar]
#include <stdio.h>
#include <stdlib.h>
/*PROGRAMA QUE CREA UNA MATRIZ A Y UNA MATRIZ B; DA 4 OPCIONES: SUMAR, RESTAR (A - B), RESTAR (B - A) Y TERMINAR PROGRAMA*/
int main(int argc, char *argv[])
{
   int x, y, matrizA[10][10], matrizB[10][10], matrizR[10][10], RA, CA, RB, CB, O;
   printf("Cuantas lineas quiere que tenga la matriz A: ");
   scanf("%d", &RA);
   printf("\nCuantas columnas quiere que tenga la matriz A: ");
   scanf("%d", &CA);
   printf("\nCuantas lineas quiere que tenga la matriz B: ");
   scanf("%d", &RB);
   printf("\nCuantas columnas quiere que tenga la matriz B: ");
   scanf("%d", &CB);

   /*SE GENERA LA MATRIZ A*/

   for (x=0; x<RA; x++)
       {
           for (y=0; y<CA; y++)
               {
                   matrizA[x][y] = rand()%10;
               }
       }



   printf("\n");
   /*SE GENERA LA MATRIZ B*/

   for (x=0; x<RB; x++)
       {
           for (y=0; y<CB; y++)
               {
                   matrizB[x][y] = rand()%10;
               }

       }
   while (1){
   system("pause");
   system("cls");
   printf("\nMATRIZ A\n\n");
   for (x=0; x<RA; x++)
       {
           for (y=0; y<CA; y++)
               {
                   printf("%d   ", matrizA[x][y]);
               }printf("\n");
           printf("\n\n");
       }
   printf("MATRIZ B\n\n");
   for (x=0; x<RB; x++)
       {
           for (y=0; y<CB; y++)
               {
                   printf("%d   ", matrizB[x][y]);

               }printf("\n");
       }
           printf("\n\n");
   /*SE ELIGE LA OPERACION*/
   printf("1.-SUMA\n\n2.-RESTA (A - B)\n\n3.-RESTA (B - A)\n\n4.-TERMINAR APLICACION\n\n");
   printf("QUE OPERACION DESEA REALIZAR: ");
   scanf("%d", &O);
   /*SE HACE LA OPERACION ELEGIDA*/
   switch (O)
   {
       /*SUMA*/
         case 1:
         if (RA!=RB || CA!=CB)
           {
               printf("\nNO SE PUEDEN SUMAR MATRICES DE DISTINTO ORDEN\n\n");
               break;
           }
         else
           {
               printf("\nMATRIZ RESULTANTE\n\n");
               for (x=0; x<RB; x++)
                   {
                     for (y=0; y<CB; y++)
                       {
                           matrizR[x][y]=matrizA[x][y]+matrizB[x][y];
                           printf("%d   ",  matrizR[x][y]);
                       }printf("\n");
                 }
               printf("\n\n");
               break;
           }
       /*RESTA (A - B)*/
         case 2:
         if (RA!=RB || CA!=CB)
           {
             printf("\nNO SE PUEDEN RESTAR MATRICES DE DISTINTO ORDEN\n\n");
             break;
           }
         else
           {
             printf("\nMATRIZ RESULTANTE\n\n");
             for (x=0; x<RB; x++)
               {
                 for (y=0; y<CB; y++)
                   {
                        matrizR[x][y]=matrizA[x][y]-matrizB[x][y];
                        printf("%d   ",  matrizR[x][y]);
                   }printf("\n");
               }
           printf("\n\n");
           break;
           }

       /*RESTA (B - A)*/
         case 3:
         if (RA!=RB || CA!=CB)
           {
             printf("\nNO SE PUEDEN RESTAR MATRICES DE DISTINTO ORDEN\n\n");
             break;
           }
         else
           {
             printf("\nMATRIZ RESULTANTE\n\n");
             for (x=0; x<RB; x++)
               {
                 for (y=0; y<CB; y++)
                   {
                        matrizR[x][y]=matrizB[x][y]-matrizA[x][y];
                        printf("%d   ",  matrizR[x][y]);
                   }printf("\n");
               }
             printf("\n\n");
             break;
           }

         case 4:
         system("pause");
         return 0;
         break;
       }
   }
     return 0;
}
CitarAunque a mí me gusta más así:
Saludos!.
Código (cpp) [Seleccionar]
#include <stdio.h>
#include <stdlib.h>
/*PROGRAMA QUE CREA UNA MATRIZ A Y UNA MATRIZ B; DA 4 OPCIONES: SUMAR, RESTAR (A - B), RESTAR (B - A) Y TERMINAR PROGRAMA*/
int main(int argc, char *argv[])
{
   int x, y, matrizA[10][10], matrizB[10][10], matrizR[10][10], RA=0, CA=0, RB=1, CB=1, O;

   while (RA!=RB || CA!=CB){
       printf("Cuantas lineas quiere que tenga la matriz A: ");
       scanf("%d", &RA);
       printf("\nCuantas columnas quiere que tenga la matriz A: ");
       scanf("%d", &CA);
       printf("\nCuantas lineas quiere que tenga la matriz B: ");
       scanf("%d", &RB);
       printf("\nCuantas columnas quiere que tenga la matriz B: ");
       scanf("%d", &CB);
       if (RA!=RB || CA!=CB) printf ("Han de tener las mismas lineas y columnas\npara sumar o restar\n");
}
   /*SE GENERA LA MATRIZ A*/

   for (x=0; x<RA; x++)
       {
           for (y=0; y<CA; y++)
               {
                   matrizA[x][y] = rand()%10;
               }
       }
   printf("\n");
   /*SE GENERA LA MATRIZ B*/
   for (x=0; x<RB; x++)
       {
           for (y=0; y<CB; y++)
               {
                   matrizB[x][y] = rand()%10;
               }
       }
   while (1){
   system("pause");
   system("cls");
   printf("\nMATRIZ A\n\n");
   for (x=0; x<RA; x++)
       {
           for (y=0; y<CA; y++)
               {
                   printf("%d   ", matrizA[x][y]);
               }printf("\n");
           printf("\n\n");
       }
   printf("MATRIZ B\n\n");
   for (x=0; x<RB; x++)
       {
           for (y=0; y<CB; y++)
               {
                   printf("%d   ", matrizB[x][y]);

               }printf("\n");
       }
           printf("\n\n");
   /*SE ELIGE LA OPERACION*/
   printf("1.-SUMA\n\n2.-RESTA (A - B)\n\n3.-RESTA (B - A)\n\n4.-TERMINAR APLICACION\n\n");
   printf("QUE OPERACION DESEA REALIZAR: ");
   scanf("%d", &O);
   /*SE HACE LA OPERACION ELEGIDA*/
   switch (O)
   {
       /*SUMA*/
         case 1:

               printf("\nMATRIZ RESULTANTE\n\n");
               for (x=0; x<RB; x++)
                   {
                     for (y=0; y<CB; y++)
                       {
                           matrizR[x][y]=matrizA[x][y]+matrizB[x][y];
                           printf("%d   ",  matrizR[x][y]);
                       }printf("\n");
                 }
               printf("\n\n");
               break;

       /*RESTA (A - B)*/
           case 2:
           printf("\nMATRIZ RESULTANTE\n\n");
             for (x=0; x<RB; x++)
               {
                 for (y=0; y<CB; y++)
                   {
                        matrizR[x][y]=matrizA[x][y]-matrizB[x][y];
                        printf("%d   ",  matrizR[x][y]);
                   }printf("\n");
               }
           printf("\n\n");
           break;


       /*RESTA (B - A)*/
           case 3:
           printf("\nMATRIZ RESULTANTE\n\n");
             for (x=0; x<RB; x++)
               {
                 for (y=0; y<CB; y++)
                   {
                        matrizR[x][y]=matrizB[x][y]-matrizA[x][y];
                        printf("%d   ",  matrizR[x][y]);
                   }printf("\n");
               }
             printf("\n\n");
             break;
           case 4:
           system("pause");
           return 0;
           break;
       }
   }
     return 0;
}
Título: Re: ¿COMO HAGO QUE UN PROGRAMA BORRE PANTALLA Y REGRESE HASTA EL INICIO?
Publicado por: MikeMonostone en 9 Noviembre 2012, 14:36 PM
1. Para que te borre la pantalla, te recomiendo que leas este enlace    http://www.cplusplus.com/articles/4z18T05o/

2. Para que vuelva al inicio puedes hacer una llamada a la función main(), de esta manera: main();  ya que esta es la función principal.

Título: Re: ¿COMO HAGO QUE UN PROGRAMA BORRE PANTALLA Y REGRESE HASTA EL INICIO?
Publicado por: rir3760 en 9 Noviembre 2012, 16:03 PM
Otro detalle a corregir: en C y C++ los indices van desde 0 hasta "N - 1" donde "N" es el numero de elementos en el array. Estos dos bucles y similares:
for (x=1; x<=RA; x++){
   for (y=1; y<=CA; y++){
      ...


Hay que cambiarlos a:
for (x = 0; x < RA; x++){
   for (y = 0; y < CA; y++){
      ...


Un saludo
Título: Re: ¿COMO HAGO QUE UN PROGRAMA BORRE PANTALLA Y REGRESE HASTA EL INICIO?
Publicado por: leosansan en 9 Noviembre 2012, 19:33 PM
CitarREEDITDO "maestro". Eso pasa por querer "aprovechar" lo ya hecho por otro y no estar al loro.
Saludos!. ..... y ¿qué pasa con el "otro" sitio?
Título: Re: ¿COMO HAGO QUE UN PROGRAMA BORRE PANTALLA Y REGRESE HASTA EL INICIO?
Publicado por: Ferno en 9 Noviembre 2012, 19:34 PM
Cita de: leosansan en  9 Noviembre 2012, 19:33 PM


..?

No entendí ni medio.