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:
bool verificado(int h, int m, int seg, int milesima){
if(h<0){
cout<<"Error semantico: las horas no pueden ser negativas"<<endl;
return false;
}
}
En la misma función, haz un cout antes del if, para comprobar si h es el número correcto.
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.
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.
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.
#include <iostream>
using namespace std;
void leer(int h){
cin >> h;
}
int main(){
int h;
leer(h);
cout<<h;
return 0;
}
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.
Cita de: 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.
#include <iostream>
using namespace std;
void leer(int h){
cin >> h;
}
int main(){
int h;
leer(h);
cout<<h;
return 0;
}
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:
void leer(int* h){
cin >> h;
}
...
leer(&h);
o
void leer(int& h){
cin >> h;
}
...
leer(h);
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.
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.