Algorithme help

Fermé
Garza - 23 nov. 2008 à 19:22
Kharec Messages postés 4146 Date d'inscription dimanche 20 avril 2008 Statut Contributeur Dernière intervention 8 mai 2011 - 23 nov. 2008 à 19:39
Bonjour,
j'ai besoin de votre aide pour un algorithme qui demande la date de naissance ( sous forme JOUR , MOIS , ANNÉE ) d'une personne , et affiche son age .

( ce que j'ai fais , j'ai demandé la date d'aujourd'hui , et la date de naissance , j'ai converti le tout en jour , j'ai fais la différence entre les dates , et j'ai divisé par 365 mais c trop long )
est ce que il y a une autre méthode ? )
merci
A voir également:

5 réponses

Kharec Messages postés 4146 Date d'inscription dimanche 20 avril 2008 Statut Contributeur Dernière intervention 8 mai 2011 509
23 nov. 2008 à 19:25
Salut,

Alors ton algo doit être compos& de plusieurs parties. L'idéal serait: Demander la date, comparer cette date avec celle d'aujourd'hui, Evaluer le temps entre ces deux dates, afficher à l'écran. Tu vois ce que je veux dire?

Cordialement
0
oui, mais comment on va avoir la date d'aujourd'hui ( sur l'énoncé on ne demande pas ça )
0
Kharec Messages postés 4146 Date d'inscription dimanche 20 avril 2008 Statut Contributeur Dernière intervention 8 mai 2011 509
23 nov. 2008 à 19:31
Si cela peut t'aider, je vais te communiquer un script qui indique au système d'exploitation la date et l'heure actuelle. Il fonctionne sur les systèmes linux. (la fameuse commande date, pour les connaisseurs)

;-))
0
Kharec Messages postés 4146 Date d'inscription dimanche 20 avril 2008 Statut Contributeur Dernière intervention 8 mai 2011 509 > Kharec Messages postés 4146 Date d'inscription dimanche 20 avril 2008 Statut Contributeur Dernière intervention 8 mai 2011
23 nov. 2008 à 19:33
#include <stdlib.h>
#include <unistd.h>
#include <time.h>

int	dmsize[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; // Indique au système le nombre de jour qu'il y a par mois
long	timbuf;
char	*cbp;


int dysize(y)
	int y;
{
	if (y % 4 == 0 && (y % 100 != 0 || y % 400 == 0))
		return 366; // Pour les années bissextiles
	return 365;
}

int
gpair()
{
	register int c, d;
	register char *cp;

	cp = cbp;
	if (*cp == 0)
		return -1;
	c = (*cp++ - '0') * 10;
	if (c<0 || c>100)
		return -1;
	if (*cp == 0)
		return -1;
	if ((d = *cp++ - '0') < 0 || d > 9)
		return -1;
	cbp = cp;
	return c + d;
}

void
gdadd(n)
{
	timbuf += n;
}

void
gmdadd(m, n)
{
	timbuf *= m;
	timbuf += n;
}

int
gtime()
{
	register int i;
	register int y, t;
	int d, h, m;
	long nt;

	t = gpair();
	if (t<1 || t>12)
		return 1;
	d = gpair();
	if (d<1 || d>31)
		return 1;
	h = gpair();
	if (h == 24) {
		h = 0;
		d++;
	}
	m = gpair();
	if (m<0 || m>59)
		return 1;
	y = gpair();
	if (y<0) {
		time(&nt);
		y = localtime(&nt)->tm_year;
	}
	if (*cbp == 'p')
		h += 12;
	if (h<0 || h>23)
		return 1;
	timbuf = 0;
	y += 1900;
	for (i=1970; i<y; i++)
		gdadd(dysize(i));
	if (dysize(i) == 366)
		dmsize[1] = 29;
	else
		dmsize[1] = 28;
	while (--t)
		gdadd(dmsize[t-1]);
	gdadd(d-1);
	gmdadd(24, h);
	gmdadd(60, m);
	gmdadd(60, 0);
	return 0;
}

int
main(argc, argv)
	int argc;
	char **argv;
{
	register char *tzn;
	char *cbuf;

	if (argc > 1) {
		cbp = argv[1];
		if (gtime()) {
			write(1, "mauvaise conversion\n", 15);
			return 1;
		}
		
		timbuf += timezone;
		
		if (localtime(&timbuf)->tm_isdst)
			timbuf -= 1 * 60 * 60;
		if (stime(&timbuf) < 0){
			write(1, "interdit\n", 14);
			return 1;
		}
	}
	time(&timbuf);
	cbuf = ctime(&timbuf);
	write(1, cbuf, 20);
	tzn = tzname[localtime(&timbuf)->tm_isdst];
	if (tzn)
		write(1, tzn, 3);
	write(1, cbuf + 19, 6);
	return 0;
}
0
vazy, mais vu que c'est juste la 1ére série d'exercice ... ça sera pas idéal
0
lol , j'ai rien pigé
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Kharec Messages postés 4146 Date d'inscription dimanche 20 avril 2008 Statut Contributeur Dernière intervention 8 mai 2011 509
23 nov. 2008 à 19:39
Cherche sur code source.com, des logiciels de ce types il y en a plein dessus avec le code, tu pourras les étudier ;-)


Cordialement
0