elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Sugerencias!
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Sugerencias!  (Leído 2,198 veces)
MellaSystems

Desconectado Desconectado

Mensajes: 46



Ver Perfil
Sugerencias!
« en: 13 Marzo 2015, 03:56 am »

Tengo esta funcion para agregar un string a un vector, pero con la condicion de no  tener nombres repetidos pero me explota el programa.

Código
  1. void addNomEst(){
  2.                  system("cls");
  3.                  cout<<"\n\n\t   <<<<<<<<<<<<<<<<<<<<MENU INSERTAR>>>>>>>>>>>>>>>>>>>>>>>\n\n\n";
  4.                  string nombre;
  5.                  int PosNom= 0, j=0;
  6.                  cout<<"Digite el nombre que desea agregar: ";
  7.                  cin.ignore(256,'\n');
  8.                  cin >> nombre;
  9.                  for(it = NomEst.begin(); it != NomEst.end(); ++it){
  10.                     if((*it) == nombre){      
  11.                        PosNom++;      
  12.                           }
  13.                          } if (PosNom > 0){
  14.                        j++;
  15.                        system ("cls");
  16.                        cout << "\n\nESTE NOMBRE YA EXISTE!!!" << endl;
  17.                        cout << "\n\nFAVOR DIGITAR OTRO NOMBRE DE ESTUDIANTE DIFERENTE\n" << endl;                                          
  18.                        system("pause");
  19.                       }PosNom = 0;
  20.                         NomEst.push_back(nombre);
  21.                        if(j==1){
  22.                           NomEst.erase(it);
  23.                           vector<string>::iterator itTemp = --it;
  24.                           PosNom++;
  25.                        }
  26.                        j=0;
  27.                  system("pause");
  28.                  }


miren la imagen.



En línea

Orubatosu


Desconectado Desconectado

Mensajes: 2.515


Ver Perfil WWW
Re: Sugerencias!
« Respuesta #1 en: 13 Marzo 2015, 13:02 pm »

Hombre... no soy un experto, pero veo algunas cosas que no me cuadran, a ver si me las puedes explicar.

Asumo que es una función, a la que además no le pasas parámetros ¿?¿? Debo de suponer que NoEst la has definido como global. ¿Es así?...

Luego veo que usas iteradores, lo cual me parece estupendo... solo que no has definido el iterador dentro de la función.

Este tipo de error suele darse cuando el bucle se "sale" de los límites del objeto.

¿Debo de entender que todo lo has hecho global?... los iteradores son muy puñeteros en estas cosas, y yo al menos suelo declararlos siempre dentro de su ámbito de trabajo, ya que desaparecen fuera del mismo.

Al margen de eso, si efectivamente estás trabajando con "todo global", comentarte que es una costumbre cuestionable, ya que es una fuente de errores muy grande


En línea

"When People called me freak, i close my eyes and laughed, because they are blinded to happiness"
Hideto Matsumoto 1964-1998
ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Sugerencias!
« Respuesta #2 en: 13 Marzo 2015, 13:47 pm »

Pese a que sea correcto poner ++j y luego compararlo con 1 es poco entendible. Usa en su lugar una variable bool (o haz "j = 1;")

Luego:
Código
  1. if(j==1){
  2.    NomEst.erase(it);
  3.    vector<string>::iterator itTemp = --it;
  4.    PosNom++;
  5. }

Desde el momento en que haces push_back, el iterador 'it' puede quedar inservible. Haz en su lugar NomEst.erase(NomEst.end()-1).

El problema está mal planteado:
"Añadir al vector el valor. Si ya existía, lo elimino."

Lo lógico es:
"Si no existe el valor, añadirlo."
En línea

MellaSystems

Desconectado Desconectado

Mensajes: 46



Ver Perfil
Re: Sugerencias!
« Respuesta #3 en: 14 Marzo 2015, 01:05 am »

Gracias a ambos sus respuestas me sirvieron. Otacu me ayudaste ya que mi Iteradores de salía de rango e Iván me aclaró la lógica de mi algoritmo
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Sugerencias
Sugerencias y dudas sobre el Foro
vicecity 5 4,446 Último mensaje 19 Marzo 2004, 20:03 pm
por theskull
SUGERENCIAS
Ejercicios
soplo 8 13,363 Último mensaje 16 Julio 2009, 23:55 pm
por anigami
Sugerencias por fas ....
Multimedia
_Joselo_ 2 2,735 Último mensaje 23 Marzo 2006, 18:00 pm
por necrotemor
Sugerencias « 1 2 ... 5 6 »
Ingeniería Inversa
Shaddy 56 80,408 Último mensaje 22 Marzo 2013, 17:01 pm
por fumioli
Sugerencias
Programación C/C++
Gerik 1 2,601 Último mensaje 3 Septiembre 2010, 06:37 am
por carlitos_jajajajaja
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines