Ayuda - Inconveniente con vector en C++

Iniciado por JADP, 23 Octubre 2016, 01:17 AM

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

JADP

Un cordial saludo.

Me encuentro realizando un algoritmo en el programa Falcon C++. Un parte del algoritmo trata de ingresar artículos con su respectiva cantidad, esto lo implemente y funciona perfectamente. La cuestión es que no logro hacer que no se agreguen artículos que ya existen (si se ingresa un articulo y este ya existe, el mismo no se debe guardar / almacenar en el vector). Dicha parte del algoritmo deberia de funcionar asi: si se detecta que el usuario digito un articulo y presiono la tecla enter, el algoritmo deberá detectar si dicho articulo ya existe, si existe no se deberá dejar ingresar dicho articulo porque ya existe, notificara que ya existe y procedera a solicitar el siguiente articulo.

¿Cómo podría implementar la parte de que impida almacenar articulos repetidos?


- Aportó el codigo por si se requiere


Código (cpp) [Seleccionar]
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <cstdio>

using namespace std;


vector <string> art;
vector <string> canti;
vector <string> art_cero;
string articulo, cantidad;
int can, opc, a, b, c, n;



void Uno(int cant)
{
for (int i=0; i<cant; i++)
{
cout<<endl<<endl<<" Ingrese art\241culo No."<<i+1<<":  ";
cin>>articulo;
art.push_back(articulo);
b=b+1;
cout<<endl<<" Ingrese su cantidad:  ";
cin>>cantidad;
canti.push_back(cantidad);

if (b>1)
{
for(int i=0; i<art.size(); i++)
{
   if(articulo==art[i])
{
    c=c+1;
    cout<<articulo;
    if(c>1)
   {
    cout<<endl<<"El articulo existe, no sera agregado";
art.pop_back();
canti.pop_back();
c=0;
   }    
}
}
}




}
}

void Dos(int cant)
{
if(cant==0)
{
cout<<endl<<endl<<endl<<" No existen articulos con sus cantidades, registrelos";
}
else
{
for (int i=0; i<art.size() && canti.size(); i++)
{
cout<<endl<<endl<<" Articulo:  "<<art[i]<<endl;
cout<<" Cantidad:  "<<canti[i]<<endl;
}
}
}


void Tres(int cant)
{
for (int i=0; i<art.size() && canti.size(); i++)
{
if(canti[i]=="0")
{
art_cero.push_back(art[i]);
}
}

for (int i=0; i<a; i++)
{
cout<<endl<<endl<<" "<<art_cero[i];
cout<<" Cantidad : 0"<<endl;
}
}


int main()
{
     // Se indican los ejercicios que contiene el algoritmo y su opcion o numero de acceso o ejecución
        cout<<endl<<endl<<endl<<endl<<endl<<" |-| Opciones |-|"<<endl<<endl;
        cout<<endl<<" 1) Ingresar articulos con sus respectivas cantidades";
cout<<endl<<" 2) Imprimir la lista total de art\241culos";
        cout<<endl<<" 3) Consultar articulos cuya existencia sea 0";
        cout<<endl<<" 4) Salir"<<endl<<endl;
        cout<<endl<<" Introduzca una opcion de 1 a 4:  ";
        cin>>opc;


do
    {
       switch(opc)
       {          
   case 1:
   {
    system ("cls");
   
    cout<<endl;
    printf("%c",168);cout<<" Cuantos art\241culos desea ingresar?:  ";
    cin>>can;
    Uno(can);    
cout<<" ----------------------------------------------";
return main();
break;
  }
       
           case 2:
               {
                    Dos(can);
cout<<endl<<" ----------------------------------------------";
return main();
break;
               }
                   
               case 3:
   {
    Tres(can);
cout<<" ----------------------------------------------";
return main();
break;  
   }
   
             case 4:
   {
    // Se finaliza el programa
        cout<<endl<<endl<<endl<<endl;
    exit(0);
break;
cout<<" ----------------------------------------------";
return main();
break;
   }
   default:
    // Se indica que no hay nada que ejecutar dentro de las opciones dadas
    system ("cls");
    cout<<endl<<" El numero ingresado no esta relacionado a una opci\242n"<<endl<<endl;
          cout<<" ----------------------------------------------"<<endl<<endl;
    return main();
    break;
    }
}
while(opc!=6);
cout<<endl<<endl;
}



No les pido que me realicen el código porque esa no es la idea, lo que deseo es:  ¿saber como se puede dar solución a esto, lo que explique al principio?


Gracias de antemano por vuestra atención y ayuda.