Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: DeIMachine en 8 Noviembre 2015, 19:15 pm



Título: Pregunta sobre condicionales y booleanos.
Publicado por: DeIMachine en 8 Noviembre 2015, 19:15 pm
Hola de nuevo, tengo este problema que vuelve a ser bastante fácil:
https://gyazo.com/01dd2521958d2b9b17f32817fbbbae28

Mi problema es que en la función de la variable booleana si pongo un numero negativo no soy capaz de hacer ningun cout. Por ejemplo si pongo que las horas=-1
se me acaba el programa y no me dice nada aunque yo dentro del codigo haya puesto que me imprima en pantalla algo:
Código
  1. bool verificado(int h, int m, int seg, int milesima){
  2.    if(h<0){
  3.        cout<<"Error semantico: las horas no pueden ser negativas"<<endl;
  4.        return false;
  5.    }
  6. }
  7.  
  8.  


Título: Re: Pregunta sobre condicionales y booleanos.
Publicado por: ivancea96 en 8 Noviembre 2015, 19:31 pm
En la misma función, haz un cout antes del if, para comprobar si h es el número correcto.


Título: Re: Pregunta sobre condicionales y booleanos.
Publicado por: DeIMachine en 8 Noviembre 2015, 19:37 pm
Hago un cout<<h; para que me diga que numero habia escrito como h y siempre me devuelve 1 x), no le encuentro el sentido.


Título: Re: Pregunta sobre condicionales y booleanos.
Publicado por: ivancea96 en 8 Noviembre 2015, 19:43 pm
Bien, entonces sabes una cosa, y es que llemas a la función enviándole un 1 como primer parámetro. Eso significa que el problema viene de antes. Revisa dónde la llamas, y revisa si a la variable que le pasas como parámetro le asignas el valor correctamente.


Título: Re: Pregunta sobre condicionales y booleanos.
Publicado por: DeIMachine en 8 Noviembre 2015, 20:01 pm
He ido recortando el codigo y todavia no he encontrado la respuesta, ahora en vez de cambiarme ha  1 me lo cambia a 0 exactamente con esto.
Lo estoy repasando y repasando pero es que no hay nada, ya me estoy desquiciando jajaj, el programa empieza con la funcion void leer recibe la variable h, despues de obtenerla la imprimo en el main y me pone que es 0, es que no se que se me pasa por alto si realmente es muy pequeño el codigo y no toco na.
Código
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. void leer(int h){
  6.    cin >> h;
  7.  
  8. }
  9.  
  10.  
  11.  
  12.  
  13.  
  14. int main(){
  15.    int h;
  16.    leer(h);
  17.    cout<<h;
  18.  
  19.    return 0;
  20. }    
  21.  


Título: Re: Pregunta sobre condicionales y booleanos.
Publicado por: DeIMachine en 8 Noviembre 2015, 20:19 pm
De hecho si pregunto el valor de h en void leer me lo da bien pero al pasar a la main cambia automaticamente a 1.


Título: Re: Pregunta sobre condicionales y booleanos.
Publicado por: ivancea96 en 8 Noviembre 2015, 20:54 pm
He ido recortando el codigo y todavia no he encontrado la respuesta, ahora en vez de cambiarme ha  1 me lo cambia a 0 exactamente con esto.
Lo estoy repasando y repasando pero es que no hay nada, ya me estoy desquiciando jajaj, el programa empieza con la funcion void leer recibe la variable h, despues de obtenerla la imprimo en el main y me pone que es 0, es que no se que se me pasa por alto si realmente es muy pequeño el codigo y no toco na.
Código
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. void leer(int h){
  6.    cin >> h;
  7.  
  8. }
  9.  
  10.  
  11.  
  12.  
  13.  
  14. int main(){
  15.    int h;
  16.    leer(h);
  17.    cout<<h;
  18.  
  19.    return 0;
  20. }    
  21.  

Bien,ahí el problema es que le pasas el valor de la variable h a la función. Pero si la función modifica su propia variable h, esa modificación no va a afectar a fuera de la función. Coloca:

Código
  1. void leer(int* h){
  2.    cin >> h;
  3. }
  4. ...
  5. leer(&h);
  6.  
o
Código
  1. void leer(int& h){
  2.    cin >> h;
  3. }
  4. ...
  5. leer(h);
  6.  

De estas maneras, le pasas una referencia a tu variable "h" de main, así la función puede modificar <tu> variable, y no su variable. El tema de punteros y memoria ya lo verás si no lo viste aun.


Título: Re: Pregunta sobre condicionales y booleanos.
Publicado por: DeIMachine en 8 Noviembre 2015, 23:40 pm
Una vez más gracias, soy un poco tonto y en la main que nos daban venían declarados ya los punteros pero yo lo hice aparte y la lié porque aun no los había dado.