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.