Saisie de chiffre en C

Résolu
noobprogrammer Messages postés 6 Date d'inscription   Statut Membre Dernière intervention   -  
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   -
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 :)


A voir également:

4 réponses

fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Ensuite il faut comparer les deux nombres pour trouver le plus grand.
if (a>b)
    printf("%d\n",...)
else 
    printf("%d\n",a);
0
Danelectro Messages postés 1737 Date d'inscription   Statut Membre Dernière intervention   371
 
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);
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Et pourquoi %i, c'est pas %d pour un int ?
Les deux mon commandant.
0
Danelectro Messages postés 1737 Date d'inscription   Statut Membre Dernière intervention   371
 
Ah ok, je savais pas merci :P c'est quoi la différence ?
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Aucune différence. Tu peux mettre indifféremment %d ou %i comme bon te semble.
0
Danelectro Messages postés 1737 Date d'inscription   Statut Membre Dernière intervention   371
 
Merci, je me coucherai moins ignorant :)
0
noobprogrammer Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
 
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 ?
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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,
0
noobprogrammer Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
 
Je vais tester ça alors, merci beaucoup pour la rapidité de vos réponses.
0
Danelectro Messages postés 1737 Date d'inscription   Statut Membre Dernière intervention   371
 
Je pense que le plus simple serait de passer par un tableau avec une boucle pour trier :P
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Danelectro,
Voir même deux boucles :P
0
noobprogrammer Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
 
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 :)
0
noobprogrammer Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
 
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 ?
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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*/  
      ...  
}  
0
noobprogrammer Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
 
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.
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
"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))
0