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:
#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);
}
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
}
Gracias! Con eso resolví.
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');
}