Modulo distinguir letras de numeros

Iniciado por grandanh, 14 Febrero 2014, 17:57 PM

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

grandanh

Hola, estoy haciendo un programa y le pido al usuario que ingrese un valor de tipo int. El problema es que si el usuario introduce una letra,  el programa no va. Me gustaría que me ayudarais a hacer un modulo que en el caso de que el usuario introduzca una letra le envíe un mensaje de error, pero que no vuelva a pedirle el int,

Gracias :D

Gh057

Hola grandanh, sería como una excepción... el manejo de excepciones en C no está implementado como en Java, puedes hacer módulo que verifique mediante una rutina if...  o con el operador ternario ? si es inválido el ingreso cierre la aplicación... en realidad dicho modulo lo implementaría con una rutina do ... while para forzar la ejecucción en un bucle hasta que el ingreso sea el correcto, pero no es lo que consultabas... Saludos.
4 d0nd3 1r4 3l gh057? l4 r3d 3s 74n v4s74 3 1nf1n1t4...

rir3760

Cita de: grandanh en 14 Febrero 2014, 17:57 PMestoy haciendo un programa y le pido al usuario que ingrese un valor de tipo int. El problema es que si el usuario introduce una letra,  el programa no va.
Lo primero que debes indicar es el lenguaje de programación que estas utilizando.

En el caso de C debes verificar el valor de retorno de la función de conversión (scanf/fscanf directamente o bien fgets + sscanf o strtol), en el caso de C++ puedes verificar el resultado de la operación "cin >> variable".

Y en ambos casos debe descartar la linea si esta no es valida (un bucle en C e ignore/sync en C++).

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

grandanh

Creía que el foro era solo de C++, fallo mío.

Dices que puedo verificar el resultado, pero como lo verificaría para diferencia de letras o numero/s?

gracias.

rir3760

Un ejemplo sencillo:
Código (cpp) [Seleccionar]
#include <iostream>
using std::cin;
using std::cout;
using std::endl;

int main()
{
   cout << "Introduce un numero: ";
   
   int num;
   if (cin >> num)
      cout << "OK" << endl;
   else
      cout << "Entrada no valida" << endl;
   
   return 0;
}


Pero le falta verificar si el resto de la linea solo es espacio blanco (para evitar que entradas como "123JKL" se tomen como validas).

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

fary

Aquí te dejo un ejemplo que he hecho, funciona solo con números de una cifra:

Código (cpp) [Seleccionar]
#include <iostream>

using namespace std;

int main()
{
    char _numero = NULL;

    cout << "Introduce un numero: ";
    cin >> _numero;

    int numero = (int)(_numero-0x30);

    if (numero < 0x0 || numero > 0x9)
    {
        cout << endl <<"Error, el digito intrucido no es un numero" << endl;

        return 1;
    }

    cout << "El numero introducido es: " << numero << endl;
    return 0;
}
Un byte a la izquierda.

grandanh

Cita de: mDrinky en 14 Febrero 2014, 18:36 PM
Aquí te dejo un ejemplo que he hecho, funciona solo con números de una cifra:

Código (cpp) [Seleccionar]
#include <iostream>

using namespace std;

int main()
{
    char _numero = NULL;

    cout << "Introduce un numero: ";
    cin >> _numero;

    int numero = (int)(_numero-0x30);

    if (numero < 0x0 || numero > 0x9)
    {
        cout << endl <<"Error, el digito intrucido no es un numero" << endl;

        return 1;
    }

    cout << "El numero introducido es: " << numero << endl;
    return 0;
}


Gracias, pero necesitamos que funcione con números de más cifras.

Cita de: rir3760 en 14 Febrero 2014, 18:23 PM
Un ejemplo sencillo:
Código (cpp) [Seleccionar]
#include <iostream>
using std::cin;
using std::cout;
using std::endl;

int main()
{
   cout << "Introduce un numero: ";
   
   int num;
   if (cin >> num)
      cout << "OK" << endl;
   else
      cout << "Entrada no valida" << endl;
   
   return 0;
}


Pero le falta verificar si el resto de la linea solo es espacio blanco (para evitar que entradas como "123JKL" se tomen como validas).

Un saludo

Ese módulo funciona a la perfección, pero cuando tratamos de llevarlo a nuestro código no funciona correctamente, aquí te dejo el módulo en cuestión:

