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)
#include <iostream>
using namespace std;
const int N=1000;
typedef int VectorC[N];
void llegirPremiats(VectorC& numeroP,VectorC& numeroL)
{
int i=0;
while(numeroP[i]!=-1){
cin>>numeroP[i];
cout<<numeroP[i]<<endl;
i=i+1;
}
i=0;
cout<<"ok1"<<endl;
while(numeroL[i]!=-1){
cin>>numeroL[i];
cout<<numeroL[i]<<endl;
i=i+1;
}
cout<<numeroL[4]<<"ok1"<<endl;
}
void comparar(VectorC numeroP,VectorC numeroL)
{
int i=0,j=0;
cout<<"ok2"<<endl;
while(numeroP[i]!=-1){
while(numeroL[j]!=-1){
cout<<"ok"<<endl;
if(numeroP[i]==numeroL[j])
cout<<numeroP[i];
else
j=j+1;
}
j=0;
i=i+1;
}
cout<<"bfddf"<<endl;
}
int main()
{
VectorC numeroP,numeroL;
llegirPremiats(numeroP,numeroL);
cout<<"ok4"<<endl;
comparar(numeroP,numeroL);
}
supongo que en el bucle 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
Cita de: 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 :)
CitarTal 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:
void llegirPremiats(VectorC& numeroP,VectorC& numeroL)
{
int i=-1;
do{
i=i+1;
cin>>numeroP[i];
cout<<numeroP[i]<<endl;
}while(numeroP[i]!=-1);
cout<<"ok1"<<endl;
i=-1;
do{
i=i+1;
cin>>numeroL[i];
cout<<numeroL[i]<<endl;
}while(numeroL[i]!=-1);
cout<<numeroL[4]<<"ok11"<<endl;system ("pause");
}
Saluditos!.
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:
int i;
int aux;
// ...
for (i = 0; cin >> aux && aux != -1; i++){
numeroP[i] = aux;
cout << numeroP[i] << endl;
}
// El numero de valores almacenados es i
Un saludo