J'ai fait un programme pour vérifier si l'adresse ip est valide en contrôlant chaque octet. Puis, le programme demande combien de sous réseaux on veut, puis on affiche la liste des sous réseaux avec la classe de l'adresse, le masque réseau par défaut,l'adresse réseau et l'adresse du masque sous réseau. Il y a un problème au niveau du masque sous réseau. Si vous des idées pour corriger,je suis preneur!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
 
#include <stdio.h>
 
main()
{
      int octet1;
      int octet2;
      int octet3;
      int octet4;
      int chiffresousreseau;
      int nbr_bit=0;
      int mssr=0;
      int adrsousreseau=0;
      int masque=255;
      int tabcroi[8]={1,2,4,8,16,32,64,128};
      int i;
      int stepssr;
      int adrssr;
      int tabdecroi [8]={128,64,32,16,8,4,2,1};
      int j;
 
          printf("entrez une adresse IP:");
          scanf("%d.%d.%d.%d",&octet1,&octet2,&octet3,&octet4);
          printf("Combien de sous-reseaux voulez vous ?:");
          scanf("%d",&chiffresousreseau);
 
          if((octet1>=0)&&(octet1<=255))
          {
              printf("octet1 valide\n");
          }
          else
          {
              printf("octet1 non valide,%d\n",octet1);
          }
          if((octet2>=0)&&(octet2<=255))
          {
              printf("octet2 valide\n");
          }
          else
          {
              printf("octet2 non valide,%d\n",octet2);
          }
          if((octet3>=0)&&(octet3<=255))
          {
              printf("octet3 valide\n");
          }
          else
          {
              printf("octet3 non valide,%d\n",octet3);
          }
          if((octet4>=0)&&(octet4<=255))
          {
              printf("octet4 valide\n");
          }
          else
          {
              printf("octet4 non valide,%d\n",octet4);
          }
 
 
          if((octet1>1 && octet1<128))
          {
              for(i=0;i<=22;i++)
              {
                   if(chiffresousreseau + 2 <= tabcroi[i])
                   {
                       nbr_bit=i;
                       break;
                   }
              }
              for(j=0;j<=i-1;j++)
              {
                  mssr = mssr + tabcroi[j];
              }
              stepssr = tabdecroi[nbr_bit-1];
 
              for(adrssr=0,j=0;j<=chiffresousreseau-1;j++)
              {
                  adrssr = adrssr + stepssr;
                  printf("Adr SSR %d:%d\n",j,adrssr);
              }
 
                  printf("Votre adresse est de classe A\n");
                  printf("Le masque reseau par defaut est %d.0.0.0\n",masque);
                  printf("L'adresse reseau est %d.0.0.0\n",octet1);
                  printf("L'adresse masque sous-reseau est 255.%d.0.0\n",mssr);
              } 
 
          else if((octet1>127 && octet1<192))
           {
              for(i=0;i<=15;i++)
              {
                   if(chiffresousreseau + 2 <= tabcroi[i])
                   {
                       nbr_bit=i;
                       break;
                   }
              }
              for(j=0;j<=i-1;j++)
              {
                  mssr = mssr + tabcroi[j];
              }
              stepssr = tabdecroi[nbr_bit-1];
 
              for(adrssr=0,j=0;j<=chiffresousreseau-1;j++)
              {
                  adrssr = adrssr + stepssr;
                  printf("Adr SSR %d:%d\n",j,adrssr);
              }
 
                  printf("Votre adresse est de classe B\n");
                  printf("Le masque reseau par defaut est %d.%d.0.0\n",masque);
                  printf("L'adresse reseau est %d.%d.0.0\n",octet1);
                  printf("L'adresse masque sous-reseau est 255.255.%d.0\n",mssr);
              } 
 
 
              else if((octet1>191 && octet1<224))
              {
              for(i=0;i<=7;i++)
              {
                   if(chiffresousreseau + 2 <= tabcroi[i])
                   {
                       nbr_bit=i;
                       break;
                   }
              }
              for(j=0;j<=i-1;j++)
              {
                  mssr = mssr + tabcroi[j];
              }
              stepssr = tabdecroi[nbr_bit-1];
 
              for(adrssr=0,j=0;j<=chiffresousreseau-1;j++)
              {
                  adrssr = adrssr + stepssr;
                  printf("Adr SSR %d:%d\n",j,adrssr);
              }
 
                  printf("Votre adresse est de classe C\n");
                  printf("Le masque reseau par defaut est %d.%d.%d.0\n",masque);
                  printf("L'adresse reseau est %d.%d.%d.0\n",octet1);
                  printf("L'adresse masque sous-reseau est 255.255.255.%d\n",mssr);
              }
}