Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2005 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  PB ACQSUISITION EN C++, SI UN CRACK EN INFO PEUT ME FAIRE TOURNER CE

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

PB ACQSUISITION EN C++, SI UN CRACK EN INFO PEUT ME FAIRE TOURNER CE

n°1341799
keep_schoo​l
Posté le 07-04-2006 à 22:08:56  profilanswer
 

voilà, je dois acquérir un fichier de ce type :
 
79,74 -2,15 6,76 1,70
83,46 4,71 3,79 4,33
91,36 2,73 5,68 5,61
92,60 1,24 6,33 11,44
101,58 2,48 3,30 19,94
102,94 -4,47 6,97 22,74
107,29 4,27 5,77 31,30
116,45 4,00 5,51 32,54
126,33 1,85 3,65 33,27
135,14 4,21 6,61 39,13
135,88 0,11 4,53 40,97
140,04 3,22 3,86 46,87
143,63 3,22 3,96 51,29
143,63 -1,60 3,19 55,35
149,36 -1,82 5,35 61,55
154,28 3,23 4,29 68,92
154,86 0,71 3,86 77,24
157,25 4,01 6,82 81,54
161,72 3,21 6,77 89,73
171,27 -3,87 3,92 90,50
180,74 -1,30 6,06 94,30
189,06 -1,11 6,79 97,43
196,57 -0,57 3,34 105,24
196,68 3,45 6,98 106,13
199,86 4,16 4,61 106,37
208,05 -0,07 5,30 107,10
214,27 3,87 6,72 112,01
223,34 -3,35 6,57 121,74
229,04 -3,00 4,61 127,55
236,42 3,89 4,30 128,47
240,01 3,62 5,21 131,62
249,77 0,08 3,47 132,55
257,30 1,02 4,56 141,02
262,94 -0,15 3,94 145,55
272,81 -2,27 5,82 151,94
 
dans un tableau de dimension 2 .
JE PROGRAMME EN VISUAL STUDIO NET
 
voici le pgm que j'utilise :
#include <fstream>
#include <malloc.h>  
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>  
                               // strtok() -> decoupage de chaine de caracteres  
                               // atoi -> convertir une chaine de caractere en un entier  
   
                   
                   // Nombre de colonne maximum du tableau  
#define MAX_CHAR_PER_LINE    12                // Nombre de caratere maximum par ligne dans le fichier lu : 3*400+400+1 = 1601 mais j'ai mis 1650 pour arrondir  
#define SEP                    " "                    // Séparateur utilisé dans le fichier  
#define PATH                "C:\\MESURE1.txt"        // Mets l'emplacement de ton fichier contenant les valeurs  
   
   
int main(int argc, char* argv[])  
{  
    FILE*    m_File;  
    int        i = 0;  
    int        j;  
    float    Tab[4000][5];  
    char    szbuff[MAX_CHAR_PER_LINE];  
    char*    token;  
   
     
     
    // On initialise le tableau a -1  
    for(i=0;i<4000;i++)  
    {  
        for(j=0;j<5;j++)  
        {  
            Tab[i][j] = -1;  
        }  
    }  
     
    // On réinitialise le compteur de ligne car i;a été incrémenté lors de l'iniatialisation  
    i = 0;  
     
    // On ouvre le fichier en lecture seule et en mode texte  
    m_File = fopen(PATH,"rt" );  
   
    // On vérifie qu'il n'y ai pas eu d'erreur pendant l'ouverture du fichier  
    if(!m_File) return 1;  
   
    // On lit le fichier ligne a ligne et on stocke les valeurs dans un tableau d'entier  
    // La boucle while a l'avantage de permettre la lecture d'un fichier sans connaitre son nombre de ligne exact  
    // et nous évite donc de faire bugger le programme  
    // Le "feof" veut "End Of File". On lit donc jusuqu'à la fin du fichier  
    while(!feof(m_File) && i < 4000)  
    {  
         
        j = 0;  
   
        // On récupere la ligne courante du fichier  
        fgets(szbuff,MAX_CHAR_PER_LINE,m_File);  
         
        // On decoupe la ligne selon le charactere de séparation SEP (" " )  
        token = strtok(szbuff,SEP);  
   
        // On lit les éléments découpés un à un et on les stocke dans le tableau Tab  
        while(token != NULL && j < 5)  
        {  
            // On stocke la valeur lue dans le tableau  
            Tab[i][j] = atof(token);  
            // On lit l'element suivant retourner par strtok  
            token = strtok(NULL,SEP);  
            // On incremente le compteur des ordonnées  
            j++;  
        }  
         
        // On incrémente le compteur des abscisses  
        i++;  
    }  
   
   
    // On affiche le tableau pour etre sur que tout s'est bien passé... Le \t correspond au caractere tabulation  
    // Le 0.2f indique qu'on doit afficher un float avec 2 decimales après la virugle  
    for(int x=0;x<i;x++)  
    {  
        for(int y=0;y<j;y++)  
        {  
            printf("%0.2f\t",Tab[x][y]);  
        }  
        printf("\n" );  
    }  
   
    return 0;  
   
}  
 
 
mais le pgm defile et le compilateur me met ça à la fin :
 
