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
21 mai 2009 à 09:10
oui, mais je dirai plutot
printf(" un bon programmeur est %d d\'experience et %d de competences innes \n",100,1);

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

et encore une fois, pour le type de variable, je n'ai pas reflechit au type comme si ma vie en dépendait, non. Parce que sa question n'était pas là.
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
21 mai 2009 à 12:04
mais sinon pour me facilité la vie vu que le char va de -128 à 127 et que le long va de -2 147 483 648 à 2 147 483 647 je peux utiliser le long pour toutes mes variables et non le char car le long offre plus de grandeur mais sa revient au même.
Et de même pour les unsigned char int ou long je peux utiliser n'importe lequel des 3 .
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 à 13:13
Petite rectification
Le char n'est pas forcément signé par défaut. Cela dépend du compilateur.
Donc un char (sans préciser signed ou unsigned) peut aller de -127 à 127 ou de 0 à 255. Pour les autres types, ils sont signés par défaut.
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 > fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022
21 mai 2009 à 13:47
Que de précision !
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844 > HACKER 712 Messages postés 1282 Date d'inscription lundi 15 décembre 2008 Statut Contributeur Dernière intervention 10 décembre 2009
21 mai 2009 à 14:27
Et oui.
Mais bon, j'admets que c'est moins grave que dire que "%i c'est pareil que %ld" ;-))). Quoique...
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
21 mai 2009 à 12:07
oui, mais en tout cas, pour les chaines, tu verras qu'un tableau de char suffit amplement.
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
21 mai 2009 à 12:24
HACKER 712 tu connais le C par coeur ?
Tu as déjà créer des programmes utiles et les as tu publier sur des sites ?
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
23 mai 2009 à 12:27
Je n'ai pas vu cette question.

Mais bien sur que non !!!!!

Personne ne le connais par coeur, il y a trop de choses !
J'ai juste fais des trucs qui m'amusent, mais jamais de distribution... non non..
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
21 mai 2009 à 15:07
une autre question :
pour les histoires de variables :
est-ce que c'est pareil de mettre par exemple :
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
long nombreDeVies;
nombreDeVies = 5;
system("PAUSE");
return 0;
}
ou alors c'est mieux de mettre :
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
long nombreDeVies = 5;
system("PAUSE");
return 0;
}

?????
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
21 mai 2009 à 15:16
Je crois que la il s'agit de rapidité, d'efficacité, de ponctualité... Je m'égare.
Non, peu importe, si tu connais la valeur de la variable des sa création, assigne lui tout de suite sa valeur...

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
21 mai 2009 à 15:23
et quand hier tu me disais il fallait faire 18 - age ...
là aussi alors je peux le faire si je veux faire ça :
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
long nombreDeVies = 5;

printf("Vous avez %ld vies\n", nombreDeVies);
printf("attention tu as été toucher\n");
nombreDeVies = 4;
printf("Ah desole, il ne vous reste plus que %ld vies maintenant !\n\n", nombreDeVies);

system("PAUSE");
return 0;
}

comment je peux faire pour trouver une autre solution que de plutot ecrire nombreDeVie = 4 je ne pourrais pas faire un truc comme reste (reste étant un autre nom de variable) donc reste - quelque chose ??
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
21 mai 2009 à 15:26
il faut quelque chose de valable tout le temps... quelque chose qui vaut 1 de moins à chaque fois...
il faut que tu ecrives vies --;
ca s'appelle la décrémentation
il y a aussi l'incrementation, indispensable dans les boucles for !
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
21 mai 2009 à 15:32
donc si je réecris mon programme il faut que j'écrive :
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv)
{
long nombreDeVie = 5;

printf("vous avez %ld de vie\n", nombreDeVie);
printf("attention");
nombreDeVie --
printf("ha desole tu vien de perdre %ld de vie\n", nombreDeVie);
system("PAUSE");
return 0;
}

mais il y a marquer qu'il y a une erreur de syntaxe avant printf à la ligne 11 là ou j'ai rajoutter les 2 --.
et aussi il me disent je croit de rajouter un char
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
21 mai 2009 à 16:16
bon c'est pas grave mais j'ai un autre problème de malcomprehension:
par exemple ce code :
long nombre = 2;

