Dévision de 2 antiers

Fermé
mourad - 17 oct. 2017 à 08:57
[Dal] Messages postés 6194 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 11 octobre 2024 - 17 oct. 2017 à 10:27
Bonjour


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

int main(void) {

int a = 0;

int b = 0;

printf("Saisissez deux entiers pour effectuer la division \n");
scanf("%d%d", &a, &b);
printf("%d / %d = ", a, b);
printf("%d\n", a/b);
return EXIT_SUCCESS;
}

comment forcer l’utilisateur de ne pas choisir b=0 ???

2 réponses

Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
17 oct. 2017 à 09:08
Bonjour,

Mon C est très très lointain donc j'espère ne pas te faire une segfault ^^'
Mais sur le principe, il suffit de boucler sur le scanf tant que b = 0 (avec affichage d'un message d'erreur)

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

int main(void) {

int a = 0;
int b = 0;

while (b == 0) {
    printf("Saisissez deux entiers pour effectuer la division \n");
    scanf("%d%d", &a, &b);

    if (b == 0)
        printf("Le diviseur doit être non nul ! \n");
}
printf("%d / %d = ", a, b);
printf("%d\n", a/b);
return EXIT_SUCCESS;
} 


Xavier
0
[Dal] Messages postés 6194 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 11 octobre 2024 1 092
Modifié le 17 oct. 2017 à 10:29
Il faudrait aussi vérifier la valeur de retour de scanf, c'est à dire qu'elle retourne bien 2, pour traiter le cas où l'utilisateur saisit autre chose que des entiers, et s'occuper de vider stdin dans ce cas, pour que la boucle sur scanf proposée par Xavier fasse ce que l'on attend d'elle.

Aussi, cela serait bien d'améliorer un peu les messages à l'utilisateur pour lui dire quoi faire, et aussi ce qui est fait, qui est, en réalité, une division entière (euclidienne).

Dal
0