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 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161
| #include <stdlib.h>
#include <stdio.h>
#include <windows.h>
#include <math.h>
int main(int argc, char *argv[])
{
//Delcarations des pointeurs de type FILE pour les fichier 1, 2, 3 et 4
FILE* fichier1 = NULL;
FILE* fichier2 = NULL;
//Declaration de la chaine de craractères correspondant au nom du fichier1
char nom_fichier[100];
//Declaration des entiers i (pour les tableaux) et de NUMBLOC pour le numéro de chaque bloc
int i = 0,
j = 0,
k = 4,
n = 2048,
NUMBLOC = 1,
NumBloc[5000];
/*Declarations des variables recuperant les valeurs maximales et minimales de chaque voie
et des sommes permettant le calcul des valeurs RMS*/
float MAX = 0,
MIN = 0,
SOMME = 0;
//Declarations des valeurs RMS
double RMS = 0;
printf("Saisir le nom du fichier a ouvrir\n\n");
// Saisie du nom du fichier au clavier
scanf("%s",nom_fichier);
//Declarations des tableaux recuperant les valeurs du temps, de la voie 1 Jusqu'à la voie 15
float tab[n][k],
max[10000][k],
min[10000][k],
somme[10000][k],
rms[10000][k];
//fonction ouvrir avec mode d'ouverture "r" (lecture seulement)
fichier1 = fopen(nom_fichier, "r");
//si il n'y a pas de lecture de fichier ou que la lecture est finie, on renvoie NULL
if (fichier1 == NULL)
{
//On affiche un message d'erreur si le fichier demandé n'existe pas
printf("Erreur lors de l'ouverture du fichier\n");
}
else
{
//Boucle qui s'execute tant que la fin du fichier n'est pas detectée (eof = End Of File)
while(!feof(fichier1))
{
//On définit le numéro du bloc
NumBloc[i] = NUMBLOC;
for (i = 0; i < n; i++)
{
for (j = 0; j < k; j++)
{
// Récupération des valeurs contenues dans le fichier et stockage de ces dernières dans le tableau
fscanf(fichier1, "%f", &tab[i][j]);
}
}
//Boucle qui Determine les valeurs maximales de chaque voie et les recupere dans des variables
for (j = 1; j < k; j++)
{
for (i = 0; i < n; i++)
{
if(tab[i][j] > MAX)
MAX = tab[i][j];
}
max[i][j] = MAX;
i++;
}
i = 0;
//Boucle qui determine les valeurs minimales pour chaque voie et les recupere dans des variables
for (j = 1; j < k; j++)
{
for (i = 0; i < n; i++)
{
if(tab[i][j] > MIN)
MIN = tab[i][j];
}
min[i][j] = MIN;
i++;
}
i = 0;
//Boucle qui determine la somme des termes au carré d'un bloc
for (j = 1; j < k; j++)
{
for (i = 0; i < n; i++)
{
SOMME = SOMME + (tab[i][j]*tab[i][j]);
}
somme[i][j] = SOMME;
i++;
}
i = 0;
//Calcul des valeurs RMS
for (j = 1; j < k; j++)
{
RMS = (sqrt(somme[i][j])/n);
rms[i][j] = RMS;
i++;
}
i = 0;
//Ouvre le fichier "RMS.txt" en mode a+ (ajout). Si le fichier n'existe pas, il est créé
fichier2 = fopen("DONNEES.txt","a+");
if (fichier2 != NULL)
{
//Ecriture des données dans le fichier DONNEES.txt
for (i = 0; i < n; i++)
{
fprintf(fichier2,"%d %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f \n", NumBloc[i], max[i][1], min[i][1], rms[i][1], max[i][2], min[i][2], rms[i][2], max[i][3], min[i][3], rms[i][3], max[i][4], min[i][4], rms[i][4], max[i][5], min[i][5], rms[i][5], max[i][6], min[i][6], rms[i][6], max[i][7], min[i][7], rms[i][7], max[i][8], min[i][8], rms[i][8], max[i][9], min[i][9], rms[i][9], max[i][10], min[i][10], rms[i][10], max[i][11], min[i][11], rms[i][11], max[i][12], min[i][12], rms[i][12], max[i][13], min[i][13], rms[i][13], max[i][14], min[i][14], rms[i][14], max[i][15], min[i][15], rms[i][15]);
}
//Fermeture du fichier 2
fclose(fichier2);
}
//Remise à zero des variables
SOMME = 0;
MAX = 0;
MIN = 0;
//On incrémente NUM pour passer au bloc suivant
NUMBLOC = NUMBLOC + 1;
i++;
}
//Fermeture du fichier1
fclose(fichier1);
}
//Fais patienter le système (demande d'appuyer sur "ENTREE" pour se fermer)
system("PAUSE");
return 0;
} |
Partager