void editSong(Collection &collection){
 
  int  buscado, encontrado, eleccion, cont=0, numero;
   
   for(unsigned int i=0;i<collection.songs.size();i++){
     printSong(collection.songs[i]);
   }
   
   cout<<"Select song:"<<endl;
   if(cin>>buscado){ //si es un numero tiene que hacer todo esto
      encontrado=findIdSong(collection, buscado);
      if(encontrado==-1){
cout<<"Error: Unknown song "<<buscado<<endl;
    }
    else{
      do{
  cout<<"Edit (1-Title, 2-Artist, 3-Album, 4-Genre, 5-Url):"<<endl;
  cin>>eleccion;
  cin.get();
  switch(eleccion){
    case 1:
      cout<<"Title: ";
      getline(cin, collection.songs[buscado-1].title);
      break;
    case 2:
      cout<<"Artist: ";
      getline(cin, collection.songs[buscado-1].artist);
      break;
    case 3:
      cout<<"Album: ";
      getline(cin, collection.songs[buscado-1].album);
      break;
    case 4:
      cout<<"Genre: ";
      getline(cin, collection.songs[buscado-1].genre);
      break;
    case 5:
      cout<<"Url: ";
      getline(cin, collection.songs[buscado-1].url);
      break;
    default: cout<<"Error: Unknow option"<<endl;
  }
  }while(eleccion!=1 && eleccion!=2 && eleccion!=3 && eleccion!=4 && eleccion!=5);
}
   }
   else{ //si no es un numero mostrar este mensaje de error y vovler a mostrar el menu (otro módulo)
     cout<<"No results"<<endl;
   }
}


Si quieres que te enseñe el código entero dímelo, pero es bastante mas largo.

leosansan


Creo que presuponer que si cin no es uno tiene que ser menos uno, no sé yo.

De todas formas tal como te apuntaba rir3760 el método tiene entre otros el inconveniente que si se introduce una cadena como 12as el cin toma el 12 como número.

Creo más seguro declarar otra variable buscado_char como char y comprobar en una función, más que nada para que sea más modular el código, que todos sus caracteres son numéricos. Esto se puede hacer con la función isdigit o a pelo:


Código (cpp) [Seleccionar]

/**********    FUNCION COMPRUEBA ENTERO   *************/
int comprobar_cadena_como_numero (char cadena[100]){
    for (int i=0;cadena[i];i++){
      if (cadena[i]<'0' || cadena[i]>'9'){
            return 1;
        }
    }
    return 2;
}
/********************************************************/
  ....................
  cout<<"Select song:"<<endl;
  char buscado_char[100];
  cin>>buscado_char;
  if (comprobar_cadena_como_numero(buscado_char)==2){
    buscado=atoi(buscado_char);//si es un numero entero tiene que hacer todo esto
    encontrado=findIdSong(collection, buscado);
    }
  else
    cout<<"Error: Unknown song "<<buscado<<endl;
  ........................................


¡¡¡¡ Saluditos! ..... !!!!

:rolleyes: ;) ;) ;) :rolleyes:

Sefean

#8
Hola, soy el compañero de practicas del creador del tema, lo que pasa que ahora estoy solo por eso me he creado esta cuenta.

Hemos estado probando todo lo que nos habéis sugerido (y alguna que otra cosa mas) y no conseguimos hacer que funcione, así que tras probar mil cosas me he dado cuenta que al ejecutar este programilla:
#include <iostream>

using namespace std;

int main(){

int numero;

cout<<"Numero: "<<endl;
cin>>numero;
cout<<"N: "<<numero<<endl;

return 0;
}


Si en lugar de introducir un número introduces una letra, siempre recibes el valor 0, así que lo he intentado poner en mi código a ver si funcionaba, pero sigue fallando:

