elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [C++] Problema con bucle en Eclipse
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [C++] Problema con bucle en Eclipse  (Leído 3,030 veces)
HijoDePuta

Desconectado Desconectado

Mensajes: 6


Ver Perfil
[C++] Problema con bucle en Eclipse
« en: 9 Agosto 2013, 17:49 pm »

Buenas de nuevo,

Abro este tema ya que es diferente del anterior y no consigo encontrar nada parecido.

El caso es que estoy trabajando con Eclipse y estoy realizando un ejercicio.

Este consiste en leer una secuencia de números hasta que vea el -1 y almacenarlos en un Array para luego ya trabajar con ellos.

Este es el código básico que tengo para no poner cosas que no interesan:

Código:
#include <iostream>
using namespace std;

const int numero = 100;
typedef int Valores[numero];



void leer_array(Valores array, int& contador)
{
int numero;

do
{
cout<< "Introduzca el valor [" << contador << "] del vector \n";
cin >> numero;
array[contador] = numero;
contador++;

}while(numero!=-1);


}


int main()
{
int contador=0;

Valores array;

leer_array(array,contador);

return 0;
}



Mi problema está en que si yo pongo esta entrada:

Citar
1 8 7 3 4 8 5 9 5 0 0 4 8 4 5 3 2 8 -1

La salida es esta:

Citar
Introduzca el valor [ 0 ] del vector
//entrada
Introduzca el valor [1] del vector
Introduzca el valor [2] del vector
...
Introduzca el valor [18] del vector
//me deja seguir metiendo valores
 

Y el problema es ese, que la consola de Eclipse me deja seguir metiendo valores pero a partir de ahí ya no sale "Introduz...". He comprobado mediante "couts" que no sale del bucle y no sé por qué es.

Estoy un poco a la desesperada y ya he probado varios valores en la condición del bucle y nada, sigue igual, en cuanto le pones el valor condición para que salga del bucle, no sale.

¿Alguna idea?

Un saludo y Gracias.


En línea

avesudra


Desconectado Desconectado

Mensajes: 724


Intentando ser mejor cada día :)


Ver Perfil
Re: [C++] Problema con bucle en Eclipse
« Respuesta #1 en: 9 Agosto 2013, 19:17 pm »

A mí me funciona bien, ¿quizás pueda ser por el eclipse? , aquí tienes mi salida:
Código:
Introduzca el valor [0] del vector
43
Introduzca el valor [1] del vector
3
Introduzca el valor [2] del vector
3
Introduzca el valor [3] del vector
3
Introduzca el valor [4] del vector
3
Introduzca el valor [5] del vector
3
Introduzca el valor [6] del vector
3
Introduzca el valor [7] del vector
3
Introduzca el valor [8] del vector
3
Introduzca el valor [9] del vector
3
Introduzca el valor [10] del vector
4
Introduzca el valor [11] del vector
3
Introduzca el valor [12] del vector
4
Introduzca el valor [13] del vector
3
Introduzca el valor [14] del vector
4
Introduzca el valor [15] del vector
2
Introduzca el valor [16] del vector
32
Introduzca el valor [17] del vector
3
Introduzca el valor [18] del vector
-1

Process returned 0 (0x0)   execution time : 9.995 s
Press any key to continue.


En línea

Regístrate en
HijoDePuta

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Re: [C++] Problema con bucle en Eclipse
« Respuesta #2 en: 9 Agosto 2013, 19:53 pm »

Vale he localizado la fuente del problema.

Después de reescribir en otro archivo el mismo código de forma aislada, he visto que funciona bien, pero es que al parecer quién causa el problema es una función que no tiene nada que ver con la entrada o la salida:

Código:

#include <iostream>
using namespace std;

const int numero = 100;
typedef int Valores[numero];

typedef int repeticion[numero];



void leerarray(Valores array, int& contador)
{
int numero;

do
{
cout<< "Introduzca el valor [" << contador << "] del vector \n";
cin >> numero;
array[contador] = numero;
contador++;
}while(numero!=-1);


}



void contar_repes(Valores array,repeticion repes,int contador)
{


for(int i=0;i<10;i++)
{
for(int j=0;j<contador;i++)
{
if(i==array[j])
{
repes[i]++;
}
}

}

for(int i=0;i<10;i++)
{

cout <<" "<< i << ":" << repes[i] << " ";

}

}

int main()
{
int contador=0;

Valores array;
repeticion repes;



leerarray(array,contador);

contar_repes(array,repes,contador);



return 0;
}

Como podéis ver ahora hay una función "Contar_repes" que lo que hace en teoría es contar los números del 0 al 9 y cuántas veces están, y se almacena en el array repes.

