Ayuda Programadores de EOL!!

buenas!, este post va para algun entendido ke se aburra 1 poco [sonrisa] (se ke es 1 chorrada de programa pero eske estoy obcecadisimo):(

tengo hecho este codigo (C++), y compila a la perfeccion y se ejecuta, tu le pasas el numero y lo hace todo perfectamente...
pero me muestra x pantalla esto:

"

su numero puede descomponerse como producto de:

Presione una tecla para continuar....
"
es decir, no muestra los numeros primos:S el codigo es este:

#include <iostream>
#include <vector>
using namespace std;


bool multiplo(int num1, int num2)
{
if((num1%num2)!=0)
return false;
else
{
num1=(num1/num2);
return true;
}
}


int main()
{
vector <int> v;
v[2,3,5,7,11,13,17];
unsigned int valor;
vector <int> vacio;
int pos;

cout<<"dame 1 numero positivo para descomponer"<<endl;
cin>>valor;

if((valor==0)||(valor==1))
cout<<"no se puede descomponer"<<endl;

else
{
for(int i=0; i<v.size(); i++)
{
if(multiplo(valor,v[i])==true)
{
vacio.push_back(v[i]);
pos++;
}
}

cout<<"su numero puede descomponerse como producto de: ";
for(int i=0; i<pos; i++)
{
cout<<vacio[i]<<" ";
}
cout<<endl;
cout<<endl;
}
system("pause");
return 0;
}

gracias! :)
Inicializa la variable pos:

int pos = 0;


EDIT:
De todas maneras no hace falta que lleves aparte la cuenta de los elementos que metes en el vector vacio, ya que el propio vector almacena esta información y puedes obtenerla con el método size()
También puedes usar un iterador

for(int i=0; i<vacio.size(); i++)
{
   cout<<vacio[i]<<" ";
}


for (vector<int>::iterator iter = vacio.begin(); iter != vacio.end(); iter++ )
{
   cout << *iter << " ";
}
Buenas, cuando te pasen estas cosas prueba a usar el debugger, le pones algunos break points y ves como va evolucionando la traza y el valor que van tomando las variables, así ves el fallo rápido.
ni idea de que es el debugger...
de lo de pos y el v.size() ya lo corregi (gazapo xD, me dio x pensar en forma standard y no STL) pero no esta ahi el tema..:-(
donde me parece que falla es al intentar mostrar el vector al final, porque el "cout" anterior de "su numero puede descomponerse...." me lo muestra, pero no se por qué!! cawento
Haz caso al mensaje de más arriba e inicializa la variable pos :-)
Hay una cosilla que no entiendo, como metes en el vector 'v' los valores? te deja declararlos así?

Yo he modificado parte, y me funciona:

int main()
{
   vector <int> v;
   v.push_back(2);
   v.push_back(3);
   v.push_back(5);
   v.push_back(7);
   v.push_back(11);
   v.push_back(13);
   v.push_back(17);
   
   unsigned int valor;
   vector <int> vacio;
   
    cout<<"dame 1 numero positivo para descomponer: ";
    cin>>valor;

    if((valor==0)||(valor==1))
      cout<<"no se puede descomponer"<<endl;

    else
    {
     for(int i=0; i<v.size(); i++)
      {
       if(multiplo(valor,v[i]))
         {
           vacio.push_back(v[i]);
           //pos++;
         }
       }

    cout<<"\nsu numero puede descomponerse como producto de: ";
    for(int i=0; i< vacio.size(); i++)
    {
      cout<<vacio[i]<<" ";
     }


}
cout<< "\n";
system("pause");
}


El vector "vacio" también se puede recorrer con un iterador, como más te guste. Puesto que ambas formas funcionan aunque quizás la del iterator "mas correcta".

Yo creo que el problema era que al principio los valores no se insertaron bien.

ByEs [buenazo]
JorgeIsOnFire escribió:ni idea de que es el debugger...
de lo de pos y el v.size() ya lo corregi (gazapo xD, me dio x pensar en forma standard y no STL) pero no esta ahi el tema..:-(
donde me parece que falla es al intentar mostrar el vector al final, porque el "cout" anterior de "su numero puede descomponerse...." me lo muestra, pero no se por qué!! cawento

Si ya te lo ha dicho alsaan...

De todas formas, busca "debugger" y tu compilador en el google y aprende a utilizarlo. Es muy útil para encontrar errores "tontos" como este.

(ya que muchas veces los errores "tontos" son los más dificiles de ver)
6 respuestas