Comment faire la somme de cette somme
Résolu
geekat
Messages postés
242
Statut
Membre
-
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;
}
A voir également:
- Comment faire la somme de cette somme
- Formule somme excel colonne - Guide
- Somme si couleur - Guide
- Somme en anglais excel - Guide
- SOMME SI COULEUR ✓ - Forum Excel
- Somme si entre deux dates ✓ - Forum Excel
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 ....
EDIT : en sortant de la boucle pour afficher la somme, j'ai la somme de la dernière ligne seulement.
Normal la tu n'incrémente pas mais édite la valeur.
ecris plutôt :
ou encore
naga
Merci beaucoup, ça marche !! :)
naga