'site.exe': Loaded 'C:\Documents and Settings\lefrancois\Mes documents\C++\site\Debug\site.exe', Symbols loaded.
'site.exe': Loaded 'C:\WINDOWS\SYSTEM32\ntdll.dll', No symbols loaded.
'site.exe': Loaded 'C:\WINDOWS\SYSTEM32\kernel32.dll', No symbols loaded.
The program '[204] site.exe: Native' has exited with code 0 (0x0).
 
 
merci de m'aider, je suis débutant

mood
Publicité
Posté le 07-04-2006 à 22:08:56  profilanswer
 

n°1341805
Trap D
Posté le 07-04-2006 à 22:16:42  profilanswer
 

D'abord tu mélanges allègrement C et C++, fais un choix.
 
Inutile de faire fopen(..., "rt" ); par défaut c'est du texte, donc "r" suffit.
 
Pourquoi avoir pris 12 caractères par lignes tu oublies éventuellement le retour chariot et le zéro terminal de fin de chaîne.
(la dernière ligne du fichier fait 24 caractères + le retour chariot (peut-être) + le zéro de fin de chaîne)
 
Ensuite la boucle de lecture d'un fichier se fait de cette manière
while (fgets(szbuff,MAX_CHAR_PER_LINE,m_File) && i < 4000)
{
   ..........
}
 
Ensuite il ne faut plus utiliser de puis belle lurette les fonctions ato... mais strtol ou strtod pour les conversions de chaînes vers nombres.
 
Très dangereux le j n'est pas véritablement initialisé, c'est peut-être 5 mais ce n'est pas très "safe" comme programmation !
for(int y=0;y<j;y++)  
 
 
Celà ne résoudra peut-être pas tes problèmes mais déjà on y  verra plus clair.


Message édité par Trap D le 07-04-2006 à 22:23:01
n°1341822
SBAM
Best recording of rach 3.
Posté le 07-04-2006 à 22:48:28  profilanswer
 

boost::tuple

n°1341825
keep_schoo​l
Posté le 07-04-2006 à 22:54:48  profilanswer
 

#include <fstream>
#include <malloc.h>  
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>  
                               // strtok() -> decoupage de chaine de caracteres  
                               // atoi -> convertir une chaine de caractere en un entier  
   
                   
                   // Nombre de colonne maximum du tableau  
#define MAX_CHAR_PER_LINE    50                // Nombre de caratere maximum par ligne dans le fichier lu : 3*400+400+1 = 1601 mais j'ai mis 1650 pour arrondir  
#define SEP                    " "                    // Séparateur utilisé dans le fichier  
#define PATH                "C:\\MESURE1.txt"        // Mets l'emplacement de ton fichier contenant les valeurs  
   
   
int main(int argc, char* argv[])  
{  
    FILE*    m_File;  
    int        i = 0;  
    int        j;  
    float    Tab[4000][5];  
    char    szbuff[MAX_CHAR_PER_LINE];  
    char*    token;  
   
     
     
    // On initialise le tableau a -1  
    for(i=0;i<4000;i++)  
    {  
        for(j=0;j<5;j++)  
        {  
            Tab[i][j] = -1;  
        }  
    }  
     
    // On réinitialise le compteur de ligne car i;a été incrémenté lors de l'iniatialisation  
    i = 0;  
     
    // On ouvre le fichier en lecture seule et en mode texte  
    m_File = fopen(PATH,"r" );  
   
    // On vérifie qu'il n'y ai pas eu d'erreur pendant l'ouverture du fichier  
    if(!m_File) return 1;  
   
    // On lit le fichier ligne a ligne et on stocke les valeurs dans un tableau d'entier  
    // La boucle while a l'avantage de permettre la lecture d'un fichier sans connaitre son nombre de ligne exact  
    // et nous évite donc de faire bugger le programme  
    // Le "feof" veut "End Of File". On lit donc jusuqu'à la fin du fichier  
    while(!feof(m_File) && i < 4000)  
    {  
         
        j = 0;  
   
        // On récupere la ligne courante du fichier  
        fgets(szbuff,MAX_CHAR_PER_LINE,m_File);  
         
        // On decoupe la ligne selon le charactere de séparation SEP (" " )  
        token = strtok(szbuff,SEP);  
   
        // On lit les éléments découpés un à un et on les stocke dans le tableau Tab  
        while(token != NULL && j < 5)  
        {  
            // On stocke la valeur lue dans le tableau  
            Tab[i][j] = atof(token);  
            // On lit l'element suivant retourner par strtok  
            token = strtok(NULL,SEP);  
            // On incremente le compteur des ordonnées  
            j++;  
        }  
         
        // On incrémente le compteur des abscisses  
        i++;  
    }  
   
   
    // On affiche le tableau pour etre sur que tout s'est bien passé... Le \t correspond au caractere tabulation  
    // Le 0.2f indique qu'on doit afficher un float avec 2 decimales après la virugle  
   
 
 
 for(int x=0;x<i;x++)  
    {  
        for(int y=0;y<j;y++)  
        {  
            printf("%0.2f\t",Tab[x][y]);  
        }  
        printf("\n" );  
    }  
   
    return 0;  
   
}  
 
 
voilà, j'ai changé les deux trois trucs mais je dois laisser la fonction d'impression comme ça
 
