Programme console C

Fermé
vh_77 Messages postés 207 Date d'inscription vendredi 17 août 2007 Statut Membre Dernière intervention 20 août 2009 - 20 mai 2009 à 20:05
HACKER 712 Messages postés 1282 Date d'inscription lundi 15 décembre 2008 Statut Contributeur Dernière intervention 10 décembre 2009 - 2 juin 2009 à 19:47
Bonjour, je m'entraîne depuis hier au site du zéro à faire des programmes, des petits car je veux apprendre le C.
Voici mon code et je vous expliquerais mon problème plus tard.

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

int main(int argc, char *argv[])
{
long age = 0;
printf ("quel age avez vous ? \n\n");
scanf ("%ld", &age);
if (age >=18)
{
printf ("vous etes majeur ! \n\n");
}
else if (age > 10)
{
printf ("vous ete mineur ! il ne te reste plus que 1 an\n\n");
}
else
{
printf (" c est dommage tu es beaucoup trop jeune ! ! ! \n\n");
}

system ("PAUSE");
return 0;
}

Mon problème est que je voudrais que quand par exemple la console s'ouvre :
j'entre le nombre 18 ===> il y a marquer " vous etes majeur"
j'entre le nombre 17 ===> il y a marquer "vous etes mineur ! il ne vous reste plus que 1 an"
j'entre le nombre 16====> il y a marquer"vous etes mineur ! il ne vous reste plus que 1 an"

Voila je voudrais faire en sorte par exemple si je met 16 ans il y a marquer il ne vous reste plus que 2 ans et chaque autre nombre que je taperais ce serait la même chose mais comment ?

43 réponses

HACKER 712 Messages postés 1282 Date d'inscription lundi 15 décembre 2008 Statut Contributeur Dernière intervention 10 décembre 2009 255
20 mai 2009 à 21:20
Juste un truc en passant : mettre un \n à la fin du printf pour forcer l'affichage.
Et pas besoin d'un long pour un âge, un unsigned int voire un short suffit amplement.

oui yakari, mais la c juste pour l'exemple de la condition, et puis de nos jours, on est plus à l'octet près....
Non ???
Son programme, c'est pas non plus Windows 7 !

Au fait, %i, c'est pareil que %id, et ca marche aussi
1
Bonjour,

Pour ce genre de problème effectivement, on est pas à un octet près...
Mais si on veut faire de la programmation pour construire de plus gros projets, alors il faut quand même faire attention à ce que l'on déclare. De plus il peut arriver que l'on vienne à écrire des programmes pour des architectures autre que des Pc de bureau : les systèmes embarqués qui représentent en population, bien plus que les ordinateurs classiques.
Personnellement, je fais de la programmation embarquée et scientifique, dans le premier cas, je suis amené à travailler avec des architectures qui peuvent être réduite à environ 300 octets de RAM, et dans le second cas, en scientifique, il n'est pas rare d'allouer les nombres par paquets de centaines de milliers. En conclusion, à partir d'un certain niveau de difficultés dans les projets, il faut faire attention à ce que l'on alloue et ce que l'on libère : conclusion : autant prendre de bonnes habitudes dès le début ;)


Yakari
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
21 mai 2009 à 00:53
Salut,
Au fait, %i, c'est pareil que %id, et ca marche aussi
%id ça ne marche pas. Et %ld ce n'est pas pareil que %i.
%i c'est pareil que %d. C'est tout. Si tu as une variable en long, tu dois mettre %li ou %ld.
En compilation stricte (respect des normes), tu recevras un avertissement à la compilation.
Cdlt
0
HACKER 712 Messages postés 1282 Date d'inscription lundi 15 décembre 2008 Statut Contributeur Dernière intervention 10 décembre 2009 255
20 mai 2009 à 20:44
salut !

tu peux faire un simple

long reste = 18 - age;
if(reste > 0)
printf("Il ne te reste plus que %i ans avant d'être majeur", reste);

else if(reste <= 0)
printf("C bon tu es majeur !, trace ta route !");

met bien <= car si il a 18 il est maj !
0
vh_77 Messages postés 207 Date d'inscription vendredi 17 août 2007 Statut Membre Dernière intervention 20 août 2009 2
20 mai 2009 à 20:57
tu as mi il ne te reste plus que %i
%i c'est quoi ?
0
Salut,

