Salut à tous !! J'ai besoin de votre aide
Voici mon programme :
# include <stdio.h>
# include <stdlib.h>
# include <iostream>
# include <fstream>
# include <string>
# include <math.h>
# include<conio.h>
using namespace std;
//int rechercheDicho(int [], int, int);
void afficheColonne(float [], int); // Fonction pour vérifier le contenu d'une colone
void EnregistrerUneColonne(float[], float[], float[], float[], int); // Un fonction qui enregistre les 4 colonnes
int main()
{
// Déclaration des variables
int hauteur1=0; // hauteur anémomètre 1
int hauteur2=0; // hauteur anémomètre 2
int resultathauteur=0;
int site;
int duree=0; // duree de mesure
int nbredemesures=0;
int nbredemesures2,nbreanemo;
// Programme
printf("\n CHOIX DES ANEMOMETRES");
printf("\n Hauteur anemometre 1 en metres : ");
scanf("%d",&hauteur1);
printf("\n Hauteur anemometre 2 en metres : ");
scanf("%d",&hauteur2);
resultathauteur=abs(hauteur1-hauteur2);
printf("\n La difference de hauteur entre les 2 anemometres est de : %d m ",resultathauteur);
printf("\n \n \n \n CHOIX DU SITE");
printf("\n \nLes differents sites sont : ");
printf("\n - mat1 = 1");
printf("\n - mat2 = 2");
printf("\n - mat3 = 3");
printf("\n - mat4 = 4");
printf("\n - mat5 = 5");
printf("\n - mat6 = 6");
printf("\n \n Choisissez votre site : ");
scanf("%d",&site);
switch(site)
{
case 1 :
printf("\n \n Ce mat possede x anemometres : xm - xm - xm");
break;
etc……..
}
printf("\n \n Veuillez indiquer la duree de mesure en jours : ");
scanf("%d",&duree);
printf("\n \n La duree de mesure selectionnee est de %d jour(s).\n",duree);
nbredemesures=144*duree;
printf("\n \n Il y a %d mesures prises en compte.\n",nbredemesures);
printf("\n \n Combien d'anemometres voulez vous prendre en compte ? ");
scanf("%d",&nbreanemo);
nbredemesures2=nbredemesures*nbreanemo;
printf("\n \n \n \n CALCUL DU COEFFICIENT DE CISAILLEMENT");
double param1, param2, result;
param1=5;
param2=hauteur1/hauteur2;
result=log (param1)/log (param2);
printf("\n \n Alpha = ln(%lf) / ln(%lf) = %lf\n", param1, param2, result );
/*Récupération et lecture du tableau*/
float *INPUT = new float[nbredemesures2];
int nbElementsColonne = (int)(nbredemesures2 / 4);
FILE*ReadInput;
ReadInput=fopen("c:\\Mâts de mesures\\12.txt","r" ) ;
if(ReadInput==0)
{
fprintf(stderr,("\a Erreur ouverture fichier\n "));
exit(-1);
}
for (int i=0 ; i < nbredemesures2; i++)
{
fscanf(ReadInput,"%f", &INPUT[i]);
}
printf("\n\n");
float ligne[4] = {0};
fclose(ReadInput) ;
for (int i=0 ; (i+nbreanemo)<nbredemesures2 ; i+=nbreanemo)
{
for (int j=i; j<i+nbreanemo; j++)
{
printf("\t%f",INPUT[j]);
}
printf ("\n");
}
delete[] INPUT;
/* CALCULS DES COLONNES DU FICHIER TXT*/
/*ENREGISTREMENT DANS UN FICHIER XLS*/
//Les 4 colonnes :
float *colonneA = new float[nbElementsColonne];
float *colonneB = new float[nbElementsColonne];
float *colonneC = new float[nbElementsColonne];
float *colonneD = new float[nbElementsColonne];
// Leurs initialisations
for (int i = 0; i < nbElementsColonne; i++)
{
colonneA[i] = 0;
colonneB[i] = 0;
colonneC[i] = 0;
colonneD[i] = 0;
}
fclose(ReadInput) ;
int index = 0; // Compte le nombre de lignes dans la colonne
for (int i=0 ; (i+nbreanemo)<nbredemesures2 ; i+=nbreanemo) // On prend ligne par ligne
{
for (int j = i; j < i+nbreanemo; j++)
{
printf("\t%f",INPUT[j]); // et on affiche élément par élément
if (j == i)
{
colonneA[index] = INPUT[j]; // Remplis la colonne A à la ligne index, tous les 4 i
}
else if ( j == (i+1))
{
colonneB[index] = INPUT[j]; // Idem pour B mais avec la valeur suivante
}
else if (j == (i+2))
{
colonneC[index] = INPUT[j]; // ...
}
else
{
colonneD[index] = INPUT[j]; //...
}
}
index ++;
printf ("\n");
}
// Affiche le contenu des colonnes pour vérification :
printf ("\nColonne A : \n");
afficheColonne(colonneA, nbElementsColonne);
printf ("\nColonne B : \n");
afficheColonne(colonneB, nbElementsColonne);
printf ("\nColonne C : \n");
afficheColonne(colonneC, nbElementsColonne);
printf ("\nColonne D : \n");
afficheColonne(colonneD, nbElementsColonne);
// Enregistre les colonne avec une fonction (pour pas surcharger le main)
EnregistrerUneColonne(colonneA, colonneB, colonneC, colonneD, nbElementsColonne);
// Supprime les tableaux du tas :
delete[] colonneA;
delete[] colonneB;
delete[] colonneC;
delete[] colonneD;
delete[] INPUT;
}
// Fonction d'affichage :
void afficheColonne(float colonne[], int nombreElements)
{
for (int i=0; i < nombreElements; i++)
{
std::cout << colonne[i] << std::endl;
}
}
// Enregistement :
void EnregistrerUneColonne(float colonneA[], float colonneB[], float colonneC[], float colonneD[], int nbreLignes)
{
// ouvre le fichier en écriture, le crée s'il n'existe pas et remplace le fichier existant
std::ofstream fichier; // Ouvre un fichier façon fstream (ça fait pareil que FILE *)
fichier.open("c://Mâts de Mesures//Fichier_Excel.xls", std::ios::out); // Ouvre le fichier (ou crée) fichierExcel.xls à coté de l'éxecutable, et le vide (par défaut)
if (fichier) // Si y'a pas eu d'erreur au niveau du fichier on continu
{
std::cout << "\n**Enregistrement**\n"; // <- Si ça ne s'affiche dans la console, c'est que le fichier est pas ouvert
// En-tête :
fichier << "<?xml version=\"1.0\"?>\n<Root xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\">\n";
// Remplissage :
for (int i=0; i<nbreLignes; i++)
{
fichier << "\t<row>\n\t\t<ColonneA>";
fichier << colonneA[i];
fichier << "</ColonneA>\n\t\t";
fichier << "<ColonneB>";
fichier << colonneB[i];
fichier << "</ColonneB>\n\t\t";
fichier << "<ColonneC>";
fichier << colonneC[i];
fichier << "</ColonneC>\n\t\t";
fichier << "<ColonneD>";
fichier << colonneD[i];
fichier << "</ColonneD>\n";
fichier << "\t</row>\n";
}
fichier << "</Root>";// Pour finir le fichier en xml correctement
fichier.close(); // Et fermeture
}
printf("\n \n Appuyer sur une touche pour fermer le programme");
getch();
}
En fait, je souhaite faire des calculs entre les différentes colonnes de mon tableau que mon programme affiche. Et jsais pas du tout comment faire. Merci