le pgm tourne mais la mise en forme n'est pas conservée, et toute defile à toute vitesse à l'écrn sans que ça s'arrete  
 
 
sinon, une structure serait elle plus adaptée
 
 
 
 
 
#include<string.h>      /* declaration des bibliotheques*/  
#include<stdio.h>      /* declaration des bibliotheques*/
#include<stdarg.h>      /* declaration des bibliotheques*/  
#include<stdlib.h>      /* declaration des bibliotheques*/
#include<conio.h>
 
 
struct Personne          /*declaration de la structure*/
{
 float HEUREA;          /*declaration*/
 float XA;          /*declaration*/
 float YA;       /*declaration*/
 float ZA;        /*declaration*/
 
};  
 
 
 
 
 
 
void main ()
{
 int date[3],i,j;                    /*declaration des variabled*/
 char NOM[10],INDIRECTION[30]={"c:\\"},REINDIRECTION[30]={"c:\\"};   /*declaration des variabled et chemin d'acces*/
 FILE*FICHIER;                     /*declaration des variabled*/                    
 struct Personne per[20000];                  /*declaration des variabled*/
 char ligne[3000];                     /*declaration des variabled*/
 
 
 
 printf("\nNous allons saisir les 3 composantes de la date (jour,mois,annee)\n" );  
 
 printf("\npreparez vous à saisir\n" );     /*affichage de message*/
 printf("nombre saisi :   " );        /*affichage de message*/
 scanf("%d",&date[0]);          /*saisie*/
                   
          /*saisie*/
 
 
 printf("\n**    Nous allons lire dans le fichier de stockage   **    \n" );  /*affichage de message*/  
 printf("        lecture et enregistrement .......\n\n\n\n" );     /*affichage de message*/
 
 
 
 printf("\nQuel est le nom du fichier d'entrer en .txt?\n" );   /*fichier de entrer*/
 gets(NOM);               /*acquisition*/
 gets(NOM);  /*acquisition*/
 strcat(INDIRECTION,NOM);                                      /*concatenation*/  
 
 if ((FICHIER = fopen(INDIRECTION,"r" ))== NULL)            /*condition*/               /*test de validite d'ouverture*/  
 {
  printf("Impossible d'ouvrir le fichier %s",NOM);          /*affichage message*/
  return;
 }  
 
 
 
 i = 0;              /*acquisition des parametres du fichier source a l'aide d'une boucle while jusqu'au end of file*/
 while (fscanf(FICHIER, "%d\t%d\t%d\t%d\n",  
 &per[i].HEUREA, per[i].XA, per[i].YA,per[i].ZA) != EOF)
  i++;
 
 
 printf("\n\n*****Voici le tableau final ******\n\n" ); /*affichage du tableau des deux nouvelles personnes*/
 for (j= 0; j < i; j++)  
  printf( "%d\t%d\t%d\t%d\n",  
 &per[i].HEUREA, per[i].XA, per[i].YA,per[i].ZA);  
 fclose(FICHIER);  
 
 
 
 
 
 
 
 
 
 
 printf("\n\n\n*************************************" );   /*affichage du message de fin de programmme*/
 printf("\nle programme est maientenant termine\n" );    /*affichage du message de fin du programme*/
 printf("\nAU REVOIR ET BONNE JOURNEE " );      /*affichage du message de fin de programmme*/
 printf("\n*************************************\n\n\n\n\n" ); /*affichage du message de fin de programmme*/
 
}

n°1341850
_darkalt3_
Proctopathe
Posté le 07-04-2006 à 23:43:39  profilanswer
 

