IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Erreur à trouver


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Inscrit en
    Mars 2010
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 8
    Par défaut Erreur à trouver
    Vous connaissez tous le fameux jeu où il faut trouver des erreurs incrustés dans une image ^^
    Sur ce principe je lance ce nouveau jeu ( humour mais je galère VRAIMENT VRAIMENT )
    Voici mon programme:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    /*****************************************************************
    File:   lecture.c
     
    Author: Johann 
     
    Brief: Source du bloc lecture des champs
     
    *******************************************************************/
    #include <stdio.h>
    #include <stdlib.h>
     
    /* #include "lecture.h" 
    /*! --------------------------------------------------------------
    */
     
    typedef struct valeur {
     
    	float ACR;
    	float DCR;
    	float ACIR;
    	float DCIR;
    	}VALEUR;
     
       VALEUR lecture (VALEUR nonFiltre){ 
     
          int reception[21];
          char usb;
          int i,illicite,compt;
          int ACR_i,ACIR_i,DCR_i,DCIR_i;
          FILE * entree;
    		nonFiltre.ACR = 0;
          nonFiltre.ACIR = 0;
          nonFiltre.DCR = 0;
          nonFiltre.DCIR = 0;
    		ACR_i=0;
    		ACIR_i=0;
    		DCR_i=0;
    		DCIR_i=0;
     
          illicite=0;		
          compt=0;
    		printf("entree\n");
          entree = fopen("record1.dat", "r"); // on dit au pointeur de lire dans le fichier record1.dat
    		printf("%d\n",entree);
       	int transf;
    		printf("zero\n");
     
          do
          {
     
             fscanf(entree, "%c", &usb); // on prend l'octet
     
             transf = (int)usb-48; // char=>int
    			printf("un\n");
             if (transf != -35 && compt!=20){ // si on a pas BS
                reception[i] = transf; // on place le chiffre, numéro correspond à un caractère dans le tableau
                compt++; // on incrémente pour ne pas réécrire dans la même case
    				i++;
    				printf("deux\n");
             }	
             else if (compt <=19) { // le cas où un BS s'introduit avant son heure et donc qu'un problème s'est produit
                for(i=0; i<= 20; i++){ // réinitialisation du tableau
                   reception[i]=0;
                   compt=20; // le programme réenvoi les anciennes valeurs qui ne devraient pas être très éloigné de la réalité
    					printf("trois\n");
                }
             }
     
             else{
                for(i=0; i<=20; i++){
    					printf("%d\n",reception[i]);
                   if(((reception[i]<= -1) && (reception[i]>=10)) || (reception[i]!=-35) || (reception[i]!=-4) || (reception[i]!=-38)) { //vérification d'un caractère illicite
                      illicite=1;}
    						printf("quatre\n");
                }
                if (illicite ==1) {
    					printf("cinq\n");
                   for(i=0; i<= 20; i++){ // réinitialisation du tableau
                      reception[i]=0;}  
                }		 
                else { // si tous les chiffres ont été validé, on extrait les valeurs
    					printf("six\n");
                   ACR_i= 1000*reception[0]+100*reception[1]+10*reception[2]+reception[3];
                   DCR_i= 1000*reception[5]+100*reception[6]+10*reception[7]+reception[8];
                   ACIR_i= 1000*reception[10]+100*reception[11]+10*reception[12]+reception[13];
                   DCIR_i= 1000*reception[15]+100*reception[16]+10*reception[17]+reception[18];
                }
                compt++; // on sort de la boucle
             } // on sort des if
     
          }while(compt<=20);
          nonFiltre.ACR = (float)ACR_i;  // conversion en float
          nonFiltre.ACIR = (float)ACIR_i;
          nonFiltre.DCR = (float)DCR_i;
          nonFiltre.DCIR = (float)DCIR_i;
     
          return nonFiltre;		     
       }
     
     
    int main() {
     
    VALEUR nonFiltre;
    nonFiltre = lecture (nonFiltre);
    printf ("%f %f %f %f",  nonFiltre.ACR, nonFiltre.DCR, nonFiltre.ACIR, nonFiltre.DCIR);
     
    return 0;
    }
    le fichier où prendre les valeurs
    2241,2030,2219,2030

    2185,2029,2183,2029

    2335,2029,2208,2029

    2320,2028,2325,2028

    2297,2028,2195,2028

    2282,2028,2165,2028

    2342,2027,2282,2027

    2220,2027,2366,2027

    2065,2026,2233,2026

    2268,2026,2353,2026

    2562,2026,2231,2026

    2346,2025,2326,2025

    2488,2025,2432,2025

    2450,2024,2566,2024

    2624,2024,2702,2024

    2630,2024,2719,2024

    2602,2023,2490,2023

    2537,2023,2375,2023

    2468,2023,2695,2023

    2323,2022,2614,2022

    2648,2022,2489,2022

    2488,2021,2674,2021

    2550,2021,2507,2021

    2558,2021,2716,2021

    2679,2020,2497,2020

    2460,2020,2774,2020

    2877,2019,2950,2019

    2638,2019,2688,2019

    2832,2019,2937,2019

    2826,2018,3032,2018

    2753,2018,2777,2018

    2813,2018,2686,2018

    2652,2017,2635,2017

  2. #2
    Membre éclairé Avatar de mikhailo
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    78
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 78
    Par défaut
    Salut!

    Utilise, please, les balises [code] pour ton code, sinon c'est très difficilement lisible. Et si tu pouvais dire en deux mots ce que ton programme est censé faire et selon quel algo, ça aiderait aussi, je pense

  3. #3
    Invité(e)
    Invité(e)
    Par défaut
    Bonjour,

    i n'est pas initialisé.

    Il faudrait aussi tester le retour de fopen, genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    toto = fopen("toto.dat", "r") ;
    if(NULL == toto) {
        perror("toto.dat");
        exit(0);
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    transf = (int) usb - 48;
    48 ? '0' était pas plus clair ?

  4. #4
    Membre du Club
    Inscrit en
    Mars 2010
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 8
    Par défaut
    rebonjour à tous,
    Le programme doit prendre octet par octet dans un fichier .dat
    les printf avec marqué un deux tois etc sont juste là pour 'indiquer où le programme se balade.
    Donc il les conversion en entier, il vérifier que ce soit des chiffres virgules LF et retour a la ligne.
    Dsl pour les balise . C'est pas QUOTE ??
    Je suis un gros novice mais d'après moi le programme n'arrive pas à prendre les octet dut surement à une mauvaise utilisation du fscanf.

    Si un expert pouvait me le mettre sur pied ce sera super sympa
    J'ai pas mal commenté j'espère que ç vous aidera

  5. #5
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 477
    Par défaut
    Citation Envoyé par hexter Voir le message
    Dsl pour les balise . C'est pas QUOTE ??
    QUOTE veut dire "citation" et sert à reprendre les propos de quelqu'un d'autre. CODE sert à contenir des morceaux de programmes et, pour cela, utilise une police à chasse fixe, met en place une coloration syntaxique et (surtout) met en place une barre de défilement lorsque le code est trop long.

    Tu peux corriger toi-même ton message en utilisant le bouton "Éditer" sur sa droite, si tu le souhaites.

  6. #6
    Membre du Club
    Inscrit en
    Mars 2010
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 8
    Par défaut
    j'ai rectifier juste après, ça va c'est assez lisible ??
    Quelqu'un pourrait-il m'aider ?

  7. #7
    Invité(e)
    Invité(e)
    Par défaut
    Bonsoir,
    Citation Envoyé par hexter Voir le message
    j'ai rectifier juste après, ça va c'est assez lisible ??
    Quelqu'un pourrait-il m'aider ?
    Peux tu décrire ton problème ?

    As tu vu ce que j'ai écrit plus haut :
    Citation Envoyé par mabu Voir le message
    i n'est pas initialisé.
    ?

  8. #8
    Membre du Club
    Inscrit en
    Mars 2010
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 8
    Par défaut
    Le bug se situe au moment où je met mes chiffres dans le tableau.
    Please jetez y un coup d'oeil

Discussions similaires

  1. Réponses: 8
    Dernier message: 14/01/2011, 18h16
  2. [Liste Erreurs Oracle] Où la trouver ?
    Par poc dans le forum Oracle
    Réponses: 3
    Dernier message: 06/02/2006, 14h41
  3. [SAX] Erreur pour trouver la DTD d'un fichier XML parsé!
    Par gdawirs dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 14/01/2006, 15h28
  4. [Erreur]impossible de trouver le fichier de config du moteur
    Par julietteste dans le forum Bases de données
    Réponses: 5
    Dernier message: 10/05/2005, 18h34
  5. pas moyen de trouver l'erreur de ce code Javascript !!!
    Par NATHW dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 25/11/2004, 21h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo