begin process at 2012 05 29 04:28:19
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Divers

 > 

fichier txt HELP !!!!!!!!


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

fichier txt HELP !!!!!!!!

mercredi 11 mai 2011 à 10:13:28 | fichier txt HELP !!!!!!!!

3463

Salut !! Merci d'avance pour votre aide :

/*Récupération et lecture du tableau en .txt*/

float INPUT[nbredemesures];
FILE*ReadInput;
ReadInput=fopen("c:\\dossier\\fichier.txt","r" ) ;

if(ReadInput=NULL)
{
fprintf(stderr,("Erreur ouverture fichier\n"));
exit(-1);
}
for (int i=0 ; i<nbredemesures ; i++)
{
fscanf(ReadInput,"%f",&INPUT[i]);
}

fclose(ReadInput) ;
for (int i=0 ; i<nbredemesures ; i++)
{
printf("%f\n",INPUT[i]);
}

je ne comprends pas : à la compilation il ya un message d'erreur de microsoft....Ensuite je voudrai faire des calculs entre les différentes colonnes et stocker les résultats ds un nouveau tableau et avec ce nouveau tableau tracer des courbes sur excel.

Merci à tous : c très urgent !!!!!!

mercredi 11 mai 2011 à 12:12:56 | Re : fichier txt HELP !!!!!!!!

pop70

Bonjour,
Par message Microsoft, j'imagine quelque chose du genre "Erreur à l'adresse 0x...". Ceci vient généralement d'un problème d'allocation.

C'est le cas ici :

Code C/C++ :
#include <iostream>



int main()
{
    int nbredemesures = 7; // attention, à des endroits du codes il était avec un s, alors qu'à d'autre non
    float *INPUT = new float[nbredemesures]; // Il faut allouer INPUT dans le tas pour pouvoir définir avec une taille variable.

    FILE*ReadInput;

    ReadInput=fopen("fichier.txt","r" ) ;

    if(ReadInput==0) // Ici il faut == , le = simple va supprimer le fichier... 
    {
    fprintf(stderr,("Erreur ouverture fichier\n"));
    exit(-1);
    }
    for (int i=0 ; i < nbredemesures;  i++)
    {
    fscanf(ReadInput,"%f", &INPUT[i]);
    }

    fclose(ReadInput) ;
    for (int i=0 ; i<nbredemesures ; i++)
    {
    printf("%f\n",INPUT[i]);
    }

    delete[] INPUT; // suppression du pointeur sur le tableau INPUT
}


J'ai mis le code dans le main pour pouvoir le tester directement.

C++dialement
Pop70
mercredi 11 mai 2011 à 14:28:58 | Re : fichier txt HELP !!!!!!!!

3463

Salut Pop70 !
Jte remercie énormément pour ton aide. Jsuis désolé mais je ne suis qu'un débutant ^^. Alors déja j'ai plus de messages d'erreur mais mon tableau possède 4 colonnes avec des nbres flottants et là je n'obtient qu'une seule colonne avec que des 0.00000.
Et après est-ce que tu saurais comment faire des calculs entre différentes colonnes ??

Merci bcp !!

mercredi 11 mai 2011 à 14:54:10 | Re : fichier txt HELP !!!!!!!!

3463

Mon fichier txt se présente comme ceci :
0,4 0,4 0,4
0,4 0,4 0,4
2,6 2,6 2,5
7,4 7,6 7,2
7,4 7,6 7,2
7,8 8,2 7,8
7,4 7,9 7,6
etc....

Et le nbre de lignes varient en fonction d'une valeur qu'aura saisi l'utilisateur : nbredemesures. J'ai défini cette variable plus haut :

printf("\n \n Veuillez indiquer la duree de mesure en jours : ");
scanf("%d",&duree);
printf("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);

mercredi 11 mai 2011 à 16:11:05 | Re : fichier txt HELP !!!!!!!!

pop70

Attention : Dans le fichier, pour qu'un flottant soit lu, il faut des points et non des virgules, ce qui explique les "0.000000".

Autrement dit, ceci :
Code :
0,4 0,4 0,4 
0,4 0,4 0,4 
2,6 2,6 2,5 
7,4 7,6 7,2 
7,4 7,6 7,2 
7,8 8,2 7,8 
7,4 7,9 7,6 
etc.... 


donne :

Code :
0.4 0.4 0.4 
0.4 0.4 0.4 
2.6 2.6 2.5 
7.4 7.6 7.2 
7.4 7.6 7.2 
7.8 8.2 7.8 
7.4 7.9 7.6 
etc.....


Et pour prendre tous les éléments, il faut s'assurer que nbredemesures soit égal au nombre de colonne * le nombre de lignes.

C++dialement,

Pop70
mercredi 11 mai 2011 à 16:31:01 | Re : fichier txt HELP !!!!!!!!

3463


ok merci encore !

mais ça m'aligne tout sur une même colonne et je souhaiterai l'afficher comme sur mon doc.txt.

Il me semble que c un truc du style : printf("%f, %f, %f, %f\n",INPUT[i]); non ??

mercredi 11 mai 2011 à 17:33:33 | Re : fichier txt HELP !!!!!!!!

pop70

Pour afficher comme dans le fichier texte, il suffit de faire une séparation entre chaque élément, et un saut de ligne tous les 4 éléments (nombre de colonnes):

Code C/C++ :
#include <iostream>

int main()
{
    int nbredemesures = 14;
    float *INPUT = new float[nbredemesures];

    FILE*ReadInput;

    ReadInput=fopen("fichier.txt","r" ) ;

    if(ReadInput==0)
    {
        fprintf(stderr,("Erreur ouverture fichier\n"));
        exit(-1);
    }


    for (int i=0 ; i < nbredemesures;  i++)
    {
        fscanf(ReadInput,"%f", &INPUT[i]);
    }


    printf("\n\n");
    float ligne[4] = { 0};

    fclose(ReadInput) ;
    for (int i=0 ; (i+4)<nbredemesures ; i+= 4) // On prend ligne par ligne
    {
        for (int j = i; j < i + 4; j++)
        {
            printf("\t%f",INPUT[j]); // et on affiche élément par élément
        }
        printf ("\n");
    }

    delete[] INPUT;
}


C++dialement,

Pop70
jeudi 12 mai 2011 à 08:33:07 | Re : fichier txt HELP !!!!!!!!

3463

Merci encore !!!
Une dernière question et après jte laisse tranquille . Est ce que tu saurais faire des opérations entre des colonnes (que l'utilisateur aura choisit préalablement) ?? Genre Moyenne, ecart-type etc....

Et comment mettre ces résultats dans un autre tableau qu'on pourra exporter sous Excel pour tracer des courbes ?


jeudi 12 mai 2011 à 21:21:33 | Re : fichier txt HELP !!!!!!!!

pop70

Ralala ... On peut dire que tu as de la chance, j'ai du faire ceci il y a moins de une semaine .

J'avais fait pas mal de recherches pour exporter vers excel, et ce qui m'a semblé le plus simple c'est d'enregistrer sous forme de fichier xml.

Cela se présente comme ceci :

Code XML :
<?xml version="1.0"?>
<Root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
	<row>
		<ColonneA>Donnée1</ColonneA>
		<ColonneB>Donnée2</ColonneB>
		//...
	</row>
	<row>
		<ColonneA>Donnée4</ColonneA>
		<ColonneB>Donnée5</ColonneB>
	</row>
	//...
</Root>


Ce code donne :
Code :
ColonneA  ColonneB
Donnée1    Donnée2
Donnée4    Donnée5
//...      ...


Le tout s'enregistre au format .xls, et s'ouvre automatiquement avec excel qui va demander 2 trucs à l'ouverture :
au premier il faut répondre : "En tant que liste XML", et au 2ème il faut cliquer sur "Ok" pour que le schéma sur lequel se base excel soit fait automatiquement (je pense que ce

n'est pas la peine de détailler plus, ça n'a pas grand rapport avec le code).

Quant au fameux code : (il est a ajuster pour le mettre dans une fonction au lieu du main)

Code C/C++ :
#include <iostream>
#include <fstream> // Pour l'enregitrement j'utilise fstream

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()
{

    int nbredemesures = 25; // Au pif, ici c'est encore dans le main pour faire un test

    float *INPUT = new float[nbredemesures];
    int nbElementsColonne = (int)(nbredemesures / 4);
    FILE*ReadInput;

    ReadInput=fopen("fichier.txt","r" ) ;

    if(ReadInput==0)
    {
        fprintf(stderr,("Erreur ouverture fichier\n"));
        exit(-1);
    }


    for (int i=0 ; i < nbredemesures;  i++)
    {
        fscanf(ReadInput,"%f", &INPUT[i]);
    }


    printf("\n\n");
    float ligne[4] = { 0};
//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+4)<nbredemesures ; i+= 4) // On prend ligne par ligne
    {
        for (int j = i; j < i + 4; 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 qui est déjà pas mal grand... :
    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("fichierExcel.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
    }
}


Et voila !

Du coté des nom de variables c'est à revoir au départ j'avais pris nbredemesures comme le nombre de chiffres dans le fichier...Mais bon ça ne change rien au calcul, tant que c'est bien ceci qu'on lui donne. J'ai testé avec un fichier "fichier.txt" qui contient :
Code :
1.5 2.3 3.54 4.78 
5 6 7 8.8 
9.54 10.4 11.4 12.5585 
13.1 14 15 16
17 18.65 19.48 20.16
21 22.13 23 24

Et marche très bien, le fichier excel créé ("fichierExcel.xls") a 4 colonnes A,B,C,D qui contiennent les chiffres dans l'ordre, avec les décimales.

Bon ben voila, (enfin je crois)

C++dialement,

Pop70
vendredi 13 mai 2011 à 14:48:31 | Re : fichier txt HELP !!!!!!!!

3463

Bon, c'est encore super sympa de ta part, je galère un peu (hé oui ! jsuis une vraie chèvre en programmation !!) mais jpense que ça va le faire. J'ai cependant que des 0 dans les 4 colonnes : je ne retrouve pas mon tableau.

Mais là où je galère vraiment vraiment c'est que je ne sais pas comment faire des calculs entre les différentes colonnes de mon tableau : en .txt
Je voudrai que le programme calcule des pentes entre différentes colonnes que l'utilisateur va choisir en gros : y2-y1/x2-x1 puis y3-y2/x3-x2 etc. Donc faire une sorte de boucle jusq'à ce que ça atteigne nbredemesure.

Ensuite faire la moyenne de toutes ces pentes et stocker ces valeurs dans le fameux tableau qu'on ouvre après avec excel
Et je voudrais savoir commetn on pourrait chercher une valeur dans le tableau : ex combien il ya de zéros ? et ce que ça représente en pourcentage.

J'ai déja fais ça mais jpense que c'est pas bon : car j'essaye qd même de chercher de mon côté...mais bon voilà quoi...qd on débute c chaud !!


Promis c'est la dernière question que je te pose



1 2

Cette discussion est classée dans : fichier, input, tableau, txt, readinput


Répondre à ce message

Sujets en rapport avec ce message

fichier txt à un tableau [ par angereveur ] comment on peut convertir simplement un fichier texte comprenand des mesure à un tableau deux dimensions??? Imprimer un tableau et un fichier txt [ par fred23 ] Bonjour,Je souhaiterais savoir comment je peux imprimer:un tableau[i][j] et un fichier texte de type toto.txtLe tout en C++.Merci.Fred23 Lire/Ecrire dans un fichier txt, pb, besoin d'aide [ par eupeup ] Salut a tous, j'ai un probleme avec une appli que je dois coder. Je suis un matheux et non un codeur, vous m'excuserez. J'ai un fichier xml, et je do le contenue d'une TlistBox dans un fichier txt [ par hamidkhelifa ] hello!!! voila g un petit probleme que je n'arrive pas a comprendre je susi entraint de faire une aplication ou je suis obliger de charger un fichier lire un fichier .txt [ par inconnu2nulpar ] slt, dans un fichier .txt j'ai des coordonné de point sous la forme :x1,y1x2,y2...mais je ne sait pas comment les récupéré et les mettre dans un table Lire dans un *.txt un tableau de long ecrit par cfile [ par kididouille ] Bonjour j'ai un pb:J'ai un tableau de long  "long *TabProj;" je desire enregistrer le contenu de ce tableau dans un fichier texte: CFile Fichier;Fichi charger fichier txt dan tableau [ par hazemwannous ] Bonjour à tous ;j'ai un problème lorsque j'essaye de lire un fichier (.txt) et stocker le continu dans un tableau. mon fichier (.txt) est de trois col Tableau et fichier txt [ par cleloa ] Salut tout le monde !Alors voilà, je suis en plein combat  ac le langage c pour reussir à :Importer des données d'un fichier txt dans un tableau de st Donnée enregistrés dans un fichier et dans un tableau pour traitement [ par MrKoala69 ] Bonjour à tous, (j'espère ne pas m'être trompé pour la catégorie). Je suis étudiant en informatique et j'étudie le C ++. Actuellement je planche su Lecture de la dernière ligne d'un fichier .txt [ par marouenetrab ] Bonjour, je suis novice dans le domaine de codage "C" sous linux et j'ai besoin d'un code qui me permet de lire uniquement la dernière ligne d'un fich


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,842 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales