Introduction d'une contrainte dans un programme en C
Fermé
Lap-top
Messages postés
56
Date d'inscription
vendredi 9 décembre 2011
Statut
Membre
Dernière intervention
5 octobre 2016
-
Modifié par pijaku le 4/02/2014 à 11:50
Lap-top Messages postés 56 Date d'inscription vendredi 9 décembre 2011 Statut Membre Dernière intervention 5 octobre 2016 - 27 févr. 2014 à 09:32
Lap-top Messages postés 56 Date d'inscription vendredi 9 décembre 2011 Statut Membre Dernière intervention 5 octobre 2016 - 27 févr. 2014 à 09:32
A voir également:
- Introduction d'une contrainte dans un programme en C
- Ce programme est écrit en python. il construit un mot secret dans une variable mais il ne l'affiche pas. modifiez-le pour qu'il affiche le mot secret. exécutez-le. quel est ce mot secret ? ✓ - Forum Python
- Introduction mail anglais - Guide
- Frequence programme national ✓ - Forum Messagerie
- Fichier ouvert dans un autre programme - Guide
- Programme demarrage windows 10 - Guide
1 réponse
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 816
2 févr. 2014 à 19:04
2 févr. 2014 à 19:04
Bonjour,
et qui ressort sa classe et son adresse BROADCAST.
Pour info, ca n'existe plus depuis presque 20 ans, la notion de classe...
Sinon, pour que l'utilisateur choisit un nombre entre 0 et 255, il suffit de faire une boucle while (jusqu'à ce que le nombre soit entre 0 et 255).
Cdlt,
et qui ressort sa classe et son adresse BROADCAST.
Pour info, ca n'existe plus depuis presque 20 ans, la notion de classe...
Sinon, pour que l'utilisateur choisit un nombre entre 0 et 255, il suffit de faire une boucle while (jusqu'à ce que le nombre soit entre 0 et 255).
Cdlt,
4 févr. 2014 à 05:12
4 févr. 2014 à 07:08
Modifié par pijaku le 4/02/2014 à 11:51
#include <stdio.h> #include <stdlib.h> int main() { int a,b,c,d=0; printf("\nEntrez la valeur decimale de votre premier octet :\t"); scanf("%d",&a); printf("\nEntrez la valeur decimale de votre deuxieme octet :\t"); scanf("%d",&b); printf("\nEntrez la valeur decimale de votre troisieme octet:\t"); scanf("%d",&c); printf("\nEntrez la valeur decimale de votre quatrieme octet:\t"); scanf("%d",&d); while ((a<256 || a>=0) && (b<256 || b>=0) && (c<256 || c>=0) && (d<256 || d>=0)) { if (a<=126) { printf("\n\nVotre adresse IP est %d %d %d %d",a,b,c,d); printf("\n\nC est une adresse de classe : A\t\n"); printf("\nLe masque de reseau est : 255.0.0.0\n"); printf("\nL adresse BROADCAST est : %d 255.255.255",a); } else if (a>=128 && a<=191) { printf("\n\nVotre adresse IP est %d %d %d %d",a,b,c,d); printf("\n\nC est une adresse de classe : B\n"); printf("\nLe masque de reseau est : 255 255 0 0\n"); printf("\nL adresse BROADCAST est : %d %d 255 255",a,b); } else if (a>=192 && a<=223) { printf("\n\nVotre adresse IP est %d %d %d %d",a,b,c,d); printf("\n\nC est une adresse de classe : C\t\n "); printf("\nLe masque de reseau est : 255 255 255 0\n"); printf("\nL adresse BROADCAST est : %d %d %d 255",a,b,c); } else if (a>=224 && a<=239) { printf("\n\nVotre adresse IP est %d %d %d %d",a,b,c,d); printf("\n\nC'est une adresse de classe D pour le multicasting\n"); printf("\nLe masque du reseau est 255 255 mais il n existe pas de notion de BROADCAST"); } } printf("\n\n Erreur: entrez une valeur comprise entre 0 et 255 pour chaque octet"); printf("\n\n"); return 0; }4 févr. 2014 à 09:06
4 févr. 2014 à 22:35
De plus, attention dans ton code tu as initialisé d à 0 mais pas les autres variables. Dans ton code, ce n'est pas obligatoire mais vu que tu l'as fait pour une seule variable, je préfère préciser.
Voici ce qu'il faudrait faire (dans ce cas, il faut initialiser la variable)
Ca serait plutôt :
int a=-1; /*n'importe quel nombre en dehors de la fourchette pour qu'on rentre dans la boucle*/ while(a<0 || a>255) { printf("\nEntrez la valeur decimale de votre premier octet :\t"); scanf("%d",&a); }Je te laisse répéter ce processus pour b, c et d.
if (a<=126)
C'est plutôt a<=127 pour la classe A.
else if (a>=128 && a<=191)
Pas besoin de préciser >=128 puisque tu es dans un else if. (Sauf si tu veux vraiment exclure (à tort) le cas a=127).
Même remarque pour les autres else if.
Tu peux même parler de la classe E (a>=240) : classe réservée. Dans ce cas, un simple else (sans condition suffira).
Pour la classe D, le masque de sous-réseau que tu as mis est faux. Il est non défini.
Sinon, attention à l'indentation. Elle n'est pas bien faite.
Cdlt,