Bonjour ;
j'arrive pas a resoudre un ennance ,telque j'ai rencontre des problemes lors de la manipulation des pointeurs et de la liste lui meme ;
voici l'ennance :
Nom : tp.PNG
Affichages : 306
Taille : 57,9 Ko

et bien sure j'ai essayé de le resoudre donc voila ma solution :
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
 
 
#include <stdio.h>
#include <stdlib.h>
 
typedef int bool;
#define true 1
#define false 0
 // definir la structure AdresseIp
typedef struct  AdresseIp   Ip;
struct AdresseIp
{
    int val1;
    int val2;
    int val3;
    int val4;
};
 
 
typedef struct Machine pc;
struct Machine
{
    Ip A_Ip;
    char Nom [10];
 
    pc *nxt;
};
 
 
typedef struct Liste Liste;
struct Liste
{
    pc *premier;
};
 
//ajouter la premiere machine dans la liste
Liste *initialisation()
{
    Liste *liste = malloc(sizeof(*liste));
    pc *machine = malloc(sizeof(*machine));
 
    if (liste == NULL || machine == NULL)
    {
        exit(EXIT_FAILURE);
    }
 
     machine->A_Ip.val1 = 0;
     machine->A_Ip.val2 = 0;
     machine->A_Ip.val3 = 0;
     machine->A_Ip.val4 = 0;
     for (int i = 0; i < 10; ++i){
	         machine->Nom[i]="";
        }
    machine->nxt = NULL;
    liste->premier = machine;
 
    return liste;
 
}
 
Ip remplir_ip(Ip ip ,int *nbr1,int *nbr2,int *nbr3,int *nbr4){
 
ip.val1=*nbr1;
ip.val2=*nbr2;
ip.val3=*nbr3;
ip.val4=*nbr4;
return ip;
}
 
 
 
 
 void Ajouter_Machine(Liste *liste )
{
    /* Création du nouvel élément */
    pc *nouveau = malloc(sizeof(*nouveau));
    if (liste == NULL || nouveau == NULL)
    {
        exit(EXIT_FAILURE);
    }
    bool ok=true;
    char dec='o';
    int nombre=0;
    int ip_int [4];
    while(ok==true){
 
    	printf("Nouvel adresse Ip\n");
    	for (int i = 0; i < 4; ++i)
    	{
    		printf("enter le %d entier de cette adresse :\n",i+1);
	    	scanf("%d ",&nombre);
	    	ip_int[i]=nombre;
	    	}
	    	//afficher l'adresse
        for (int j = 0; j < 4; ++j)
        {
            printf("%d",ip_int[j]);
            printf(".");
        }
        //affecter l'adresse
    	remplir_ip(nouveau->A_Ip,&ip_int[0],&ip_int[1],&ip_int[2],&ip_int[3]);
 
        /* Insertion de l'élément au début de la liste */
        nouveau->nxt = liste->premier;
        liste->premier = nouveau;
 
     printf("vouliez vous ajouter une autre : o? oui ,n?non\n");
 
        scanf("%c",&dec);
        if (dec!='o')
        {
            printf(" ok ok \n");
        	ok=false;
        }
 
}
}
 
int main(int argc, char **argv)
{
 
    printf("Initialisation \n");
     Liste *Liste=initialisation();;
    printf("Debut :\n");
 
        //printf("entrer le nom de cette machine \n");
        //scanf("%c",chaine );
 
        Ajouter_Machine(Liste);
 
 
        printf("affichage des machine ");
 
        while(Liste!=NULL){
                char o[]="t tout le ";
           printf("%s la machine \n",&(Liste->premier->A_Ip)) ;
           Liste=Liste->premier->nxt;
        }
 
  }