binjour
svp j'ai rencontré un probléme lors de calcul d'un somme ds un fichier
par exemple j'ai un fuchier qui contient des données commes suit:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
 exemple: 
le fichier qui porte le nom novtest209_3 ( 3 c'est le nombre de ligne du mon fichier) continet ces donnée:
(3,89)-(56,62)
(6,45)-(11,34)
(61,81)-(23,14)
 
sous forme de (pi,qi)
je veux calculer la somme de 0=>n-1 de ( pi-qi) et afficher le resultat
pour cela j'ai crée un fichier et j'ai calculé la moyenne ((a- b)+( c- d))/2 de chaque ligne du mon fichier


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
 
void PurgeStream(FILE *f)
{
int c;
while((c = fgetc(f)) != '\n' && c != EOF)
	{}
}
 
 
void CalculSFichier(LPCTSTR str)
{
	FILE *pfIn = NULL;
	FILE *pfOut = NULL; 
	CString strIn;
	CString strOut;
 
	strIn.Format("c:\\tatouage\\patchwork\\%s",str); // ouvre premier fichier en lecture
	pfIn = _tfopen(strIn, _T("r"));
	if(pfIn == NULL)
	{
		printf("impossible d'ouvrir le fichier"); 
	}
 
	strOut.Format("c:\\tatouage\\patchwork\\detect%s",str);
	pfOut = _tfopen(strOut, _T("w")); //ouvre le deuxieme fichier en ecriture
	if(pfOut == NULL)
	{
		printf("impossible d'ouvrir le fichier");
	}
 
	//Copie les nombres du premier fichier en les incrémentant tous de 1
	if((pfIn != NULL) && (pfOut!=NULL))
	{
		int a, b, c, d;
		while(fscanf(pfIn, "(%d,%d)-(%d,%d)", &a, &b, &c, &d)==4)
		{
			PurgeStream(pfIn);
 
			//Traitement:
			//Incrémente
		//	a++; b--; c++; d--;
			int w=((a- b)+( c- d))/2;
 
			//Ecrit
			fprintf(pfOut, "%d\n", w);
		}
	}
	//Fermeture du ou des fichiers dont l'ouverture a réussi
	if(pfIn)
		fclose(pfIn);
	if(pfOut)
		fclose(pfOut);
}
 
void CTatoDetecpatchDlg::Oncalculer() 
{
	// TODO: Add your control notification handler code here
	CString str1,str2,str3;
	int n= static_cast< CListBox * >(GetDlgItem(IDC_LIST1))->GetCurSel();
	// ici je reccupere le nom du fichier pour l'ouvrir
 
	if(n!=LB_ERR) static_cast< CListBox * >(GetDlgItem(IDC_LIST1))->GetText(n,str1);
 
	CalculSFichier( str1);
}
exemple:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
le nom du mon fichier est: detectnov209_3 porte les donnés:
-46
-31
-5
mon probléme c 'est comment je peux calculer la somme de ces valeurs S
est ce que je dois creer encore un autre fichier??
merci d'avance