Bonjour,

j'ai un problème en exécution , "une erreur de segmentation" j'arrive pas à comprendre.

j’extraie d'un fichier1 texte la première ligne qui est composée de 3 nombre et je vérifie avec une fonction calculsup combien de fois ces 3 nombres existent dans chaque ligne d'un fichier 2.

Après je passe à la deuxième ligne de fichier 1...

nbreregles : ligne de fichier 1

transaction : ligne de fichier 2

voila la fonction calculsup :
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
int calculsup ( string x, string y , string z)
 {int i=0,sup=0, t1=0,nbre, t2= 0, t3=0, d=0;
 int transaction;
 liste_transaction listtest;
  listtest.allerpremier();
 while ( d < transaction)
 {
 while (i < nbre-1)
 { if  (x == listtest.courant->premisse[i])  t1 =1;
    i++;
  }
 while (i < nbre-1)
 { if  (y == listtest.courant->premisse[i])  t2 =1;
 i++;  
  }
 
 if  (z == listtest.courant->conclusion)  t3 =1;
 
 
     if ((t1 == 1) && (t2== 1)&& (t3 ==1))
            sup++;
            d++;
            listtest.allersuivant();
 }
return sup;
}
voila dans cette partie de main j’appelle cette fonction :
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
cout <<"debut try \n" ;
 
list.allerpremier();
int n2=0,tr = 0, sup;
while (n2 < nbreregles-1)
{ int i=0;
string x,y,z;
int n = list.courant->nbrepremisse ;
    while (i <= n-2 )
 
{//cout <<"i = " << i << "  " ;
//cout << list.courant->premisse[i]<< "\n";
x= list.courant->premisse[i];
cout << "x : "<< x << "\n";
//cout <<"i+1 = " << i+1 << "  " ;
//cout << list.courant->premisse[i+1]<< "\n";
if (n>1) {y = list.courant->premisse[i+1];
cout << "y : " << y << "\n"; }
i++;
}
//cout << list.courant->conclusion<< "\n";
z=  list.courant->conclusion;
cout <<"z : "<< z<< "\n";
sup= calculsup (x,y,z);
cout << n2 << ":" << sup<< "\n" ;
 
list.allersuivant();
n2++;
 
}
    return 0;