Juste un truc en passant : mettre un \n à la fin du printf pour forcer l'affichage.
Et pas besoin d'un long pour un âge, un unsigned int voire un short suffit amplement.

Yakari
0

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

Posez votre question
vh_77 Messages postés 207 Date d'inscription vendredi 17 août 2007 Statut Membre Dernière intervention 20 août 2009 2
20 mai 2009 à 21:05
Bon bah voila c'est bon :
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
long age = 0;
printf ("quel age avez vous ? \n\n ");
scanf ("%ld", &age);
long reste = 18 - age;
if (reste > 0)
printf ("il ne te reste plus que %ld ans avant d etre majeur\n\n", reste);
else if (reste <= 0)
printf ("C bon \n\n");
system ("PAUSE");
return 0;
}
0
vh_77 Messages postés 207 Date d'inscription vendredi 17 août 2007 Statut Membre Dernière intervention 20 août 2009 2
20 mai 2009 à 21:35
et id ces quoi car moi jutilise %ld ou %lf
0
HACKER 712 Messages postés 1282 Date d'inscription lundi 15 décembre 2008 Statut Contributeur Dernière intervention 10 décembre 2009 255
20 mai 2009 à 21:39
desolé mais je ne saurai pas te repondre, je ne m'y connais pas assez pour te repondre...
0
vh_77 Messages postés 207 Date d'inscription vendredi 17 août 2007 Statut Membre Dernière intervention 20 août 2009 2
20 mai 2009 à 21:42
comment tu ne peux pas savoir si tu utilises ?
0
HACKER 712 Messages postés 1282 Date d'inscription lundi 15 décembre 2008 Statut Contributeur Dernière intervention 10 décembre 2009 255
20 mai 2009 à 21:45
je ne sais pas les differences, mais moi jutilise %i et ca marche tres bien...

sur le SDZ, il te dient %ld eh bien moi je fais %i... c une question d'habitude.

va voir le "man printf" dans google
0
vh_77 Messages postés 207 Date d'inscription vendredi 17 août 2007 Statut Membre Dernière intervention 20 août 2009 2
20 mai 2009 à 21:52
bah je te remerci pour ta réponse d'avant.
Est-ce que tu as utiliser ta logique c'est a dire pour toi sa te sembler logique d'avoir fait 18 - age ?
et pas besoin de mettre else if (reste <= 0) car j'ai essayer sans et ça marche
0
HACKER 712 Messages postés 1282 Date d'inscription lundi 15 décembre 2008 Statut Contributeur Dernière intervention 10 décembre 2009 255
20 mai 2009 à 22:00
Est-ce que tu as utiliser ta logique c'est a dire pour toi sa te sembler logique d'avoir fait 18 - age ?


comment ca ???

si tu t'inquietes de ne pas avoir les capacités, ne t'inquietes pas, c le debut !!!
tu ne feras pas un prog sans te poser une question, et te dire, "comment ca se fait ca ???
- j'ai fait ca
- j'ai fais ci
j'ai tout fais !


et non, tu n'as pas tout fais....

C'est l'habitude !

tu aurais pu te dire, tiens je vais faire un long switch

Tu aurais pu te dire, tiens je vais faire comme ca :


if(age == 1)
printf("il te reste 17 ans avant d'etre majeur")


if(age == 2)
printf("il te reste 16 ans avant d'etre majeur")


if(age == 3)
printf("il te reste 15 ans avant d'etre majeur")


if(age == 4)
printf("il te reste 14 ans avant d'etre majeur")

et puis ca fait pas pro, tu te dis tiens je vais faire un long switch !

et puis ca non plus ca va pas...


et tu te dis, tiens c un poil trop long.....
et si on raccourcicait ? Oui mais comment ? Et la tu reflechis, et tu trouves une nouvelle solution.

Désormais tu te dis, a chaque fois que j'ai ce probleme, je ferais comme ca.


je crois que c'est comme ca que j'ai ecris cette solution, je n'ai pas reflechit, c comme ca, quand g ce probleme, je fais ca...

