Algorithme help

Garza -  
Kharec Messages postés 4146 Date d'inscription   Statut Contributeur Dernière intervention   -
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

5 réponses

Kharec Messages postés 4146 Date d'inscription   Statut Contributeur Dernière intervention   510
 
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
Garza
 
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   Statut Contributeur Dernière intervention   510
 
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   Statut Contributeur Dernière intervention   510 > Kharec Messages postés 4146 Date d'inscription   Statut Contributeur Dernière intervention  
 
#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
Garza
 
vazy, mais vu que c'est juste la 1ére série d'exercice ... ça sera pas idéal
0
Garza
 
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   Statut Contributeur Dernière intervention   510
 
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