Tengo una duda.
aqui esta el main:
Por que hay que usar -> y no se puede usar "." como en:
PD: Por que siempre que el profesor usa valores como struct o variables globales en el paréntesis de la función (en este caso no hay variables globales pero en la mayoría del curso usa globales). Que diferencia hay con simplemente no ponerlas y usar el mismo código (en este caso lo entiendo por que al *pila estar dentro de la funcion main() si no pasamos el puntero por referencia despues de que acabe la funcion pila = nuevo_nodo se borraria y pila seguiria apuntando a NULL. Me refiero más a esto:
y lo mismo he visto en estructuras, por ejemplo un vector de estructura y usarlo sin declararlo en el paréntesis tipo:
Pd2: le tuve que añadir
Código (cpp) [Seleccionar]
void sacar(Nodo *&pila, int &n){
Nodo *aux = pila;
n = aux.dato;
pila = aux.siguiente;
delete aux;
}
aqui esta el main:
Código (cpp) [Seleccionar]
int main(){
Nodo *pila = NULL;
int dato;
char letra;
do{
cout<<"Digite un numero: ";
cin>>dato;
agregar(pila,dato);
do{
cout<<"\nDesea agregar otro elemento a la pila (Y/N): ";
cin>>letra;
letra = toupper(letra);
cout<<endl;
}while(letra != 'Y' && letra != 'N');
}while(letra == 'Y');
cout<<"\n\nSacando los elementos de la pila: ";
while(pila != NULL){
eliminar(pila,dato);
if(pila != NULL){
cout<<dato<<" , ";
}
else{
cout<<dato<<".\n\nYa se han eliminado todos los datos.";
}
}
cin.get();
return 0;
}
Por que hay que usar -> y no se puede usar "." como en:
Código (cpp) [Seleccionar]
#include <iostream>
using namespace std;
struct etapasCorredor{
int horas,minutos,segundos;
}nEtapas[3], *etapa = nEtapas;
void pedirDatos();
int calcularTiempo(int);
void mostrarTiempo(int);
int main(){
int cantidadEtapas = 3;
pedirDatos();
int totalTiempo = calcularTiempo(cantidadEtapas);
mostrarTiempo(totalTiempo);
cin.get();
return 0;
}
void pedirDatos(){
for(int i=0;i<3;i++){
cout<<"Digite tiempo de la etapa ["<<i<<"]: "<<endl;
cout<<"Horas: "; cin>>etapa[i].horas;
cout<<"Minutos: "; cin>>etapa[i].minutos;
cout<<"Segundos: "; cin>>etapa[i].segundos;
cout<<endl;
}
}
int calcularTiempo(int x){
int tiempo;
if(x == 0){
tiempo = etapa[x].horas*3600 + etapa[x].minutos*60 + etapa[x].segundos;
}
else{
tiempo = etapa[x].horas*3600 + etapa[x].minutos*60 + etapa[x].segundos + calcularTiempo(x-1);
}
//2-1-0 -->2 + 1 + 0;
return tiempo;
}
void mostrarTiempo(int tiempo){
int h,min,seg;
h = tiempo/3600;
min = (tiempo-h*3600)/60;
seg = tiempo-h*3600-min*60;
cout<<"\n---------------------------------\n\n";
cout<<"El tiempo total es: "<<endl;
cout<<"Horas: "<<h<<endl;
cout<<"Minutos: "<<min<<endl;
cout<<"Segundos: "<<seg<<endl;
}
PD: Por que siempre que el profesor usa valores como struct o variables globales en el paréntesis de la función (en este caso no hay variables globales pero en la mayoría del curso usa globales). Que diferencia hay con simplemente no ponerlas y usar el mismo código (en este caso lo entiendo por que al *pila estar dentro de la funcion main() si no pasamos el puntero por referencia despues de que acabe la funcion pila = nuevo_nodo se borraria y pila seguiria apuntando a NULL. Me refiero más a esto:
Código (cpp) [Seleccionar]
#include <iostream>
using namespace std;
int x = 0;
void cambiar(int&);
int main(){
cout<<"Antes: "<<x<<endl;
cambiar(x);
cout<<"Depues: "<<x<<endl;
cin.get();
return 0;
}
void cambiar(int &x){
x=10;
}
y lo mismo he visto en estructuras, por ejemplo un vector de estructura y usarlo sin declararlo en el paréntesis tipo:
Código (cpp) [Seleccionar]
void mostrar(){
cout<<prueba[3].dato; //En una función anterior he metido valores dentro de dato
}
Pd2: le tuve que añadir
Código (cpp) [Seleccionar]
cin.ignore(1,'\n');
por que si ponia "yy" se ponía en modo bucle infinito no se por qué.