nombre += 4; // nombre vaut 6...
nombre -= 3; // ... nombre vaut maintenant 3
nombre *= 5; // ... nombre vaut 15
nombre /= 3; // ... nombre vaut 5
nombre %= 3; // ... nombre vaut 2 (car 5 = 1 * 3 + 2)

Je ne comprend pas ces signe += , -= , pouquoi y a t-il un + ou un - devant = ?

faites un exemple svp
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
21 mai 2009 à 17:40
alors en fait, il faut un point virgule, apres vies--;

our tes exemples, += 4 est un raccourci pour ecrire
ex ::

vie += 4; est equivalent à vie = vie + 4;

c plus rapide !
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
21 mai 2009 à 19:56
ok voici mon code :
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
long nombreDeVie = 5;

printf ("vous avez %ld de vie\n", nombreDeVie);
printf ("attention\n");
nombreDeVie --;
printf ("ha desole tu viens de perdre %ld de vie\n", nombreDeVie);

system ("PAUSE");
return 0;
}

quand la console s'ouvre il y a marqué :
1/ vous avez 5 de vie
2/ attention
3/ ha desole tu viens de perdre 4 de vie

alors que mon programme par exemple je veux qu'il fasse AUTOMATIQUEMENT la soustraction de 1 en 1 genre j'ai 15 de vie je me fais touché et un toucher = moins 1 de vie alors je me retrouve à 14 et AINSI de suite...
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
21 mai 2009 à 20:27
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
21 mai 2009 à 23:09
eh bien cherche un peu, je te donnerai la reponse si tu ne trouves vraiment pas...
Tu n'auras pas toujours la reponse a tes problemes !
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
23 mai 2009 à 12:02
mais sinon par exemple je met :
printf ("comment t'appelles tu ?\n");
scanf ????
je ne sais pas comment faire pour écrire des prenom ou des nom ?
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
23 mai 2009 à 12:05
ca tu l'apprendras plus tard, mais il faut faire :

char prenom [100];

scanf("%100s", prenom);
printf("Tu t'appelles %s, je le sais !", prenom);

normalement, c plus compliqué que ca, il faudrait vider le buffer, recuperer les lettres une a une avec fgets, tout ca, mais pour toi ca suffit amplement puisque tu débutes...
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
23 mai 2009 à 12:14
char prenom[100];
scanf("%100s", prenom);

Il faut mettre "%99s", sinon pas de place pour le '\0' dans le cas d'une trop longue chaîne.
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
23 mai 2009 à 13:05
merci mais pourquoi on ne met pas de & devant prénom et est ce que prenom est une variable ?
je ne comprend pas trop
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
23 mai 2009 à 13:21
Le but de l'esperluette (&) est d'obtenir l'adresse d'une variable. Or, dans le cas d'un tableau ou d'un pointeur, nous avons déjà l'adresse. Donc l'esperluette est inutile. De plus, les types ne correspondrait pas : char** au lieu de char*.
Pour tout ce qui est non tableau et non pointeur, l'esperluette est de mise.
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
23 mai 2009 à 14:18
Mais ne t'en fait pas si tu ne comprends pas tout ca, tu auras bien le temps de le comprendre plus tard...
0
ninouhhichem Messages postés 201 Date d'inscription jeudi 21 mai 2009 Statut Membre Dernière intervention 21 juin 2009 9
23 mai 2009 à 22:11
#include <stdio.h>

main()
{
int age,r;

printf ("quel age avez vous ? \n");
scanf ("%d", &age);

if (age>=18)
printf ("vous etes majeur");
}
else if (age<18)
{
r=18-age
printf ("vous etes mineur !il ne te reste que",r);
}
else if (age <10)
{
r=10-age;
printf (" c' est dommage tu es beaucoup trop jeune ! ! il reste plus que ",r);
}

}
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
26 mai 2009 à 16:00
une autre qustion en faite j'esaie de faire nu programme qui calcule le double d'un nombre mais code blocks me di qu'il y a une erreur a chaque fois voici mon code :


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

long double (long nombreDebut)
{
return 2 * nombre;
}

int main(int argc, char *argv[])
{
long nombreEntre = 0, nombreTriple = 0;

printf("Entrez un nombre... ");
scanf("%ld", &nombreEntre);

nombreEntre = double(nombreDebut);
printf("Le double de ce nombre est %ld\n", nombreTriple);

system("PAUSE");
return 0;
}

0