[ Foro de C++ ]

Ayuda con mi código

20-Oct-2020 18:09
Albert Núñez
0 Respuestas

Necesito pasar de programa a función el siguiente programa y además crear un menú antes del menú que ya tiene que diga:
1._ Colas.
2._ Salir del programa
El código es este
#include <iomanip>  
  #include <stdio.h>
  #include <iostream>
  #include <conio.h>
  #include <stdlib.h>
   using namespace std;
int insertar( float datoen, int *tope);
   int extraer (float *datosal, int *tope);
  /* DEFINICION DE VARIABLES */
  #define limite 20
  float pila [ limite];
  int main(void)
  {
     int i, tope, exito;
     char select = ' ';
     float datoen, datosal;
     tope = -1;
     while (select != '4')
      {
        system("cls");
        cout <<endl<<  " PROGRAMA QUE SIMULA UNA PILA UTILIZANDO ARREGLOS "<<endl;
        cout <<  "   SELECCIONE LA OPERACION CON PILAS "  << endl<< endl;
        cout <<  "   INSERTAR UN DATO EN LA PILA    (1)"  << endl;
        cout <<  "   EXTRAER UN DATO DE LA PILA     (2)"  << endl;
        cout <<  "   DESPLEGAR EL ESTADO DE LA PILA (3)"  << endl;
        cout <<  "   SALIR DEL PROGRAMA             (4)"  << endl;
        cout <<  " OPCION SELECCIONADA??  " ;
        cin >> select ;
        switch(select)
         {
           case '1':   //inserción de un dato en la pila
            cout << "\n \n TECLEA EL DATO QUE SERA INSERTADO EN LA PILA : ";
            cin >> datoen;
            exito =insertar(datoen, &tope);
            if( exito == 0)  cout <<" \n  !!! LA INSERCCION FUE CORRECTA !!!";
            system ("pause") ; break;
          case '2': // extracción de un dato de la pila
            exito = extraer (&datosal,&tope);
            if(exito == 0){setprecision(14.5); cout << "DATO EXTRAIDO = " << datosal;}
            cout << endl;
            system ("pause");
            break;
          case '3': // desplega el arreglo que contiene la pila
           system ("cls");
           cout <<"\n  EL ESTADO DE LA PILA ES EL SIGUIENTE ";
           cout <<endl<< "   POSICION          VALOR"<< endl;
           if (tope < 0)
            { cout <<"\n  !!!! LA PILA ESTA VACIA !!!!"<<endl;
             system("pause"); break;}
           for(i = tope; i>=0 ; i--)printf("\n     %4i      %12.4f",i,pila[i]);
           cout << endl; system ("pause");
           break;
          case '4': // opción de salida
            cout << endl<< " !!! HASTA PRONTO  !!!! " ;
            goto fin;
         default:
{cout << endl<< " *******ERROR  LA OPCION: " << select
     << " no existe ****"; getch(); break; }
         }
      }
     fin:
     return 0; system("pause"); // termina función principal
      }
     int insertar (float dato, int *tope)
      {
        if(*tope >= (limite-1))
     
         {
          cout << "\n LA PILA ESTA LLENA, NO SE PUDO INSERTAR EL NUEVO DATO";
          return -1;
         }
       (*tope)++;      
       pila[(*tope)]= dato;  
       return 0;
      }

      int extraer( float *dato, int *tope)
       {
        if(*tope < 0)
          {
            cout <<endl<< "\n  LA PILA ESTA VACIA, NO SE PUEDEN EXTRAER ELEMENTOS ";
            return -1;
          }
          (*dato) = pila[ (*tope)];
          pila [(*tope)] = 0;
          (*tope)--;                  
          return 0;
        }







