Eliminar datos de un VECTOR en C++

Iniciado por deibenK, 10 Marzo 2014, 03:58 AM

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

deibenK

Buenas gente que tal
tengo un pequeño problema y es que cuando intento eliminar el 2 o 3.. me borra siempre el 1ro alguien me colabora?
Gracias.

case 2:
                 {
                        cout << "Digite cedula que desea eliminar " ;cin >> ced;
                    while( k >(T_v-1)|| k < 0);
                    for(I=0; I<T_v; I++)                                   
                    {
                        Vec_2=Vec_2[I+1];
                    }
                        T_v--;
                    for (I = 0; I < T_v; I++)
                    {
                     cout << "\nParticipante : " << I+1 << " " << Vec_2;
                    }
               
                }break;

leosansan

Cita de: deibenK en 10 Marzo 2014, 03:58 AM
Buenas gente que tal
tengo un pequeño problema y es que cuando intento eliminar el 2 o 3.. me borra siempre el 1ro alguien me colabora?
Gracias.

Código (cpp) [Seleccionar]

           case 2:
                 {
                    cout << "Digite cedula que desea eliminar " ;cin >> ced;
                      while( k >(T_v-1)|| k < 0);
                      for(I=0; I<T_v; I++)                                   
                            Vec_2[I]=Vec_2[I+1];
                        T_v--;
                      for (I = 0; I < T_v; I++)
                           cout << "\nParticipante : " << I+1 << " " << Vec_2[I];
                   }
                break;


¿Y te borra el primero?.

Revisa ese código que has puesto.

El while te provocará un bucle infinito, si entra en él, o sencillamente no hará nada ya que la variable que lo controla, k, no varía dentro del mismo, ya que se reduce a él Creo que le faltan unas llaves al while y que va más allá de una simple instrucción, al menos tal como lo tienes.

Por otro lado la variable "ced" es la componente a eliminar y no aparece por ningún lado en el código de eliminación.

Te sobran las llaves en los for que se componen de sólo una instrucción, simplemente engorrinan es código.


Y para cuando postees el código elige las etiquetas GeSHi y toma la C++ y en medio de las etiquetas Code que aparecen "pegas" tu código. Al no hacerlo de esta manera parte del código no sale correcta, especialmente las matrices.

Revisa con cuidado lo que quieres hacer o cuelga  algo más de código para entender lo que haces.


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





deibenK

#2
Discúlpame soy nuevo y no tenia idea
Bueno logre modificarle algo pero me sigue presentando algunos problemas

Código (cpp) [Seleccionar]
void MENU_DE_OPCIONES (long Vec_2[], short T_v)
{
    int k,opt;
    short I,adic,aux,ced,encontrado=0;
   
    cout<<"\n\n1. Adicionar Participante: "<<endl;
    cout<<"2. Eliminar Participante: "<<endl;
    cout<<"3. Buscar Participante: "<<endl;
    cout<<"4. : "<<endl;
    cout<<"\nElija una opcion 1 , 2 , 3 o 4 : ";cin>>opt;
    switch(opt)
   
   
    {
           case 1:
           {
                  cout << "\ndigite cedula del nuevo participante  " ;
                  cin >> ced; 
                 while(k >(T_v-1)||k < 0);
                 T_v++;
                 for(I = T_v-1;I >= k;I--)
                    {
                        Vec_2[I+1]= Vec_2[I];
                        if( k == I )
                        Vec_2[k]= ced;       
                    }
                    for (I = 0; I < T_v; I++)
   {
      cout << "\nParticipante : " << I+1 << " " << Vec_2[I];
   }
                break;
                   
             }             
           
            case 2:
                 {
                        cout << "Digite cedula que desea eliminar " ;cin >> ced;
                   
                    for(I=0;I<T_v;I++)                                   
                    {
                        if (Vec_2[I]=ced)
                        ;
                        {
                        Vec_2[I]=Vec_2[I+1];
                        }
                    }
                        T_v--;
                    for (I = 0; I < T_v; I++)
                    {
                     cout << "\nParticipante : " << I+1 << " " << Vec_2[I];
                    }
               
                }break;



leosansan

#3
Cita de: deibenK en 10 Marzo 2014, 04:48 AM
Bueno logre modificarle algo pero me sigue presentando algunos problemas ...

¿Tú crees?, o vas probando a ver si suena la flauta.

Amigo deibenK piensa lo que escribes antes de escribir y seguro que te acaba saliendo. ¡¡¡Ánimo!!!



Código (cpp) [Seleccionar]
{
                    cout << "Digite cedula que desea eliminar " ;cin >> ced;
                    for(I=ced-1;I<T_v;i++)
                      a[I] = a[I+1];
                    T_v--;
                   for (I = 0; I < T_v; I++)
                    cout << "\nParticipante : " << I+1 << " " << Vec_2[I];
                               }break;



Y repito:

Y para cuando postees el código elige las etiquetas GeSHi y toma la C++ y en medio de las etiquetas Code que aparecen "pegas" tu código. Al no hacerlo de esta manera parte del código no sale correcta, especialmente las matrices.

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



REEDITO: Gracias por usar las etiquetas. ¿A qué ahorita está mucho más claro?.