Saisie de chiffre en C

[Résolu/Fermé]
Signaler
Messages postés
6
Date d'inscription
mardi 6 mars 2012
Statut
Membre
Dernière intervention
7 mars 2012
-
Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
-
Bonjour à tous,

Je dois faire un petit programme permettant de demander la saisie de deux chiffres (a,b) et de les afficher dans l'ordre croissant.

J'ai trouvé le début mais si vous pouviez m'aider pour la suite svp...

# include <stdio.h>
# include <stdlib.h>
int main()
{
int a,b,c;
printf("Saisissez un entier, SVP\n");
scanf("%i",&a);
printf("Saisissez un autre entier, SVP\n");
scanf("%i",&b);

Merci d'avance :)


4 réponses

Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
1 776
Ensuite il faut comparer les deux nombres pour trouver le plus grand.
if (a>b)
    printf("%d\n",...)
else 
    printf("%d\n",a);
Messages postés
1723
Date d'inscription
samedi 25 février 2012
Statut
Membre
Dernière intervention
29 mars 2018
357
Pourquoi avoir déclaré c ? Et pourquoi %i, c'est pas %d pour un int ?

Sinon, comme l'a dit fiddy, il faut les comparer :

if (a>b){
printf("%d - %d",b,a);
}else{
printf("%d - %d",a,b);
Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
1 776
Et pourquoi %i, c'est pas %d pour un int ?
Les deux mon commandant.
Messages postés
1723
Date d'inscription
samedi 25 février 2012
Statut
Membre
Dernière intervention
29 mars 2018
357
Ah ok, je savais pas merci :P c'est quoi la différence ?
Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
1 776
Aucune différence. Tu peux mettre indifféremment %d ou %i comme bon te semble.
Messages postés
1723
Date d'inscription
samedi 25 février 2012
Statut
Membre
Dernière intervention
29 mars 2018
357
Merci, je me coucherai moins ignorant :)
Messages postés
6
Date d'inscription
mardi 6 mars 2012
Statut
Membre
Dernière intervention
7 mars 2012

Ah oui effectivement, je me suis trompé en rajoutant c et %i, désolé...
Merci beaucoup ça marche !

Par contre dans le cas ou on voudrait faire la même chose mais avec 3 nombres, on peut faire quelque chose comme ça ? :

if (a>b) && (b>c){
printf("%d - %d",a,b,c);
}else{
if (a>b) && (c>b){
printf("%d - %d",a,c,b);

etc...

ça supposerait qu'il faudrait refaire ce code plusieurs fois pour chaque nombres alors ?
Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
1 776
C'est exactement ça.
Je te corrige quand même la notation :
if ( (a>b) && (b>c) ) {
   ...
} else if (b<a) {
   ...
} else {
   ...
}

Lorsque tu as plein de nombre cette méthode n'est pas réalisable. Dans ce cas, on utilisera des fonctions de tri (à bulle par exemple) qui trieront le tableau.

Cdlt,
Messages postés
6
Date d'inscription
mardi 6 mars 2012
Statut
Membre
Dernière intervention
7 mars 2012

Je vais tester ça alors, merci beaucoup pour la rapidité de vos réponses.
Messages postés
1723
Date d'inscription
samedi 25 février 2012
Statut
Membre
Dernière intervention
29 mars 2018
357
Je pense que le plus simple serait de passer par un tableau avec une boucle pour trier :P
Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
1 776
Danelectro,
Voir même deux boucles :P
Messages postés
6
Date d'inscription
mardi 6 mars 2012
Statut
Membre
Dernière intervention
7 mars 2012

bah enfait, j'ai pas appris ça encore, donc je vais me débrouiller avec cette formule, après si vous avez des pistes avec la boucle, je suis preneur, si ça peut simplifier :)
Messages postés
6
Date d'inscription
mardi 6 mars 2012
Statut
Membre
Dernière intervention
7 mars 2012

Sinon est-ce que l'on peut faire ça avec un switch ?
du genre (après avoir déclaré les valeurs) :

switch (a,b,c)  
{  

case 0 : if ( (a>b) && (b>c) )   
{  
printf("%d - %d",a,b,c);break;  

case 1 : if.... 

etc ?
Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
1 776
Non, ce n'est pas possible.
Le switch ne se fait que sur une valeur et ne fonctionne pas du tout comme tu le penses.
switch (a) {  
   case 0: /*veut dire : si a vaut 0*/  
      ...  
   break; /*à ne pas oublier*/  
   case 10: /*veut dire : si a vaut 10*/  
      ...  
   break; /*à ne pas oublier*/  
   default : /*veut dire : sinon*/  
      ...  
}  
Messages postés
6
Date d'inscription
mardi 6 mars 2012
Statut
Membre
Dernière intervention
7 mars 2012

ah oui, effectivement ça aurait été trop beau sinon...Par contre j'ai encore une dernière question, désolé si ça peut sembler bête mais il faut bien débuter...

J'ai un autre problème concernant l'affranchissement de lettre, on doit afficher le tarif à partir du poids entré et je bloque à la partie où "à partir 60g et, au-delà, ça doit calculer 0,20€ par tranche de 20 grammes" . C'est la fin que je n'arrive pas à mettre en code, le début donnerait :
if (entier >= 60)...
mais après ? Merci encore.
Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
1 776
"0,20 € par tranche de 20 grammes"
Donc :
pour 60, ça fera 3*0,20.
pour 80, ça fera 4*0,20
pour 100, ça fera 5*0,20
pour 20*n, ça fera n*0,20

Avec entier=20n, tu en déduis que le montant sera entier/20*0.20 (avec entier/20 le diviseur (valeur entière))