void editSong(Collection &collection){
 
 int encontrado, eleccion, buscado;  
 
  for(unsigned int i=0;i<collection.songs.size();i++){
    printSong(collection.songs[i]);
  }
 
  cout<<"Select song:"<<endl;
  cin>>buscado;
  if (buscado!=0){
  encontrado=findIdSong(collection, buscado);
  if(encontrado==-1){
cout<<"Error: Unknown song "<<buscado<<endl;
   }
   else{
     do{
 cout<<"Edit (1-Title, 2-Artist, 3-Album, 4-Genre, 5-Url):"<<endl;
 cin>>eleccion;
 cin.get();
 switch(eleccion){
   case 1:
     cout<<"Title: ";
     getline(cin, collection.songs[buscado-1].title);
     break;
   case 2:
     cout<<"Artist: ";
     getline(cin, collection.songs[buscado-1].artist);
     break;
   case 3:
     cout<<"Album: ";
     getline(cin, collection.songs[buscado-1].album);
     break;
   case 4:
     cout<<"Genre: ";
     getline(cin, collection.songs[buscado-1].genre);
     break;
   case 5:
     cout<<"Url: ";
     getline(cin, collection.songs[buscado-1].url);
     break;
   default: cout<<"Error: Unknow option"<<endl;
   break;
 }
 }while(eleccion!=1 && eleccion!=2 && eleccion!=3 && eleccion!=4 && eleccion!=5);
}
  }
  else{ //si no es un numero mostrar este mensaje de error y vovler a mostrar el menu
    cout<<"No results"<<endl;
  }
}


Aquí os dejo mi código entero por si a algún alma caritativa quiere echarle un ojo.

#include <iostream>
#include <vector>
#include <fstream>

using namespace std;

typedef struct
{
 int id; // El identificador de una nueva cancion debe ser igual a idNextSong
 string title;
 string artist;
 string album;
 string genre;
 string url;
} Song;

typedef struct
{
 vector<Song> songs;
 int idNextSong;  // Cada vez que se anyada una cancion a la coleccion, incrementar idNextSong
} Collection;


// Función para inicializar los valores de la colección
Collection createCollection();

//rellenar datos cancion
Song demandSong();

//comprobar cancion
bool isSongInCollection(const Collection &collection, Song song);

//añadir cancion
bool addSong(Collection &collection);

//imprimir canciones
void printSong(Song song);

//buscar y mostrar canciones
bool showCollection(const Collection &collection);

//encontrar ir
int findIdSong(const Collection &collection, int id);

//editar la cancion
void editSong(Collection &collection);

//borrar la cancion
void deleteSong(Collection &collection);

//prueba
bool Comprobarnumero(int numero);

// Implementar resto de funciones

int main()
{
 Collection collection=createCollection();
 
 
 char opcion;
 
   do{
     cout<<"--------------------------------"<<endl;
     cout<<"----------- MiniTunes ----------"<<endl;
     cout<<"--------------------------------"<<endl;
     cout<<"1- Add song"<<endl;
     cout<<"2- Edit song"<<endl;
     cout<<"3- Delete song"<<endl;
     cout<<"4- Show collection"<<endl;
     cout<<"5- Manage playlist"<<endl;
     cout<<"6- Import iTunes JSON data"<<endl;
     cout<<"7- Export playlist to XSPF"<<endl;
     cout<<"8- Save data"<<endl;
     cout<<"9- Load data"<<endl;
     cout<<"0- Play playlist"<<endl;
     cout<<"q- Quit"<<endl;
     cout<<"Option: ";
     cin>>opcion;
     cin.get();
 
     if (opcion!='1' && opcion!='2' && opcion!='3' && opcion!='4' && opcion!='5' && opcion!='6' && opcion!='7' && opcion!='8' && opcion!='9' && opcion!='0' && opcion!='q'){
cout<<"Error: Unknown option"<<endl;
     }    
     switch (opcion){
case '1':
 addSong(collection);
 break;
case '2': editSong(collection);
 break;
case '3':
 deleteSong(collection);
 break;
case '4':
 showCollection(collection);
 break;
     }
 }while(opcion!='q');

 return 0;
}

Collection createCollection()
{
 Collection collection;
 collection.idNextSong=1;

 return collection;
}

Song demandSong(){
 
 Song song;
 
 cout<<"Title: ";
 getline(cin, song.title);  
 cout<<"Artist: ";
 getline(cin, song.artist);
 cout<<"Album: ";
 getline(cin, song.album);
 cout<<"Genre: ";
 getline(cin,song.genre);
 cout<<"Url: ";
 getline(cin, song.url);
 
 
 return song;
}

bool isSongInCollection(const Collection &collection, Song song){
 
 bool repetida=false;
 unsigned int i;
 
 for(i=0;i<collection.songs.size() && !repetida;i++){
   if(song.title==collection.songs[i].title && collection.songs[i].artist==song.artist){
     repetida=true;
   }
 }
 return repetida;  
   
}