Ca viendra tu verras !
0
vh_77 Messages postés 207 Date d'inscription vendredi 17 août 2007 Statut Membre Dernière intervention 20 août 2009 2
20 mai 2009 à 22:05
t'es trop intelligent moi j'ai 16 ans 17 dans un mois et je trouve que je ne suis pas trop logique
0
HACKER 712 Messages postés 1282 Date d'inscription lundi 15 décembre 2008 Statut Contributeur Dernière intervention 10 décembre 2009 255
20 mai 2009 à 22:12
T'es trop intelligent

celle la on me l'a jamais faite...

bon, encore une fois, c'est NORMAL !

depuis combien de temps apprends-tu ???
0
vh_77 Messages postés 207 Date d'inscription vendredi 17 août 2007 Statut Membre Dernière intervention 20 août 2009 2
20 mai 2009 à 22:12
depuis hier et je ne comprend pas pourquoi tu as fais if (reste > 0) si tu pourrai mieux m'espliquer merci
0
HACKER 712 Messages postés 1282 Date d'inscription lundi 15 décembre 2008 Statut Contributeur Dernière intervention 10 décembre 2009 255
20 mai 2009 à 22:21
en fait, le reste vaut 18 - age

il vaut donc un nombre, positif ou non.
negatif si lutilisateur a plus de 18 car 18 - 18 = 0; non ? et 18 - 19 = -1
positif si lutilisateur a moins de 18 car 18 - 6 = 12;

donc si l'utilisateur a 18 ou plus, reste vaudra 0 ou moins.
donc je teste si ce reste vaut + de 0
pour lui dire combien il lui reste.

si ce nombre est negatif ou egal a zero, il est majeur.

donc met bien if(reste > 0)
et if(reste <= 0)

compris ???
0
vh_77 Messages postés 207 Date d'inscription vendredi 17 août 2007 Statut Membre Dernière intervention 20 août 2009 2
20 mai 2009 à 22:27
donc en faite il y a 2 condition une if pour dire a condition que le reste est plus grand que 0 celle la j'ai compris car exemple 18 - 10 = 8 donc plus grand que 0
et la deuxieme condition if pour dire reste plus petit ou egale c'est a dire 18 - 20 = -2 j'ai compris mais pourquoi le ou egale ?
0
HACKER 712 Messages postés 1282 Date d'inscription lundi 15 décembre 2008 Statut Contributeur Dernière intervention 10 décembre 2009 255
20 mai 2009 à 22:29
il y a ou egal, car si il a 18, il est majeur, mais reste vaut 0; 18-18 !!
0
vh_77 Messages postés 207 Date d'inscription vendredi 17 août 2007 Statut Membre Dernière intervention 20 août 2009 2
20 mai 2009 à 22:30
ha ok mes explication sont bonnes ?
0
HACKER 712 Messages postés 1282 Date d'inscription lundi 15 décembre 2008 Statut Contributeur Dernière intervention 10 décembre 2009 255
20 mai 2009 à 22:32
oui oui !

c bon, nhesite pas a menvoyer des mp si tu as des prob dans la suite du cours !

aplus
0
the F Messages postés 150 Date d'inscription dimanche 22 mars 2009 Statut Membre Dernière intervention 22 mars 2011 13
21 mai 2009 à 01:15
Salut
* a propos du %d ca se compose de 3 parties :
= le % ca indique au programme (disons pour le moment !!!!!!!!!!!!) qu'il est entrain de manipuler une variable (remarque q'elle existe en printf est scanf )
=2é partie :ce qui est entre % et le type (d ou s ou f ....tu le saura qqe lignes en bes ) et c'est specifique à l'ecriture sur l'ecran et ca indique le nombre de cases reserves a cette variable
= 3é partie le format que son appelation differre entre les normes (ANSI ,C99,C89) ce sont des details avences que tu peut les negliger en tant que debutant

** Ensuite concernant les declarations "yakari" a parfaitement raison : il faut avoir les bonnes bases des le debut .... tu ne saisie pas la difference entre utiliser un int ou un short en ce stade ? C'EST PARFAITEMENT NORMAL Mais (keep it on mind ) ##je parle mal francais :-) #

***printf(" un bon programmeur est %d d'experience et %d de competences innes \n",100,1);


NB : TOUTE QUESTION EST LE BIENVENU (sur le mail personel dans le profil)
:-)
0