calcul du somme des valeurs ds un fichier
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:
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:
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:
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