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++

  1. #1
    Membre du Club
    Inscrit en
    Juin 2008
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 92
    Points : 40
    Points
    40
    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 éclairé

    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
    Points : 827
    Points
    827
    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
    Membre du Club
    Inscrit en
    Juin 2008
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 92
    Points : 40
    Points
    40
    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

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 141
    Points : 12 245
    Points
    12 245
    Par défaut
    Heu, là, vraiment sans fanfaronnade, je pense que vous devez investir un minimum dans un bouquin sur le C++.

  5. #5
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 367
    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 367
    Points : 20 407
    Points
    20 407
    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.

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