Calcul de moyenne
fatalix
Messages postés
4
Date d'inscription
Statut
Membre
Dernière intervention
-
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je réalise un programme qui consiste a récuperer U et I, puis calcul P et E puis sont mis sur un fichier csv. Je voudrais faire un calcul de moyenne de E et le mettre dans un autre fichier csv. Par exemple toutes les 2 valeurs de E faire une moyenne et le mettre dans le fichier. Mais je n'ai aucune idée.
Voici mon programme :
#include <stdio.h>
#include <stdlib.h>
#include <windows.h> // pour la fonction Sleep de la tempo
#include "vm110.h"
#include "K8055D_C.h"
//Carte Puissance et E
float i,A,B,P,E,U,I,M;
float main(float argc, float *argv[])
{
//creation fichier csv
FILE* fichier = NULL;
fichier = fopen("test.txt", "r+");
if(fichier != NULL)
{
OpenDevice(0);
fprintf(fichier,"P:"); //ecriture sur fichier
fprintf(fichier,"E\n");//ecriture sur fichier
//début de la boucle
for(i=1;i<10;i++){
//lecture des ports
A= ReadAnalogChannel(1);
B= ReadAnalogChannel(2);
//conversion
U=A/40;
I=B/8.5;
//afichage
printf("Voici U:%f\n",U);
printf("Voici I:%f\n",I);
//calcul puissance
P = U*I;
//affichage puissance
printf("Voici la puissance: %f\n",P);
//sleep(5000);
//calcul energie
E= P*5*i;
//affiche energie
printf("Voici l'energie: %f\n",E);
sleep(2000);
// ecriture dans le fichier csv
fprintf(fichier,"%f",P);
fprintf(fichier,":");
fprintf(fichier,"%f\n",E);
//raffraichissemnt
system("cls");
}
fclose(fichier);
}
//creation fichier csv 2
FILE * fichiers = NULL;
fichiers = fopen("test1.txt", "r+");
if(fichiers != NULL)
{
fclose(fichiers);
}
return 0;
return 0;
CloseDevice(0);
}
Je réalise un programme qui consiste a récuperer U et I, puis calcul P et E puis sont mis sur un fichier csv. Je voudrais faire un calcul de moyenne de E et le mettre dans un autre fichier csv. Par exemple toutes les 2 valeurs de E faire une moyenne et le mettre dans le fichier. Mais je n'ai aucune idée.
Voici mon programme :
#include <stdio.h>
#include <stdlib.h>
#include <windows.h> // pour la fonction Sleep de la tempo
#include "vm110.h"
#include "K8055D_C.h"
//Carte Puissance et E
float i,A,B,P,E,U,I,M;
float main(float argc, float *argv[])
{
//creation fichier csv
FILE* fichier = NULL;
fichier = fopen("test.txt", "r+");
if(fichier != NULL)
{
OpenDevice(0);
fprintf(fichier,"P:"); //ecriture sur fichier
fprintf(fichier,"E\n");//ecriture sur fichier
//début de la boucle
for(i=1;i<10;i++){
//lecture des ports
A= ReadAnalogChannel(1);
B= ReadAnalogChannel(2);
//conversion
U=A/40;
I=B/8.5;
//afichage
printf("Voici U:%f\n",U);
printf("Voici I:%f\n",I);
//calcul puissance
P = U*I;
//affichage puissance
printf("Voici la puissance: %f\n",P);
//sleep(5000);
//calcul energie
E= P*5*i;
//affiche energie
printf("Voici l'energie: %f\n",E);
sleep(2000);
// ecriture dans le fichier csv
fprintf(fichier,"%f",P);
fprintf(fichier,":");
fprintf(fichier,"%f\n",E);
//raffraichissemnt
system("cls");
}
fclose(fichier);
}
//creation fichier csv 2
FILE * fichiers = NULL;
fichiers = fopen("test1.txt", "r+");
if(fichiers != NULL)
{
fclose(fichiers);
}
return 0;
return 0;
CloseDevice(0);
}
A voir également:
- Calcul de moyenne
- Calcul moyenne excel - Guide
- Calcul km marche à pied gratuit - Télécharger - Sport
- Calcul charpente bois gratuit - Télécharger - Architecture & Déco
- Logiciel gratuit calcul valeur nutritionnelle - Télécharger - Santé & Bien-être
- Moyenne en anglais excel - Guide
4 réponses
float i,A,B,P,E,U,I,M;
Les variables globales ne sont pas conseillées. Il vaut mieux les mettre en local. Tu te sers de i comme int (for) mais tu le déclares en tant que float. Pourquoi ? int i; est beaucoup mieux...
float main(float argc, float *argv[])
Original...
Le prototype est : int main(int argc, int *argv[]) ou int main(void). Aucun autre est accepté.
Pour faire la moyenne, ben, tu fais une boucle for pour additionner toutes les valeurs et tu divises par le nombre d'éléments. Et pour écrire dans le fichier, tu utilises fprintf(). C'est quoi qui te pose problème ?
Cdlt,
Les variables globales ne sont pas conseillées. Il vaut mieux les mettre en local. Tu te sers de i comme int (for) mais tu le déclares en tant que float. Pourquoi ? int i; est beaucoup mieux...
float main(float argc, float *argv[])
Original...
Le prototype est : int main(int argc, int *argv[]) ou int main(void). Aucun autre est accepté.
Pour faire la moyenne, ben, tu fais une boucle for pour additionner toutes les valeurs et tu divises par le nombre d'éléments. Et pour écrire dans le fichier, tu utilises fprintf(). C'est quoi qui te pose problème ?
Cdlt,
Ah oui, et j'oubiais :
return 0;
return 0;
CloseDevice(0);
Inutile de mettre un double return 0. Et le CloseDevice(0) après le return 0 ne sert à rien. Il faut mettre :
CloseDevice(0);
return 0;
je n'arrive pas apprendre toutes les valeurs, à chaque fois je n'ai que la dernière.
Bah normal, puisque à chaque itération tu fais E=...; donc tu écrases l'ancienne valeur.
Il faudrait déclarer : float somme=0;
Juste après E=...;, mettre somme+=E;
Et enfin, avant d'afficher la moyenne (donc après la boucle for); tu calcules somme/9 parce que tu as lu 9 valeurs.
return 0;
return 0;
CloseDevice(0);
Inutile de mettre un double return 0. Et le CloseDevice(0) après le return 0 ne sert à rien. Il faut mettre :
CloseDevice(0);
return 0;
je n'arrive pas apprendre toutes les valeurs, à chaque fois je n'ai que la dernière.
Bah normal, puisque à chaque itération tu fais E=...; donc tu écrases l'ancienne valeur.
Il faudrait déclarer : float somme=0;
Juste après E=...;, mettre somme+=E;
Et enfin, avant d'afficher la moyenne (donc après la boucle for); tu calcules somme/9 parce que tu as lu 9 valeurs.
Merci beaucoup sa fonctionne enfin. Juste une petite question, si je veux faire par exemple, la moyenne de 5 valeurs E, ainsi de suite, je fais comment?
Toujours le même principe...
Tu fais un for de 5, tu initiales somme à 0 avant le for. Dans le for, tu fais somme+=E.
A la fin du for, tu calcules la moyenne somme/5. Et tu recommences à l'instruction "somme = 0".
Ce qui donne :
Tu fais un for de 5, tu initiales somme à 0 avant le for. Dans le for, tu fais somme+=E.
A la fin du for, tu calcules la moyenne somme/5. Et tu recommences à l'instruction "somme = 0".
Ce qui donne :
while(...) { int i; double somme=0; for(i=0;i<5;i++) { ... E=...; somme+=E; } printf("moyenne : %lf\n", somme/5); }