bool addSong(Collection &collection){

 bool repetida;
 
  Song song=demandSong();
 

  repetida=isSongInCollection(collection, song);
  if (repetida==true){
    cout<<"The song "<<song.title<<" is already in the collection"<<endl;
  }
  else {
  song.id=collection.idNextSong;
  collection.songs.push_back(song);
    collection.idNextSong++;
  }
return repetida;
}

void printSong(Song song){  
   cout<<song.id<<" | "<<song.title<<" | "<<song.artist<<" | "<<song.album<<" | "<<song.genre<<endl;      
}

bool showCollection(const Collection &collection){
 
 string buscado;
 bool encontrado;
 int aux=0;
 
 cout<<"Search: "<<endl;
 getline(cin, buscado);
 

   for(unsigned int i=0;i<collection.songs.size();i++){
   
     encontrado=false;
   
     if (collection.songs[i].title.find(buscado)!=string::npos){
encontrado=true;
     }
     else if(collection.songs[i].artist.find(buscado)!=string::npos){
encontrado=true;
     }
     else if(collection.songs[i].album.find(buscado)!=string::npos){
encontrado=true;
     }
     else if(collection.songs[i].genre.find(buscado)!=string::npos){
encontrado=true;
     }
     if (encontrado==true){
printSong(collection.songs[i]);
aux++;
}
   }

 if(aux==0){
   cout<<"No results"<<endl;
 }

return encontrado;
}

int findIdSong(const Collection &collection, int id){
 
 int encontrado=-1;

 
  for(unsigned int k=0;k<=collection.songs.size();k++){
  if(id==collection.songs[k].id){
     encontrado=k+1;
     }
  }
 
   return encontrado;
}

void editSong(Collection &collection){
 
 int encontrado, eleccion, buscado;  
 
  for(unsigned int i=0;i<collection.songs.size();i++){
    printSong(collection.songs[i]);
  }
 
  cout<<"Select song:"<<endl;
  cin>>buscado;
  if (buscado!=0){
  encontrado=findIdSong(collection, buscado);
  if(encontrado==-1){
cout<<"Error: Unknown song "<<buscado<<endl;
   }
   else{
     do{
 cout<<"Edit (1-Title, 2-Artist, 3-Album, 4-Genre, 5-Url):"<<endl;
 cin>>eleccion;
 cin.get();
 switch(eleccion){
   case 1:
     cout<<"Title: ";
     getline(cin, collection.songs[buscado-1].title);
     break;
   case 2:
     cout<<"Artist: ";
     getline(cin, collection.songs[buscado-1].artist);
     break;
   case 3:
     cout<<"Album: ";
     getline(cin, collection.songs[buscado-1].album);
     break;
   case 4:
     cout<<"Genre: ";
     getline(cin, collection.songs[buscado-1].genre);
     break;
   case 5:
     cout<<"Url: ";
     getline(cin, collection.songs[buscado-1].url);
     break;
   default: cout<<"Error: Unknow option"<<endl;
   break;
 }
 }while(eleccion!=1 && eleccion!=2 && eleccion!=3 && eleccion!=4 && eleccion!=5);
}
  }
  else{ //si no es un numero mostrar este mensaje de error y vovler a mostrar el menu
    cout<<"No results"<<endl;
  }
}


void deleteSong(Collection &collection){
 
 int buscado_del, encontrado3=0;
 char sino;
 
   for(unsigned int i=0;i<collection.songs.size();i++){
    printSong(collection.songs[i]);
  }
 
   cout<<"Select song: "<<endl;
   cin>>buscado_del;
   
 
   encontrado3=findIdSong(collection, buscado_del);
   if(encontrado3==-1){
     cout<<"Error: Unknown song "<<buscado_del<<endl;
   }
   else{
     cout<<"Delete "<<collection.songs[buscado_del-1].id<<" | "<<collection.songs[buscado_del-1].title<<" | ";
     cout<<collection.songs[buscado_del-1].artist<<" | "<<collection.songs[buscado_del-1].album<<" | "<<collection.songs[buscado_del-1].genre<<"? (Y/N)"<<endl;
     cin>>sino;
     cin.get();
     if(sino=='N'){
cout<<"Song not deleted"<<endl;
     }
     else{
collection.songs.erase(collection.songs.begin()+buscado_del-1);
     }
   }
}


PD: ¿Cómo hacéis para que el código os salga en colores en el foro?

