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 :

probleme avec des if


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 116
    Par défaut probleme avec des if
    Bonjour,
    j´ai realiser un programme qui est inclu dans une application en c++ avec pour structure:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    #include...
     
    long_nameofmyprogram(parametres )
    {
        if(Why==0)
        {
         ...
         }
         if(Why==1)
         {
         ...
          }
    }
    Est ce qu´il est possible de mettre un if (librairie initialisation) avant le long parce que quand j´essaie j´ai un message d´error
    E2040 declaration terminated incorrectly

    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
     
    #include...
    if()
    {
    long_nameofmyprogram(parametres )
    {
        if(Why==0)
        {
         ...
         }
         if(Why==1)
         {
         ...
          }
    }//fin du long
    }//fin du if
    Mais je ne sais pas si c´est autorise de faire ca.

    En faite je dois verifier si je peux creer une une instance MCR et s´il n´y a pas de probleme avec l´apelle d´une librairie dll cree avec matlab avec des if. Mais je ne peux pas les mettre dans mon long juste en dessous du long car lorsque je sors de la boucle Why=0 le programme retourne au dessous de la boucle why=0 et on ne peux pas appeller deux fois la verification pour creer une instance MCR.

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 119
    Billets dans le blog
    148
    Par défaut
    Bonjour,

    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
     
    #include...
    if()
    {
    long_nameofmyprogram(parametres )
    {
    if(Why==0)
    {
    ...
    }
    if(Why==1)
    {
    ...
    }
    }//fin du long
    }//fin du if
    Tu peux pas ... cela ferai un morceau de code hors champ de tout code ( enfin je sais pas comment le dire ... )

    Par contre si j'ai bien compris, tu veux que ta fonction soit executer seulement si l'objet à réussi à être créer. Tu peux en rajoutant un flag qui indique si une erreur c'est produite. Ce flag ( boolean ) sera initialisé correctement pour dire si la construction à réussi. Tu vérifie la valeur de ce flag lorsque tu veux executer la fonction.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Membre chevronné Avatar de Rafy
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    415
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 415
    Par défaut
    Bonjour,
    Je n'arrive pas trop a comprendre le problème en fait...
    Tu as une fonction, et elle doit avoir un comportement different suivant les valeurs de la variable Why ?
    En C++ tu ne peux pas avoir du code qui se ballade tout seul, il doit être soit dans une fonction, soit dans une methode (une fonction qui appartient à une classe)
    Je pense que pour que l'on comprenne mieux le problème tu devrais poster le code de ta boucle.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 116
    Par défaut
    merci pour vos reponses, en faite j´utilise une librarie creer avec matlab dans mon programme. Et avant d´utiliser les fonctions de ma librairie je dois faire
    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
     if( !mclInitializeApplication(NULL,0) )
        {
            fprintf(out, "Could not initialize the application.\n");
        	return -1;
        }
        else
        {
         if (!libfinalInitialize())
        {
            fprintf(out,"Could not initialize the library.\n");
            return -2;
        }
        else
        {
       //je dois etre dans cette boucle pour utiliser les fonctions de la librairie
        }
    ce qui me permet de voir si j´ai un probleme ou pas avec les instances dont j´ai besoin pour deployer une librairie creer avec matlab sur un ordinateur ou il n y a pas matlab.
    Le probleme que j´ai c est qu on ne peut appeler !mclInitializeApplication qu´une seule fois. Et moi j´utilise des fonctions de ma libraries dans le why=0 et le why=1. Pour finir, lorsque je parcours ma boucle Why=0 a la fin je dois returner une valeur differente de -1 sinon tout s´arrete mais le probleme c est que si je retourne autre chose que -1 le programme est reparcouru depuis le debut.(la valeur de why change automatiquement des que je sor de why=0) Et donc il refait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     if( !mclInitializeApplication(NULL,0) )
        {
            fprintf(out, "Could not initialize the application.\n");
        	return -1;
        }
        else
        {
         if (!libfinalInitialize())
        {
            fprintf(out,"Could not initialize the library.\n");
            return -2;
        }
        else
        {
    mais la j´ai une erreur car je ne peux pas appeler deux fois InitializeApplication.
    Donc je ne sais pas trop ou mettre ces deux if.

  5. #5
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Salut,
    C'est pas très clair. Tu pourrais remettre toutes les briques ensembles : tous ton code d'initialisation et ton why tels qu'ils sont dans ton source ?

    P.S. fprintf(out) -> std::cout<<
    P.P.S. : if( !mclInitializeApplication(NULL,0) ) et if (!libfinalInitialize()), c'est certainement dans ce genre de cas qu'il faut penser exception.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 116
    Par défaut
    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
     
    #include...
    #include'librarie.h'  //library created with matlab
    //y a aussi un include de mon fichier.h avec les methodes de mon .cpp
     
    long_nameofmyprogram(parametres )
    {
        // debut du programme
         if( !mclInitializeApplication(NULL,0) )
        {
            fprintf(out, "Could not initialize the application.\n");
        	return -1;
        }
        else
        {
         if (!libfinalInitialize())
        {
            fprintf(out,"Could not initialize the library.\n");
            return -2;
        }
        else
        {
     
           if(Why==0)
           {
            ...
            return 1;// en retournant 1 je sors de why=0 et why passe a 1 tout seul mais le programme est relu du debut 
            }
            if(Why==1)
            {
            ...
             return 1;//cette fois ci Why reste a 1 et pareil qu avant on retourne au debut du programme, de cette maniere on effectue la boucle why=1 tant qu´un critere n´est pas atteint.Le critere me permet d´arreter le programme avec le return -1. En effet une fois que mon critere est atteint on ne retourne plus dans why=1 et on a le return -1 pour tout stopper. 
            }
     
        libfinalTerminate();
        } // end of loop if with libfinalInitialize()
     
        mclTerminateApplication();
      }// end of  mclTerminateApplication()
     
          return -1;
     
    }
    Le probleme c´est que je ne peux appeler qu´une seule fois: mclInitializeApplication

    mclInitializeApplication allows you to set the global MCR options. They apply equally to all MCR instances. You must set these options before creating your first MCR instance.

    These functions are necessary because some MCR options such as whether or not to start Java™, the location of the MCR itself, whether or not to use the MATLAB JIT feature, and so on, are set when the first MCR instance starts and cannot be changed by subsequent instances of the MCR.

    Caution You must call mclInitializeApplication once at the beginning of your driver application. You must make this call before calling any other MathWorks functions. This also applies to shared libraries. Avoid calling mclInitializeApplication multiple times in an application as it will cause the application to hang.

    After you call mclTerminateApplication, you may not call mclInitializeApplication again. No MathWorks functions may be called after mclTerminateApplication.
    Dites moi si c´est pas assez claire.
    A oui pour le printf, c´est parce que j´apelle une c shared library ( je fais mes tests dans un projet en c )et non une c++ shared library mais on peut utiliser les deux en c++ nan? Cela pose un probleme?

Discussions similaires

  1. Probleme avec des structures
    Par lenectar dans le forum C
    Réponses: 17
    Dernier message: 30/12/2005, 09h53
  2. [FLASH MX] Probleme avec des liens.
    Par maxcmoi dans le forum Flash
    Réponses: 2
    Dernier message: 12/11/2005, 11h11
  3. Probleme avec des socket !
    Par Ptimath44 dans le forum Réseau
    Réponses: 11
    Dernier message: 31/10/2005, 18h11
  4. Probleme avec des pointeurs...
    Par barucca dans le forum C++
    Réponses: 5
    Dernier message: 23/08/2005, 21h05
  5. Problemes avec des cellules vides
    Par arsgunner dans le forum ASP
    Réponses: 7
    Dernier message: 14/06/2004, 08h42

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