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
Configuration: Windows XP
Firefox 2.0.0.18

5 réponses

  1. Kharec Messages postés 4146 Date d'inscription   Statut Contributeur Dernière intervention   511
     
    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
  2. Garza
     
    oui, mais comment on va avoir la date d'aujourd'hui ( sur l'énoncé on ne demande pas ça )
    0
    1. Kharec Messages postés 4146 Date d'inscription   Statut Contributeur Dernière intervention   511
       
      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
      1. Kharec Messages postés 4146 Date d'inscription   Statut Contributeur Dernière intervention   511 > 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
  3. Garza
     
    vazy, mais vu que c'est juste la 1ére série d'exercice ... ça sera pas idéal
    0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. Kharec Messages postés 4146 Date d'inscription   Statut Contributeur Dernière intervention   511
     
    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