Comment faire la somme de cette somme
Résolu
geekat
Messages postés
223
Date d'inscription
Statut
Membre
Dernière intervention
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
J'ai un code qui permet de lire une chaîne (4 doubles) à partir d'un fichier sous forme de vecteurs, ligne par ligne, après chaque clic.
Je souhaiterais faire la somme de ces vecteurs. Comment faire dans la boucle while ou en dehors de while ?
Je parle de la ligne 72.
J'ai un code qui permet de lire une chaîne (4 doubles) à partir d'un fichier sous forme de vecteurs, ligne par ligne, après chaque clic.
Je souhaiterais faire la somme de ces vecteurs. Comment faire dans la boucle while ou en dehors de while ?
Je parle de la ligne 72.
/* Fichiers d'en-tête */
#include <stdlib.h> // allocation dynamique mémoire
#include <stdio.h> // Gestion erreurs et E/S
#include <math.h> // Fonctions mathématiques
#include <string.h>
#include <time.h>
#define TAILLE_MAX 4700
// 1ère étape : Chargement du fichier IRIS DATA = OK
int main()
{ /* Descripteur fichier */
FILE* fichier = NULL;
/* Ouverture fichier */
fichier = fopen("iris_data.txt", "r+");
if (fichier != NULL)
{
char chaine[TAILLE_MAX] = ""; // Chaîne vide de taille TAILLE_MAX
char c ;
//vect : Matrice
double **vect;
int i,b=1;
// On peut lire et écrire dans le fichier
printf("Le fichier IRIS DATA est ouvert \n");
// Si je n'ai pas assez d'espace pour 150 lignes => pour les 5 colonnes aussi en conséquence
if ((vect = malloc(150*sizeof(double*)))==NULL)
{
printf("Erreur espace");
b=0;
}
//sinon
for(i=0;i<150;i++)
{
if ((vect[i] = malloc(5*sizeof(double)))==NULL)
{
printf("Erreur espace");
b=0;
}
}
if (b==1)
{
printf("Espace alloue \n");
}
i=0;
while(fgets(chaine, TAILLE_MAX, fichier)!= NULL) // On lit maximum TAILLE_MAX caractères du fichier, on stocke le tout dans "chaine"
{
/* Ici j'ai fait quelques opérations */
/*----------------- Etape 2 : Allocation mémoire-------------------- => OK */
/* Allocation mémoire d'un tableau de 100 valeurs flottantes */
if (b==1)
{
sscanf(chaine, "%lf ,%lf ,%lf ,%lf", &vect[i][0], &vect[i][1], &vect[i][2], &vect[i][3]);
printf("Le vecteur de donnees x%d est : %f,%f,%f,%f \n",i, vect[i][0], vect[i][1], vect[i][2], vect[i][3]);
printf("***********************FIN*************************\n");
// Etape 3 : initialisation des vecteurs normalisés
// Vmoy = Somme des wi des colonnes / 150
double Vmoy = 0.0;
// Vmin
double Vmin = Vmoy-0.002;
// Vmax
double Vmax = Vmoy+0.005;
// Calculer Vmoy = Somme (matrice) / 150
double somme1 = 0.0;
/* Ici je dois faire la somme de toutes les somme1 */
somme1 = vect[i][0]+vect[i][1]+vect[i][2]+vect[i][3];
printf("La somme est : %f \n", somme1); ;
}
getchar();
i++;
}
fclose(fichier);
}
else
{
// On affiche un message d'erreur si on veut
printf("Impossible d'ouvrir le fichier iris_data.txt");
}
return 0;
}
1 réponse
-
Salut,
L'idée c'est seulement d'avoir à la fin la somme de tous les vecteurs ?
Si c'est bien le cas il suffit d'avoir ta variable déclarée en dehors du while, à chaque itération tu incrémente avec la somme trouvé, et en sortant de la boucle tu auras la somme totale.
naga-
Merci pour ta réponse.
Oui c'est ça, la somme de toute la matrice, soit la somme de tous les vecteurs lignes.
J'ai essayé ce que t'as dit, j'ai déclaré : double somme1 = 0.0; en dehors de la boucle while. Mais j'ai les mêmes résultats, soit la somme des vecteurs un à un 0 puis 1 puis 2 ....
double somme1 = 0.0;
while(fgets(chaine, TAILLE_MAX, fichier)!= NULL)
{
somme1 = vect[i][0]+vect[i][1]+vect[i][2]+vect[i][3];
printf("La somme est : %f \n", somme1);
}
getchar();
i++;
}
EDIT : en sortant de la boucle pour afficher la somme, j'ai la somme de la dernière ligne seulement. -
-
-
-
-