balises [code] !

n°1341906
++fab
victime du syndrome IH
Posté le 08-04-2006 à 01:59:25  profilanswer
 

Aux entêtes inutilisées près, c'est du C pur et dur. Je vote pour un déplacement en cat C ...

n°1341910
blastman
just me !
Posté le 08-04-2006 à 02:20:14  profilanswer
 

mais qu'est ce qu'ils ont tous ces gens à ne pas utiliser la balise code, je sais pas pour vous mais moi franchement ça me dérange énormement, surtout quand le code est assez long


---------------
http://www.blastmanu.info
n°1341951
++fab
victime du syndrome IH
Posté le 08-04-2006 à 09:43:34  profilanswer
 

moi, ça ne me dérange absolument pas. Quand le code est trop long, et que le PO n'a pas fait l'effort de donner le code minimum compilable qui illustre son problème, il est hors de question que je fasse l'effort de le lire.
 
Après, entre un code court sans balises, et avec balises, je préfère avec :)

n°1341956
_darkalt3_
Proctopathe
Posté le 08-04-2006 à 10:02:17  profilanswer
 

PO :??:

n°1341983
++fab
victime du syndrome IH
Posté le 08-04-2006 à 11:28:17  profilanswer
 

Posteur Original

mood
Publicité
Posté le 08-04-2006 à 11:28:17  profilanswer
 

n°1341986
_darkalt3_
Proctopathe
Posté le 08-04-2006 à 11:33:38  profilanswer
 

:jap:

n°1342010
breizhbugs
Posté le 08-04-2006 à 12:13:08  profilanswer
 

blastman a écrit :

mais qu'est ce qu'ils ont tous ces gens à ne pas utiliser la balise code, je sais pas pour vous mais moi franchement ça me dérange énormement, surtout quand le code est assez long


Tous le monde n'est pas un habitué des forums de programmation et n'est pas forcement au courant qu'une telle balise existe!

n°1342013
_darkalt3_
Proctopathe
Posté le 08-04-2006 à 12:15:13  profilanswer
 

c'est pour ça qu'il y a un topic épinglé judicieusement intitulé Règles du forum Programmation, dans lequel on peut facilement lire Pour poster du code, il existe des balises C/C++ bien pratiques

n°1342029
keep_schoo​l
Posté le 08-04-2006 à 12:41:49  profilanswer
 

justement, je ne sais pas ce qu'est une balise donc excusez moi pour ce long pgm mais je fais du C++ que depuis 2 mois donc ...
 
sinon, personne n'a fait tourner ce pgm sur sa mchine pour voir si ça marche, car je suis vrt bloqués
 
je privilégir la structure

n°1342036
smaragdus
whores, drugs & J.S. Bach
Posté le 08-04-2006 à 12:54:33  profilanswer
 

keep_school a écrit :

justement, je ne sais pas ce qu'est une balise donc excusez moi pour ce long pgm mais je fais du C++ que depuis 2 mois donc ...


 
je te rassure : tu ne fais pas du c++  [:catharsis]  
 
1) Quand on voit des "#include <malloc.h>" , des "char*" ou des "printf", c'est clairement pas du C++ mais du C => mauvaise cat, t'as pas lu la charte
 
2) ton titre est CAPS : t'as pas lu la charte
 
3) pas de balises de code : t'as pas lu la charte
 
Conclusion : ça mérite un BAN :o

n°1342038
_darkalt3_
Proctopathe
Posté le 08-04-2006 à 12:57:55  profilanswer
 

c'est sur que si tu  fais pas d'effort pour les forumeurs, aucun forumeur n'en fera :o

n°1342338
slash33
Posté le 09-04-2006 à 11:55:40  profilanswer
 

smaragdus a écrit :

je te rassure : tu ne fais pas du c++  [:catharsis]


C'est clair : il fait du C sur VS .NET  :jap:


Message édité par slash33 le 09-04-2006 à 11:56:06

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  PB ACQSUISITION EN C++, SI UN CRACK EN INFO PEUT ME FAIRE TOURNER CE

 

Sujets relatifs
recuperer info sur base de donnéeRecherche d'info dans une librairie
[INFO/PHP] créer sa boutique e- avec un livreProbleme avec ma version JAVA ? j'arrive pas a faire tourner un prog ?
Info sur le Clustering ?cours d'info
Faire descendre le footer en fonction de l'info à afficher[XSL]Une idee pour recuperer une info precise
info date dans cookieRécuperation d'info dans un forumlaire
Plus de sujets relatifs à : PB ACQSUISITION EN C++, SI UN CRACK EN INFO PEUT ME FAIRE TOURNER CE


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR