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 :

Probléme condition et boucle


Sujet :

C++

  1. #1
    En attente de confirmation mail
    Homme Profil pro
    Stagiaire\Lycéen
    Inscrit en
    Mars 2013
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Stagiaire\Lycéen

    Informations forums :
    Inscription : Mars 2013
    Messages : 61
    Points : 13
    Points
    13
    Par défaut Probléme condition et boucle
    Bonjour , Bonsoir
    Je met en ce moment un programme d'étiquetage automatique , voici le code (j'utilise la SDL) :
    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
    #include <iostream>
    #include <fstream>
    #include <string>
    #include <stdlib.h>
    #include <stdio.h>
    #ifdef __cplusplus
        #include <cstdlib>
    #else
        #include <stdlib.h>
    #endif
    #ifdef __APPLE__
    #include <SDL/SDL.h>
    #else
    #include <SDL/SDL.h>
    #include <SDL/SDL_ttf.h>
    #endif
     
    using namespace std;
    void SDL_Delay(Uint32 ms);
    int main ( int argc, char** argv )
    {
        char ANserie[100] ;
        char NNserie[100] ;
        char nom[100] ;
        char Ndevie[100] ;
        char temp [1000000];
     
        FILE *stdprn;
        while (1)
    {
     
     
        ifstream fichier("Test.txt", ios::in);
        fichier>>ANserie>>NNserie>>Ndevie>>nom;
        fichier.close();
     
        SDL_Surface *ecran = NULL, *texte = NULL, *fond = NULL;
        SDL_Rect position;
        SDL_Event event;
        TTF_Font *police = NULL;
        SDL_Color couleurNoire = {0, 0, 0};
        SDL_Init(SDL_INIT_VIDEO | SDL_INIT_TIMER);
        TTF_Init();
     
        ecran = SDL_SetVideoMode(600, 480, 32, SDL_HWSURFACE);
        SDL_WM_SetCaption("nom du prog !", NULL);
        police = TTF_OpenFont("arial.ttf", 18);
     
        SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
        position.x = 0;
        position.y = 0;
        SDL_BlitSurface(fond, NULL, ecran, &position);
     
        texte = TTF_RenderText_Blended(police,nom , couleurNoire);
        position.x = 45;
        position.y = 180;
        SDL_BlitSurface(texte , NULL, ecran, &position);
     
        texte = TTF_RenderText_Blended(police, NNserie, couleurNoire);
        position.x = 45;
        position.y = 260;
        SDL_BlitSurface(texte, NULL, ecran, & position);
     
        texte = TTF_RenderText_Blended(police, Ndevie, couleurNoire);
        position.x = 45;
        position.y = 340;
        SDL_BlitSurface(texte, NULL, ecran, & position);
     
        SDL_Flip(ecran);
     
        sprintf(temp, "%s" , SDL_Surface());
     
        if(NNserie != ANserie)
        {
            stdprn = fopen("PRN","wb");
            fprintf(stdprn, temp);
     
        texte = TTF_RenderText_Blended(police, "test", couleurNoire);
        position.x = 100;
        position.y = 360;
        SDL_BlitSurface(texte, NULL, ecran, & position);
        SDL_Flip(ecran);
     
            fstream fichier("Test.txt", ios::out | ios::trunc);
            fichier<<NNserie<<endl;
            fichier<<NNserie<<endl;
            fichier<<Ndevie<<endl;
            fichier<<nom<<endl;
            fichier.close();
        }
        SDL_Delay(2000);
        TTF_CloseFont(police);
        TTF_Quit();
        SDL_FreeSurface(texte);
        SDL_Quit();
     
    }
        return EXIT_SUCCESS;
    }
    Voilà le probléme , lorsque je lance mon programme il démarre et m'affiche le rendu , normal .
    Cependant ma boucle réinitialise la fenétre SDL mais les variables ne se réinitialise pas et la finalité reste la méme . De plus ma condition "if" ne sert a rien , c'est a dire que ANsérie peut étre égal comme inégale a NNsérie , le programme passeras quand méme dans la boucle .
    C'est pourquoi je vous demande de l'aide svp , je doit avoué étre largué sur ce coup , merci d'avance.

  2. #2
    Expert confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    1 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 711
    Points : 4 442
    Points
    4 442
    Par défaut
    Citation Envoyé par Progmeur Voir le message
    De plus ma condition "if" ne sert a rien , c'est a dire que ANsérie peut étre égal comme inégale a NNsérie , le programme passeras quand méme dans la boucle .
    C'est pourquoi je vous demande de l'aide svp , je doit avoué étre largué sur ce coup , merci d'avance.
    Hello,

    Tu compares des pointeurs, les adresses sur lesquelles ils pointent seront toujours différentes, donc ta condition est équivalente à if(1).

  3. #3
    En attente de confirmation mail
    Homme Profil pro
    Stagiaire\Lycéen
    Inscrit en
    Mars 2013
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Stagiaire\Lycéen

    Informations forums :
    Inscription : Mars 2013
    Messages : 61
    Points : 13
    Points
    13
    Par défaut Re
    Merci pour ta réponse , je vais arranger sa.

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    Bonsoir,

    on est en C++, on possède la classe std::string, qui surcharge les opérateurs qui semblent naturels d'utilisation sur les chaînes de caractères.

    Tes includes (comme le reste du code) semblent être le résultat de nombreux copier/coller irréfléchis et brouillons
    - preuve en est des macros __cplusplus et __APPLE__
    - stdio.h ne sert à rien
    - stdlib.h idem, surtout quand il est inclus d'office puis sous condition
    - include de sdl.h dans un if ET le else
    - include de sdl_ttf sous condition mais toujours utilisé
    - ifstream puis FILE* (non fermé)
    - du char[] et non des std::string

    Pourquoi redéclarer SDL_Delay ?

    Pourquoi ouvrir le même fichier à chaque itération, et en double ?
    Gros problème de fuite mémoires, revois l'utilisation de sdl et ttf.
    Pourquoi quitter et réinitialiser sdl et ttf à chaque itération ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sprintf(temp, "%s" , SDL_Surface());
    Qu'as-tu essayé de faire ???
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  5. #5
    En attente de confirmation mail
    Homme Profil pro
    Stagiaire\Lycéen
    Inscrit en
    Mars 2013
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Stagiaire\Lycéen

    Informations forums :
    Inscription : Mars 2013
    Messages : 61
    Points : 13
    Points
    13
    Par défaut re
    effectivement, ce sont des copiés collées, au départ j'ai coder chaque partit indépendament du reste et c'est vrai qu'en mélangeant le tout c'est trés moche, je m'en suis pas rendue compte de suite mais effectivement tu as raison. En fait le:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sprintf(temp, "%s" , SDL_Surface());
    a été fait pour utiliser:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
            stdprn = fopen("PRN","wb");
            fprintf(stdprn, temp);
    qui finalement ne sert a rien.
    Merci de ta réponse.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Morpion - Problème conditions de boucles
    Par max1012 dans le forum Débuter
    Réponses: 2
    Dernier message: 07/03/2013, 15h47
  2. [Débutant] problème condition boucle while
    Par doudou47 dans le forum VB.NET
    Réponses: 20
    Dernier message: 09/05/2012, 11h03
  3. [Toutes versions] Problème choix et condition de boucle
    Par mentat dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/02/2012, 16h56
  4. Problème condition d'arrêt boucles while et for
    Par Clairette29 dans le forum MATLAB
    Réponses: 2
    Dernier message: 25/06/2008, 11h51
  5. [Tableaux] Problème avec les boucles
    Par speed_man002 dans le forum Langage
    Réponses: 4
    Dernier message: 21/09/2005, 15h42

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