y tengo que hacer exactamente lo mismo pero con este:
#include <stdlib.h>
  #include <stdio.h>
  #include <conio.h>
  #include <iostream>
  #include <iomanip>
  #include <string.h>
  int insertar( float datoen, int *tope );
  int extraer (float *datosal, int *frente, int *tope);
  int depurar(int *tope, int *frente);
  /* DEFINICION DE VARIABLES */
  int i,n,m, limite;
  #define limitet 30
  float cola [ limitet];
  using namespace std;
  int main()
   {
     int i, posi, exito, frente;
     char select;
     float datoen, datosal;
     posi = -1; frente = -1;
     cout << " DE QUE TAMAÑO QUIERES EL ARREGLO  EL DIA DE HOY (maximo 30)";
     cin >> limite;
     inicio:
     cout.setf(ios::fixed);
     system("CLS");
     cout <<"\n PROGRAMA QUE SIMULA UNA COLA UTILIZANDO ARREGLOS \n ";
     cout <<"    SELECCIONE LA OPERACION QUE DESEA \n\n";
     cout <<"    INSERTAR UN DATO        (1) \n";
     cout <<"    EXTRAER UN DATO         (2) \n";
     cout <<"    DESPLEGAR LOS DATOS     (3) \n";
     cout <<"    DEPURAR EL ARREGLO      (4) \n";
     cout <<"    SALIR DEL PROGRAMA      (5) \n";
     cout <<"       OPCION SELECCIONADA??";
     select = getch();
     switch(select)
       {
        case '1':   //inserción de un dato en la cola                
          if(frente > 0 && posi==(limite-1)) depurar(&posi,&frente);
          exito =insertar(datoen, &posi);
          if( exito == 0)  cout << " \n  !!! LA INSERCCION FUE CORRECTA !!!";
          if(frente==-1) frente =0;
          getche();
          break;
        case '2': // extracción de un dato de la cola
          exito = extraer (&datosal, &frente, &posi);
          if(exito == 0)
   {
     cout<< "\n\n EL DATO EXTRAIDO ES: "
        << setprecision (4) <<datosal;
             getche();
   }
          break;
        case '3': // desplega el arreglo que contiene la cola
          system ("cls");
          cout << "           ESTRUCTURA TIPO COLA "<<endl;
          cout <<"\n  EL ESTADO DEL ARREGLO  ES EL SIGUIENTE \n ";
          cout <<endl<< " POSICION" << "       VALOR \n";
          if (posi < frente || frente <0 )
           {
    cout << "\n  !!!! LA COLA ESTA VACIA \n!!!!" ;
    system("pause");
break;
   }
          for(i = posi; i>= frente ; i--)
          cout <<"\n     "<< i << "        "
       <<setprecision(4)<<cola[i];
          getche();
          break;
        case '4': // opción para depurar el arreglo
          depurar(&posi,&frente);
          getche();
          break;
        case '5': // opción de salida
          cout << " \n !!! HASTA PRONTO  !!!! " ;
          getche();
          return 0; // salida del programa
        default :
        cout << " \n ******error en numero de opcion******"<<endl;
        system ("pause"); break;        
       }
        goto inicio;        
   } // termina función principal
     int insertar (float dato, int *tope)
      {
       if(*tope >= (limite-1))
        {
          cout << "\n EL ARREGLO ESTA LLENO, NO SE PUEDE INSERTAR EL DATO";
          return -1;
        }
       cout<< "\n \n TECLEA EL DATO QUE SERA INSERTADO : ";
       cin >> dato;
       (*tope)++;
       cola[*tope]= dato;
       return 0;
      } // FIN DE FUNCION INSERTAR
     int depurar(int *tope, int *frente)
      {
        int i,j;
        j=0;
        for (i=(*frente); i<= (*tope); i++ )
        { cola [j] = cola [i] ;
  j++;
}
        (*tope) = (*tope)- (*frente);
        (*frente) = 0;
        cout <<"\n  EL ARREGLO HA SIDO DEPURADO; SE OCUPARON LOCALIDADES ";
        cout <<"\n  VACIAS POR LA EXTRACCIÒN DE DATOS DE LA COLA";
        return 0;
      } // FIN DE FUNCION DEPURAR
    int extraer( float *dato, int *frente, int *tope)
       {
        if(*tope < (*frente) ||(*frente)<0 )
          {
            cout <<"\n  EL ARREGLO ESTA VACIO, NO SE PUEDEN EXTRAER DATOS ";
           getch(); return -1;
          }
          (*dato) = cola[ (*frente)];
          cola [(*frente)] = 0;
          (*frente)++;
          return 0;
       }




(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)