/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

Programa calendario

 
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
hansolo



Registrado: 04 Oct 2004
Mensajes: 16

MensajePublicado: 08/10/2004 7:20 am
Título: Programa calendario

Problemas de parametros???? Question



#include <stdio.h>
#include <stdlib.h>

int main()
{

int diaany,mes,dia,diesmes,diesanteriors;
bool trobat,forarang;
void diespassats(int mes,int diesmes);

scanf("%d",&diaany);
mes=1;
diesmes=0;
diesanteriors=0;
trobat=false;
forarang=(diaany <= 0);



while ((!trobat)&&(!forarang)) {

diesanteriors=diesmes;
diespassats(mes,diesmes);
trobat=diaany <= diesmes;

if (!trobat) {
mes=mes+1;
}
forarang=(mes > 12);
}
if (trobat)
{
dia=(diaany-diesanteriors);
dia=scanf("%d",&dia);
printf("/");
mes=scanf("%d",&mes);
}else
printf("N");
}

void diespassats(int mes,int *diesmes) aquí me falla el parametro y no se como solucionarlo
{
if(mes==1){ diesmes=31;
}else
if (mes==2) { diesmes=59;
} else
if (mes==3) { diesmes=90;
} else
if (mes==4) { diesmes=120;
} else
if (mes==5) { diesmes=151;
} else
if (mes==6) { diesmes=181;
} else
if (mes==7) { diesmes=212;
} else
if (mes==Cool { diesmes=243;
} else
if (mes==9) { diesmes=273;
} else
if (mes==10) { diesmes=304;
} else
if (mes==11) { diesmes=334;
} else
diesmes=365;
}
Volver arriba
rir3760



Registrado: 01 Oct 2004
Mensajes: 7527
Ubicación: Mexico

MensajePublicado: 08/10/2004 2:44 pm
Título:

Si entiendo bien lo que quieres hacer entonces primero cambia el prototipo de 'diespassats' a:

void diespassats(int mes,int *diesmes);

Despues en el ciclo while cambia la llamada a 'diespassats' para pasar la direccion de diesmes (usando el operador '&'):

diespassats(mes, &diesmes);

Finalmente en la definicion de 'diespassats' usa indireccion (operador '*'):

void diespassats(int mes,int *diesmes){
if(mes==1){
*diesmes=31;
}else if (mes==2) {
*diesmes=59;
} else if (mes==3) {
*diesmes=90;
/* etc */
}

Por otra parte seria mejor que cambiaras la funcion en dos areas:

1) En lugar de retornar void seria mejor que retornara el valor de 'diesmes' y asi te evitas tratar con punteros.

2) Para calcular el numero de dias seria mejor usar un arreglo y un ciclo for.

Saludos
Volver arriba
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com