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

Visual C++ Discussion :

Lire des nombres en boucle et Problème avec les tableaux


Sujet :

Visual C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 92
    Par défaut Lire des nombres en boucle et Problème avec les tableaux
    Bonjour , je suis débutant en visual Basic , je cherche à mettre dans un tableau de taille quelconque des nombres et déterminer le minimum et la maximum .Mais je voudrais le faire à l'aide d'une fenêtre(pas de souci pour générer ma fenêtre ) . En fait , à la saisie du premier nombre , on affiche un message à l'utilisateur pour lui demander si il veut continuer , tant que l'utilisateur dit oui , la même fenêtre doit apparaître pour lui permettre de saisir la nouvelle valeur . Mon problème se situe à deux niveaux ,
    1-Quand bien même la fenêtre s'affiche lorsqu'il dit qu'il veut continuer ,mais quand il saisit la nouvelle valeur, elle ne s'incrémente pas dans mon tableau .En fait , tous les chiffres saisis se mettent à l'indice 0 du tableau . Et quand j'essaie d'afficher les valeurs du tableau situées au délà de l'indice 0 , ça me ramène de gros chiffres , comme si mon tableau n'était pas initialisé pour tant il est bien intialisé .
    Je voudrais donc que vous m'aidier à écrire ma fonction de type callback qui va mettre les valeurs saisies dans un tableau de taille N tout en m'affichant la boîte de dialogue si l'utilisateur saisit OK .
    Voici ma fonction
    Code visualC++ : 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
     
     
    LRESULT CALLBACK chercheminmax(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
    {
    	int tab[]={0} , i=0 ,val=0 ;
    	char  contenu[11] , contenu2[11];
    		switch (message)
    	{
    		case WM_INITDIALOG:
    				return TRUE;
     
    		case WM_COMMAND:
    		//	if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL) 
    		if (LOWORD(wParam) == ID_VALIDER) 
    			{
     
    			 GetDlgItemText(hDlg,IDC_NOMBRE,contenu,11 ) ;
    			 val= atoi(contenu);
                 tab[i++]= val;
    			 sprintf(contenu2,"Val vaut %d",i);
    			  MessageBox(hDlg ,contenu2 , "Message",MB_OK );
                  //écriture du Code 
     
     
     
    			}
     
    			if (LOWORD(wParam) == ID_ANNULER) 
    			{
    				EndDialog(hDlg, LOWORD(wParam));
    				return TRUE;
    			}
     
     
     
     
    			break;
     
     
    	}
        return FALSE;
    }

  2. #2
    Membre chevronné

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    426
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 426
    Par défaut
    Salut,
    La fonction 'chercheminmax' ne comporte aucune structure de boucle, la variable 'i' étant créée dans cette fonction elle est initialisée à 0 à chaque appels de 'chercheminmax', la seule fois où elle est incrémentée ça ne sert à rien : est équivalent à donc 'tab[0] = val;' puis la fonction se termine...

    Il faut que ton tableau soit créé avant l'appel de la fonction 'chercheminmax', et soit passé en paramètre à ta fonction .Si tu veux faire varier sa taille il serait plus simple d'utiliser un 'container' de la STL

    PS : La rédaction de ta fonction est très 'désordre', ça la rend difficile à lire...

  3. #3
    Expert confirmé
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 527
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 527
    Par défaut
    En fait , tous les chiffres saisis se mettent à l'indice 0 du tableau . Et quand j'essaie d'afficher les valeurs du tableau situées au délà de l'indice 0 , ça me ramène de gros chiffres , comme si mon tableau n'était pas initialisé pour tant il est bien intialisé .
    C'est le B.A. BA de la programmation Windows.

    Dans les fonctions CALLBACK au besoin il faut déclarer des variables locales à la fonction gérant les messages comme static
    Donc avec ces déclarations ça devrait fonctionner

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    static int tab[]={0} , i=0 ,val=0 ;
    static char  contenu[11] , contenu2[11];
    Maintenant si tu veux passer un tableau à la fonction CALLBACK il faut définir une structure de passage de paramètres,passée comme WPARAM ou LPARAM et qui sera récupérée avec des transtypages.

  4. #4
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 92
    Par défaut
    peux tu me donner plus de détails sur la manière à procéder et plus de détails sur la STL

Discussions similaires

  1. Problème avec les tableaux de char.
    Par Letinono dans le forum Débuter
    Réponses: 3
    Dernier message: 29/05/2008, 16h24
  2. problème avec les tableaux
    Par scary dans le forum Débuter
    Réponses: 2
    Dernier message: 29/03/2008, 23h44
  3. Problème avec les tableaux de pointeurs
    Par TheDoci dans le forum C
    Réponses: 2
    Dernier message: 07/01/2007, 13h04
  4. [Débutant] Problèmes avec les tableaux.
    Par Lwq dans le forum C++
    Réponses: 6
    Dernier message: 01/11/2005, 12h54

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