Por algún motivo, que esto se ejecute causa algún fallo y Eclipse no sale del bucle de la función leer_array (porque no sale, lo he comprobado) y me sigue pidiendo valores ya que la consola no finaliza el procedimiento.

No entiendo como una función posterior puede crear un problema a la anterior sinceramente.

Un saludo y gracias Avesudra por al menos probar que funcionaba, cuando lo he visto me ha subido el ánimo para seguir indagando :D
En línea

avesudra


Desconectado Desconectado

Mensajes: 724


Intentando ser mejor cada día :)


Ver Perfil
Re: [C++] Problema con bucle en Eclipse
« Respuesta #3 en: 9 Agosto 2013, 20:04 pm »

Hola buenas otra vez, el problema era un bucle infinito en la función contar repes la otra función está perfecta, fíjate que en el segundo for de la funcion contar repes concretamente en este:
Código
  1. for(int j=0; j<contador; i++)
  2. {
  3.       if(i==array[j])
  4.         {
  5.             repes[i]++;
  6.         }
  7. }
Aumentas la variable i por lo cual la variable j siempre será menor que contador y creará un bucle infinito. Aquí está tu codigo arreglado(le he puesto un par de comentarios, leete sobre todo el de inicializar los valores a 0 en la funcion contar repes, quita esa parte del codigo y mira lo que pasa):
Código
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. const int numero = 100;
  6. typedef int Valores[numero];
  7.  
  8. typedef int repeticion[numero];
  9.  
  10.  
  11.  
  12. void leerarray(Valores array, int& contador)
  13. {
  14.    /// Inicializa numero a 0, pues su contenido al principio podría ser -1 y no
  15.    /// entraría al bucle.
  16.    int numero = 0;
  17.  
  18.    do
  19.    {
  20.        cout<< "Introduzca el valor [" << contador << "] del vector \n";
  21.        cin >> numero;
  22.        array[contador] = numero;
  23.        contador++;
  24.    }while(numero != -1);
  25.  
  26.  
  27. }
  28.  
  29.  
  30.  
  31. void contar_repes(Valores array,repeticion repes,int contador)
  32. {
  33.    ///Inicializa los valores a 0 para que no salgan números extraños
  34.    ///al ser puestos por el compilador aleatoriamente.
  35.    for(int i = 0; i < 10; i++)
  36.        repes[i] = 0;
  37.  
  38.    for(int i = 0; i < 10; i++)
  39.    {
  40.        for(int j=0; j < contador; j++)
  41.        {
  42.            if(i == array[j])
  43.            {
  44.                repes[i]++;
  45.            }
  46.        }
  47.  
  48.    }
  49.  
  50.    for(int i = 0; i < 10; i++)
  51.        cout <<" "<< i << ":" << repes[i] << " ";
  52.  
  53.  
  54. }
  55.  
  56. int main()
  57. {
  58.    int contador=0;
  59.  
  60.    Valores array;
  61.    repeticion repes;
  62.  
  63.  
  64.  
  65.    leerarray(array,contador);
  66.  
  67.    contar_repes(array,repes,contador);
  68.  
  69.    return 0;
  70. }

¡Un saludo!  ;)
« Última modificación: 9 Agosto 2013, 20:12 pm por avesudra » En línea

Regístrate en
HijoDePuta

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Re: [C++] Problema con bucle en Eclipse
« Respuesta #4 en: 9 Agosto 2013, 20:14 pm »

Ay Dios que no había visto esa "i" intrusa en el segundo "for". Y mira que he repasado el programa cincuenta veces.


Muchas gracias por localizarlo, me iba a pegar un tiro ^^" Y respecto a la inicialización de variables a 0, en mi código completo está hecho así, simplemente no quería complicar la lectura y por eso no los he puesto, pero ya estaban hechos :D

Un saludo y muchas gracias ^^ Puedo seguir programando con tranquilidad jajaja
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema con bucle y VBscript
Programación Visual Basic
Webagent007 3 1,707 Último mensaje 10 Febrero 2006, 06:14 am
por Webagent007
Problema: Eclipse y Gráficos
Programación C/C++
tanisdlj 0 1,786 Último mensaje 5 Mayo 2010, 13:40 pm
por tanisdlj
Problema Bucle C
Programación C/C++
P.AGCD 4 3,925 Último mensaje 12 Julio 2011, 02:33 am
por rir3760
Tengo un problema con eclipse
Java
JackFiresoul 5 4,194 Último mensaje 2 Octubre 2011, 04:48 am
por JackFiresoul
Problema sencillo en eclipse
Java
usernovell 2 2,179 Último mensaje 15 Marzo 2013, 17:27 pm
por 1mpuls0
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines