Correr Programa c

Iniciado por wossy666, 4 Agosto 2011, 16:08 PM

0 Miembros y 1 Visitante están viendo este tema.

wossy666

Bueno otra vez yo molestado :/

se puede correr un progrma dentro de un menu :D

Gracias
:D

PiroskY

Si se puede, explicate mejor.

wossy666

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

void main(){
     char op='s';
     char a='a';
     char continuar='o';
     do{
          printf("**Bienvenido**\n");
          printf("1-Metodos De Ordenamiento\n");
          printf("2-Metodos De Busqueda\n");
          printf("3 -Salir\n");
          scanf("%c", &op);
          switch(op){ //este es el switch del menu principal
               case '1':
               printf("**Metodos De Ordenamiento**\n");
               printf("1- Burbuja\n");
               printf("2- Quiksort\n");
               scanf("%c", &a);
               switch(a){ //este es el switch de sub menu de ordenamiento.
                    case '1':
                    printf("Burbuja \n"); //aqui llamaria a la funcion burbuja.
                    break; //despues de cada case debe poner un break.

                    case '2':
                    printf("Quiksort \n"); //aqui llamaria a la funcion quilsort
                    break;

               } //aqui termina el switch del sub mmenu de ordenamiento.
               break; //aqui termina el case del MENU PRINCIPAL!

               case '2':
               printf("Busqueda. \n");
               //Aqui anida otro sqitch case.
               break;

               case '3':
               printf("Gracias... \n");
               continuar = 'S';
               break;

               default:
               printf("Opcion invalida\n");
               break;
          }
          system("pause");
          system("cls");
     }while(continuar != 's' && continuar != 'S');
}



Yo tengo ese codigo pero cuando le en la opcion de burbuja el programa de la burbuja debe de correr
me explico?? xD

enrmarc

¿Tienes un programa 'Burbuja' (el .exe o a.out) o un método Burbuja() ?
Si es el primer caso échale un vistazo a execv y en el segundo caso simplemente llama al método.

@enrmarc

greenchar

Me imagino que lo que tratas de hacer es una vez que, digamos, selecciones la opción burbuja, se ejecute todo el procedimiento.
Para llamar a una función seria mas o menos esto:

case '1':
                    printf("Burbuja \n"); //aqui solo imprime Burbuja
                    metodo_burbuja(); // Realmente aqui se llama a la funcion (supongo que no necesita argumentos)
                    break; //despues de cada case debe poner un break.


Espero haberte ayudado ;D

Cita de: enrmarc en  4 Agosto 2011, 22:35 PM
¿Tienes un programa 'Burbuja' (el .exe o a.out) o un método Burbuja() ?
Si es el primer caso échale un vistazo a execv y en el segundo caso simplemente llama al método.
En el caso de que necesites que se ejecute otro programa externo investiga sobre la librería execv como dice enrmarc (no la conozco)

wossy666

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

void main(){
     char op='s';
     char a='a';
     char continuar='o';
     do{
          printf("**Bienvenido**\n");
          printf("1-Metodos De Ordenamiento\n");
          printf("2-Metodos De Busqueda\n");
          printf("3 -Salir\n");
          scanf("%c", &op);
          switch(op){ //este es el switch del menu principal
               case '1':
               printf("**Metodos De Ordenamiento**\n");
               printf("1- Burbuja\n");
               printf("2- Quiksort\n");
               printf("3 -Regresar al menu Principal\n");
               scanf("%c", &a);
               switch(a){
                    case '1':
                    printf("Burbuja \n");
                    #define TAM 10000

int a[TAM], temp, i, j;

clrscr();

randomize(); //Inicializa el generador de numeros aleatorios

printf ("Llenando arreglo con números aleatorios\n");

for (i=0; i< TAM; i++)
a[i]=random(10000);

//Implementacion de Ordenamiento por burbuja de mayor a menor

for (j=1; j <= TAM; j++)

for (i=0; i< TAM-1; i++)

if (a[i] < a[i+1]){

temp = a[i];
a[i] = a[i+1];
a[i+1] = temp;
}

printf ("\nArreglo ordenado\n");

for (i=0; i< TAM; i++)
printf ("a[%d] = %d\n", i, a[i]);

                    break;

                    case '2':
                    printf("Quiksort \n");
                    break;

               }
               break;

               case '2':
               printf("Metodos De Busqueda. \n");
               printf("1- Secuencial\n");
               printf("2- Binaria\n");
               printf("3 -Regresar al menu Principal\n");
                scanf("%c", &a);
               switch(a){
               case '1':
                    printf("Secuencial \n");
               }
               break;

                case '2a':
                    printf("Quiksort \n");
                    break;

               case '3':
               printf("Gracias... \n");
               continuar = 'S';
               break;

               default:
               printf("Opcion invalida\n");
               break;
          }
          system("pause");
          system("cls");
     }while(continuar != 's' && continuar != 'S');
}


Obviamente falta meter el quicksort y el metodo de busqueda
pero ahora tengo duda, cuando le doy 1 se mete al submenu metodos de ordenamiento y cuando le doy otro 1 deberia de correr el bubble sort pero no lo hace xD

greenchar

No encuentro por que la falla, pero lo seguire pensando (esta es una respuesta rapida)  :-X
Te recomiendo que metas todo esto en una función para que después la llames y asi sea más fácil de leer tu código   :-*
Código (cpp) [Seleccionar]

//TODO ESTO EN UNA FUNCION
           printf("Burbuja \n");
                    #define TAM 10000
int a[TAM], temp, i, j;

clrscr();

randomize(); //Inicializa el generador de numeros aleatorios

printf ("Llenando arreglo con números aleatorios\n");

for (i=0; i< TAM; i++)
a[i]=random(10000);

//Implementacion de Ordenamiento por burbuja de mayor a menor

for (j=1; j <= TAM; j++)

for (i=0; i< TAM-1; i++)

if (a[i] < a[i+1]){

temp = a[i];
a[i] = a[i+1];
a[i+1] = temp;
}

printf ("\nArreglo ordenado\n");

for (i=0; i< TAM; i++)
printf ("a[%d] = %d\n", i, a[i]);

                    break;