Menú con funciones en C++

Iniciado por DonCuervo, 10 Marzo 2017, 16:33 PM

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

DonCuervo

Buen dia compañeros, me encuentro con el problema de querer llamar a la funcion menu, pero como aun no se declara no es posible, que acomodo tendria que darle o que solucion seria la mas eficaz?

Aca el codigo:

Código (cpp) [Seleccionar]

#include <iostream>
#include <stdlib.h>
#include <windows.h>

using namespace std;

int guardar(int tam, string arr[]){
cout << "Al guardar se perderan los datos anteriores, desea continuar s/n" << endl;
           char res;
           cin>>res;
           if(res=='s'){
           for(int i=0;i<tam; i++){
               if(arr[i]==""){
               cout<<"Ingrese valor para la posicion " << i << " del arreglo"<< endl;
               cin>>arr[i];
           }
           }
           }
           system("cls");
           menu(tam,arr);
}
int ver(int tam, string arr[]){
for(int i=0; i<tam;i++){
               if(arr[i]!=""){
                   cout<<i<<" "<< arr[i] << endl;
               }else{
               cout<<i<<" vacio"<<endl;
               }
           }
           menu(tam,arr);
}
int borrar(int tam,string arr[]){
cout << "Que numero de entrada desea borrar"<< endl;
       for(int i=0;i<tam;i++){
           cout<<i<<" "<<arr[i]<<endl;
       }
           int del;
           cin>>del;
           if(arr[del]==""){
           cout<<"Registro vacio"<<endl;
           }else{
           arr[del]="";
           cout<<"Registro Borrado"<<endl;
           }
           menu(tam,arr);

}
int buscar(int tam,string arr[]){
cout<<"Introduzca el codigo a buscar"<<endl;
string bus;
cin>>bus;
int inc=0;
do{
inc++;
}
while(arr[inc]==bus);
menu(tam,arr);
}
int menu(int tam, string arr[]){
cout << "Eliga la accion que quiera realizar:" << endl << "A.- Guardar" << endl << "B.- Ver" << endl << "C.- Buscar" << endl << "D.- Borrar" << endl << "E.- Salir" << endl;
   char ent;
   cin >> ent;
   if(ent=='a'||ent=='A'||ent=='b'||ent=='B'||ent=='c'||ent=='C'||ent=='D'||ent=='e'||ent=='E'){
       if(ent=='a'||ent=='A'){
           system("cls");
           guardar(tam,arr);
       }
       if(ent=='b'||ent=='B'){
           system("cls");
           ver(tam,arr);
       }
       if(ent=='c'||ent=='C'){
           system("cls");
           buscar(tam,arr);
       }
       if(ent=='d'||ent=='D'){
           system("cls");
           borrar(tam,arr);
           }
       if(ent== 'e' || 'E'){
           exit(0);
       }
   }else{
   cout << "Entrada no valida" << endl << "Intente de nuevo" << endl;
   Sleep(2000);
   system("cls");
   menu(tam,arr);
   }
}
int main(){
   int tam=15;
   string arr[tam];
   menu(tam,arr);
}




engel lex

para eso se usan los prototipos de funcion

int funcion1(int parametro);
void funcion2();

int main(){

//algo

}

int funcion1(int parametro){

funcion2();

}

void funcion2(){

//algo

}
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

DonCuervo


aguml

Tiene bastantes problemas estructurales. Te paso el codigo con algunas correcciones:
#include <iostream>
#include <stdlib.h>
#include <windows.h>

using namespace std;

void guardar(int tam, string arr[]){
   char res;
   cout << "Al guardar se perderan los datos anteriores, desea continuar s/n: " << endl;
   cin>>res;
   res=toupper(res);

   if(res=='S'){
       for(int i=0;i<tam; i++){
           if(arr[i]==""){
               cout<<"Ingrese valor para la posicion " << i << " del arreglo"<< endl;
               cin>>arr[i];
           }
       }
   }
}

void ver(int tam, string arr[]){
   for(int i=0; i<tam;i++){
       if(arr[i]!=""){
           cout<<i<<" "<< arr[i] << endl;
       }else{
           cout<<i<<" vacio"<<endl;
       }
   }
}

//Esto es porque si pides un numero y se introduce por ejemplo una letra...
//Pruebalo sin esto y veras que gracioso
int GetIndex(int tam){
   bool error;
   int del;
   string aux;

   do{
       cin>>aux;
       error=false;
       for(int i=0;i<aux.length();i++){
           if(!isdigit(aux[i])){
               error=true;
               break;
           }
       }
       if(!error){
           del=atoi(aux.c_str());
           if(del > tam || del < 0){
               error=true;
            }
       }
       if(error)
           cout<<"Numero incorrecto."<<endl<<"Vuelve a intentarlo: ";
   }while(error);

   return del;
}

void borrar(int tam,string arr[]){
   int del;

   for(int i=0;i<tam;i++){
       cout<<i<<" "<<arr[i]<<endl;
   }
   cout << "Que numero de entrada desea borrar: "<< endl;

   del=GetIndex(tam);

   if(arr[del]==""){
       cout<<"Registro vacio"<<endl;
   }else{
       arr[del]="";
       cout<<"Registro Borrado"<<endl;
   }
}

void buscar(int tam,string arr[]){
   string bus;
   bool encontrado=false;

   cout<<"Introduzca el codigo a buscar: ";
   cin>>bus;

   for(int i=0;i<tam;i++){
       if(arr[i]==bus){
           cout<<arr[i] << " encontrado en la posicion " << i << endl;
           encontrado=true;
       }
   }
   if(!encontrado)
       cout<<"Codigo no encontrado"<<endl;
}

int menu(int tam, string arr[]){
   char ent;
   cout << "Eliga la accion que quiera realizar:" << endl << "A.- Guardar" << endl << "B.- Ver" << endl << "C.- Buscar" << endl << "D.- Borrar" << endl << "E.- Salir" << endl;
   cout<<"Introduzca una opcion: ";
   do{
       cin >> ent;
       ent=toupper(ent);
       if(ent<'A' || ent>'E')
           cout << "Entrada no valida" << endl << "Intente de nuevo: ";
   }while(ent<'A' || ent>'E');

   switch(ent){
       case 'A':
           system("cls");
           guardar(tam,arr);
           system("pause");
           break;
       case 'B':
           system("cls");
           ver(tam,arr);
           system("pause");
           break;
       case 'C':
           system("cls");
           buscar(tam,arr);
           system("pause");
           break;
       case 'D':
           system("cls");
           borrar(tam,arr);
           system("pause");
           break;
       case 'E':
           break;
   }
   system("cls");
   return ent;
}

int main(){
   const int tam=15;
   int op;
   string arr[tam];

   for(int i=0;i<tam;i++)
       arr[i]="";
   do{
       op=menu(tam,arr);
   }while(op!='E');
}