Gracias.

leosansan

Cita de: Sefean en 14 Febrero 2014, 22:54 PM

PD: ¿Cómo hacéis para que el código os salga en colores en el foro?


Elige las etiquetas de C++ en lugar de las de C.

Lo de las opciones ya funciona, aunque creo que te faltan por implementar otras funciones:


Código (cpp) [Seleccionar]

#include <iostream>
#include <vector>
#include <fstream>
#include <cstdlib>
#include <cstring>

using namespace std;

typedef struct
{
  int id; // El identificador de una nueva cancion debe ser igual a idNextSong
  string title;
  string artist;
  string album;
  string genre;
  string url;
} Song;

typedef struct
{
  vector<Song> songs;
  int idNextSong;  // Cada vez que se anyada una cancion a la coleccion, incrementar idNextSong
} Collection;


// Función para inicializar los valores de la colección
Collection createCollection();

//rellenar datos cancion
Song demandSong();

//comprobar cancion
bool isSongInCollection(const Collection &collection, Song song);

//añadir cancion
bool addSong(Collection &collection);

//imprimir canciones
void printSong(Song song);

//buscar y mostrar canciones
bool showCollection(const Collection &collection);

//encontrar ir
int findIdSong(const Collection &collection, int id);

//editar la cancion
void editSong(Collection &collection);

//borrar la cancion
void deleteSong(Collection &collection);

//prueba
bool Comprobarnumero(int numero);

// Implementar resto de funciones

int main()
{
  Collection collection=createCollection();


  char opcion[10];
  int longitud=0;

    do{
      cout<<"--------------------------------"<<endl;
      cout<<"----------- MiniTunes ----------"<<endl;
      cout<<"--------------------------------"<<endl;
      cout<<"1- Add song"<<endl;
      cout<<"2- Edit song"<<endl;
      cout<<"3- Delete song"<<endl;
      cout<<"4- Show collection"<<endl;
      cout<<"5- Manage playlist"<<endl;
      cout<<"6- Import iTunes JSON data"<<endl;
      cout<<"7- Export playlist to XSPF"<<endl;
      cout<<"8- Save data"<<endl;
      cout<<"9- Load data"<<endl;
      cout<<"0- Play playlist"<<endl;
      cout<<"q- Quit"<<endl;
      cout<<"Option: ";
      cin>>opcion;
      cin.get();
      longitud=strlen(opcion);
      if (longitud>=2 )
        opcion[0]='a';
      if (opcion[0]!='1' && opcion[0]!='2' && opcion[0]!='3' && opcion[0]!='4' &&
          opcion[0]!='5' && opcion[0]!='6' && opcion[0]!='7' && opcion[0]!='8' && opcion[0]!='9' && opcion[0]!='0' && opcion[0]!='q'){
cout<<"Error: Unknown option"<<endl;
      }
      switch (opcion[0]){
case '1':
  addSong(collection);
  break;
case '2': editSong(collection);
  break;
case '3':
  deleteSong(collection);
  break;
case '4':
  showCollection(collection);
  break;
      }
  }while(opcion[0]!='q');

  return 0;
}

Collection createCollection()
{
  Collection collection;
  collection.idNextSong=1;

  return collection;
}

Song demandSong(){

  Song song;

  cout<<"Title: ";
  getline(cin, song.title);
  cout<<"Artist: ";
  getline(cin, song.artist);
  cout<<"Album: ";
  getline(cin, song.album);
  cout<<"Genre: ";
  getline(cin,song.genre);
  cout<<"Url: ";
  getline(cin, song.url);


  return song;
}

bool isSongInCollection(const Collection &collection, Song song){

  bool repetida=false;
  unsigned int i;

  for(i=0;i<collection.songs.size() && !repetida;i++){
    if(song.title==collection.songs[i].title && collection.songs[i].artist==song.artist){
      repetida=true;
    }
  }
  return repetida;

}

bool addSong(Collection &collection){

  bool repetida;

   Song song=demandSong();


   repetida=isSongInCollection(collection, song);
   if (repetida==true){
     cout<<"The song "<<song.title<<" is already in the collection"<<endl;
   }
   else {
   song.id=collection.idNextSong;
   collection.songs.push_back(song);
     collection.idNextSong++;
   }
return repetida;
}

void printSong(Song song){
    cout<<song.id<<" | "<<song.title<<" | "<<song.artist<<" | "<<song.album<<" | "<<song.genre<<endl;
}

