Hola, como regresar a una funcion especifica

Iniciado por jescel_inf, 19 Noviembre 2012, 19:30 PM

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

jescel_inf

les mando mi programa que me pidieron, solo que no se como regresar a la funcion_pide, despues deteminar cada opcion(calculadora,for,while,agenda,mayor)

#include"stdio.h"
#include"conio.h"
#define CANTIDAD 3

struct alumnos
{
   char nombre[40];
   char apellido[40];
   int edad;
};
/*===================================================================================================================*/

funcion_inicio()
    {
     
    char nombre[50];
   
    clrscr();
   
   printf("\t\t\t  Dame tu nombre de usuario\n\n\n\n\n\n\n\n\n\t\t\t\t ");
   fflush(stdin);
   gets(nombre);
   clrscr();
   printf("\t\tBienvenido al sistema -%s- \n\n\n", nombre);
   printf("\t\t\t       Elige una opcion:\n\n");
   printf("\t\t       1------------>Calculadora\n");
   printf("\t\t       2------------>El mayor de 2 numero\n");
   printf("\t\t       3------------>Repeticion con while determinado\n");
   printf("\t\t                     por el usuario\n");
   printf("\t\t       4------------>Repeticion con for determinado\n");
   printf("\t\t                     por el usuario\n");
   printf("\t\t       5------------>Agenda\n");
   printf("\t\t       6------------>Salir\n\n\n\t\t\t\t\t");
     
   
    }
/*========================================================================================================================*/
funcion_pide()
    {
              int opcion;
              scanf("%d",&opcion);
              switch(opcion)
    {
     case 1:funcion_calculadora();
     break;
     case 2:funcion_mayor();
     break;
     case 3:funcion_while();
     break;
     case 4:funcion_for();
     break;
     case 5:funcion_agenda();
     break;
     case 6:funcion_salir();
     break;
    }
    }
/*========================================================================================================================*/
funcion_calculadora()
    {
  clrscr();
  int tipo;
  float a, b, total;
  char cont='s';
  while (cont !='n')
  {
      printf ("Selecciona una de las siguientes opciones:\n");
      printf ("1. Suma\n");
      printf ("2. Resta\n");
      printf ("3. Multiplicacion\n");
      printf ("4. Division\n");
      printf ("5. Salir\n");
      printf ("6. Regresar\n");
      scanf ("%i", & tipo);
      switch (tipo)

      {
          case 1:
          printf ("Escribe los dos numeros que quieres sumar:");
          scanf ("%f %f", &a, &b);
          total=a+b;
          printf ("El resultado es: %.2f \n",total);
          a=0;
          b=0;
          break;

          case 2:
          printf ("Escribe los dos numeros que quieres restar:");
          scanf ("%f %f", &a, &b);
          total=a-b;
          printf ("El resultado es: %.2f \n", total);
          a=0;
          b=0;
          break;

          case 3:
          printf ("Escribe los dos numeros que quieres multiplicar:");
          scanf ("%f %f", &a, &b);
          total=a*b;
          printf ("El resultado es: %.2f \n", total);
          a=0;
          b=0;
          break;

          case 4:
          printf ("Escribe los dos numeros que quieres dividir:");
          scanf ("%f %f", &a, &b);
          total=a/b;
          printf ("El resultado es: %.2f \n", total);
          a=0;
          b=0;
          break;
         
          case 5:
          exit(0);     
          }
    }
}
/*=================================================================*/
funcion_mayor()
    {
               clrscr();
               int a,b;
               printf("Dame el primer numero\n");
               scanf("%d",&a);
               printf("Dame el segundo numero\n");
               scanf("%d",&b);
               if (a>b)
               {
                printf("%d es mayor que%",a,b);  }
                else{
                     printf("%d es mayor que%d",b,a);}
                     
                     getch();             
    }
/*========================================*/
funcion_while(){
int contador;
int limite;

   clrscr();
   printf( "\n Hasta donde quieres para:r  " );
   scanf("%d",&limite);
   contador = 1; /* Inicialización del contador */
   while ( contador <= limite )        /* Condición */
   {
      printf( "%d ", contador );   /* Salida */
      contador++;    /* Incremento del contador */
   }
   getch();
   }
/*=======================================*/
funcion_for(){
int contador, inicial, final;
clrscr();
printf("Donde quieres iniciar\n");
scanf("%d",&inicial);
printf("Donde quieres finalizar\n");
scanf("%d",&final);

for (contador = inicial; contador<=final; contador++)
{
            printf("\nRepeticion numero %d\n", contador);
}
getch();
}
/*================================================*/             
funcion_agenda()
    {
    int i=0;
    struct alumnos alumno[CANTIDAD];     
   for(i;i<CANTIDAD;i++)
   {
      printf("Alumno %d: \n",i+1);
      printf("Nombre(s):");
      fflush(stdin);
      gets( alumno.nombre);
      printf("Apellido(s):");
      fflush(stdin);
       gets( alumno.apellido);
      printf("Edad:");
      scanf("%d",&alumno.edad);
   }
   for(i=0;i<CANTIDAD;i++)
   {
      printf("El alumno es %s %s  y su edad es:%d \n", alumno.nombre, alumno.apellido, alumno.edad);
   }
   getch();
         }
/*=========================================*/
funcion_salir(){
                exit(0);
                }
               
/*===========================================*/
main()
{

funcion_inicio();
funcion_pide();                 
      
   return(0);
}


gracias de antemano por poner  atencion a mi pregunta  :D

rir3760

Lo primero que debes hacer es evitar el uso de la biblioteca "conio" de Borland, y las funciones "gets" y "fflush(stdin)". Explicaciones a detalle se encuentran en el tema |Lo que no hay que hacer en C/C++. Nivel basico|.

En cuanto a tu pregunta debes colocar las llamadas a "funcion_inicio" y "funcion_pide" en la función "main" dentro de un bucle:
int main(void)
{
   while (1){
      funcion_inicio();
      funcion_pide();
   }
   
   return 0;
}

Es un bucle sin salida (un bucle infinito) porque la opción numero seis se encarga de terminar el programa (mediante la llamada a la función "exit").

Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

jescel_inf

Gracias rir3760 apenas soy nuevo en esto de la programacion, y gracias por lo de fflsuh.