Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: pMV2ere en 2 Diciembre 2012, 19:30 pm



Título: problema cout's
Publicado por: pMV2ere en 2 Diciembre 2012, 19:30 pm
buenas, no tengo ni idea de pq este programa no me devuelve los cout<<"ok"<<endl;
no tengo ni idea si es que mi codeblocks se ha bugeado o que :/

podeis provar a compilarlo y decirme si os sale algun "ok"? seria de mucha ayuda :)

pd: debeis introducir una sequencia como esta para iniciar el programa: 11 12 13 14 15 -1 12 14 -1(todo seguido)


Código
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. const int N=1000;
  6. typedef int VectorC[N];
  7.  
  8. void llegirPremiats(VectorC& numeroP,VectorC& numeroL)
  9. {
  10.    int i=0;
  11.    while(numeroP[i]!=-1){
  12.        cin>>numeroP[i];
  13.        cout<<numeroP[i]<<endl;
  14.        i=i+1;
  15.    }
  16.    i=0;
  17.            cout<<"ok1"<<endl;
  18.    while(numeroL[i]!=-1){
  19.        cin>>numeroL[i];
  20.        cout<<numeroL[i]<<endl;
  21.        i=i+1;
  22.    }
  23.    cout<<numeroL[4]<<"ok1"<<endl;
  24. }
  25. void comparar(VectorC numeroP,VectorC numeroL)
  26. {
  27.    int i=0,j=0;
  28.    cout<<"ok2"<<endl;
  29.    while(numeroP[i]!=-1){
  30.        while(numeroL[j]!=-1){
  31.            cout<<"ok"<<endl;
  32.            if(numeroP[i]==numeroL[j])
  33.                cout<<numeroP[i];
  34.            else
  35.                j=j+1;
  36.        }
  37.        j=0;
  38.        i=i+1;
  39.    }
  40.    cout<<"bfddf"<<endl;
  41. }
  42. int main()
  43. {
  44.    VectorC numeroP,numeroL;
  45.    llegirPremiats(numeroP,numeroL);
  46.    cout<<"ok4"<<endl;
  47.    comparar(numeroP,numeroL);
  48.  
  49. }


Título: Re: problema cout's
Publicado por: flony en 2 Diciembre 2012, 22:13 pm
supongo que en el bucle
Código:
 while(numeroP[i]!=-1){
        cin>>numeroP[i];
        cout<<numeroP[i]<<endl;
        i=i+1;
    }
la idea era que si ingresas un -1 sale del bucle?...porque no deja de cargarme datos, porque i siempre va a valer de 1 en adelante


Título: Re: problema cout's
Publicado por: leosansan en 3 Diciembre 2012, 16:35 pm
buenas, no tengo ni idea de pq este programa no me devuelve los cout<<"ok"<<endl;
no tengo ni idea si es que mi codeblocks se ha bugeado o que :/
podeis provar a compilarlo y decirme si os sale algun "ok"? seria de mucha ayuda :)
Citar
Tal como está no saldrán nunca los o.k, y el pobre Code::Blocks no tiene culpa de nada.
 Fíjate que haces por ejemplo numeroP[4]=-1 y en la condición, como hay un incremento previo de i se compara numeroP[5]!=-1, y será mucha casualidad que numeroP[5] que aún no ha sido introducido valga -1 .... lo que hace que no salgas del bucle.
Con el arreglo que te dejo ya salen ok1 y ok11, pero tienes que "ajustar" la función comparar ya que te mete en un bucle infinito:
Código
  1. void llegirPremiats(VectorC& numeroP,VectorC& numeroL)
  2. {
  3.    int i=-1;
  4.    do{
  5.        i=i+1;
  6.        cin>>numeroP[i];
  7.        cout<<numeroP[i]<<endl;
  8.  
  9.    }while(numeroP[i]!=-1);
  10.    cout<<"ok1"<<endl;
  11.    i=-1;
  12.    do{
  13.        i=i+1;
  14.        cin>>numeroL[i];
  15.        cout<<numeroL[i]<<endl;
  16.    }while(numeroL[i]!=-1);
  17.    cout<<numeroL[4]<<"ok11"<<endl;system ("pause");
  18. }
Saluditos!.


Título: Re: problema cout's
Publicado por: rir3760 en 4 Diciembre 2012, 17:15 pm
En el caso de los contadores de los bucles se debe tratar, en lo posible, de que estos almacenen un valor útil, por ejemplo el numero de elementos leídos y almacenados.

Es mejor leer el numero en una variable auxiliar y almacenarlo en el array solo si es distinto de -1:
Código
  1. int i;
  2. int aux;
  3.  
  4. // ...
  5.  
  6. for (i = 0; cin >> aux && aux != -1; i++){
  7.   numeroP[i] = aux;
  8.   cout << numeroP[i] << endl;
  9. }
  10. // El numero de valores almacenados es i

Un saludo