bool showCollection(const Collection &collection){

  string buscado;
  bool encontrado;
  int aux=0;

  cout<<"Search: "<<endl;
  getline(cin, buscado);


    for(unsigned int i=0;i<collection.songs.size();i++){

      encontrado=false;

      if (collection.songs[i].title.find(buscado)!=string::npos){
encontrado=true;
      }
      else if(collection.songs[i].artist.find(buscado)!=string::npos){
encontrado=true;
      }
      else if(collection.songs[i].album.find(buscado)!=string::npos){
encontrado=true;
      }
      else if(collection.songs[i].genre.find(buscado)!=string::npos){
encontrado=true;
      }
      if (encontrado==true){
printSong(collection.songs[i]);
aux++;
}
    }

  if(aux==0){
    cout<<"No results"<<endl;
  }

return encontrado;
}

int findIdSong(const Collection &collection, int id){

  int encontrado=-1;


   for(unsigned int k=0;k<=collection.songs.size();k++){
   if(id==collection.songs[k].id){
      encontrado=k+1;
      }
   }

    return encontrado;
}

void editSong(Collection &collection){

  int encontrado, eleccion, buscado,aux=0;;

   for(unsigned int i=0;i<collection.songs.size();i++){
     printSong(collection.songs[i]);
   }
  char buscado_char[100];
   cout<<"Select song:"<<endl;
   cin>>buscado_char;
   for (int i=0;buscado_char[i];i++){
      aux++;
      if (buscado_char[i]<'0' || buscado_char[i]>'9'){
            break;
        }
    }
    if (strlen(buscado_char)==aux){

   buscado=atoi(buscado_char);
   encontrado=findIdSong(collection, buscado);

   if(aux==2){
cout<<"Error: Unknown song "<<buscado<<endl;
    }
    else{
      do{
  cout<<"Edit (1-Title, 2-Artist, 3-Album, 4-Genre, 5-Url):"<<endl;
  cin>>eleccion;
  cin.get();
  switch(eleccion){
    case 1:
      cout<<"Title: ";
      getline(cin, collection.songs[buscado-1].title);
      break;
    case 2:
      cout<<"Artist: ";
      getline(cin, collection.songs[buscado-1].artist);
      break;
    case 3:
      cout<<"Album: ";
      getline(cin, collection.songs[buscado-1].album);
      break;
    case 4:
      cout<<"Genre: ";
      getline(cin, collection.songs[buscado-1].genre);
      break;
    case 5:
      cout<<"Url: ";
      getline(cin, collection.songs[buscado-1].url);
      break;
    default: cout<<"Error: Unknow option"<<endl;
    break;
  }
  }while(eleccion!=1 && eleccion!=2 && eleccion!=3 && eleccion!=4 && eleccion!=5);
}
   }
   else{ //si no es un numero mostrar este mensaje de error y vovler a mostrar el menu
     cout<<"No results"<<endl;
   }
}


void deleteSong(Collection &collection){

  int buscado_del, encontrado3=0;
  char sino;

    for(unsigned int i=0;i<collection.songs.size();i++){
     printSong(collection.songs[i]);
   }

    cout<<"Select song: "<<endl;
    cin>>buscado_del;


    encontrado3=findIdSong(collection, buscado_del);
    if(encontrado3==-1){
      cout<<"Error: Unknown song "<<buscado_del<<endl;
    }
    else{
      cout<<"Delete "<<collection.songs[buscado_del-1].id<<" | "<<collection.songs[buscado_del-1].title<<" | ";
      cout<<collection.songs[buscado_del-1].artist<<" | "<<collection.songs[buscado_del-1].album<<" | "<<collection.songs[buscado_del-1].genre<<"? (Y/N)"<<endl;
      cin>>sino;
      cin.get();
      if(sino=='N'){
cout<<"Song not deleted"<<endl;
      }
      else{
collection.songs.erase(collection.songs.begin()+buscado_del-1);
      }
    }
}
/**********    FUNCION COMPRUEBA ENTERO   *************/
int comprobar_cadena_como_numero (char cadena[100]){
    for (int i=0;cadena[i];i++){
      if (cadena[i]<'0' || cadena[i]>'9'){
            return 1;
        }
    }
    return 2;
}
/********************************************************/


¡¡¡¡ Saluditos! ..... !!!!