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 affichage d'une valeur (pointeur ? )


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2013
    Messages : 18
    Par défaut Problème affichage d'une valeur (pointeur ? )
    Bonsoir à tous .

    Je poste ici car j'ai un soucis avec un programme que j'ai réaliser en language C.

    Ce programme réalise quelque chose d'assez basique, il permet de saisir des
    valeurs dans un tableau dont la taille est fixé à 10 au maximum.

    Pour chaque case jusqu'à atteindre la taille du tableau le programme demande à l'utilisateur de saisir des valeurs .

    Une fois ces valeurs saisies on souhaite procéder à une recherche séquentielle qui va nous retourner la position de la valeur rechercher.

    Jusque là je n'ai absolument aucun soucis et mon programme fonctionne parfaitement.

    Je souhaite cependant rajouter une fonctionnalité à ce programme qui est l'affichage de la plus grande valeur et de la plus petite valeur saisies.

    J'ai donc utiliser pour ce faire un Void avec 4 paramètres qui sont les suivants : le tableau , la taille du tableau, max, min. (Il est possible de faire autrement mais le but de l'exercice étant d'utiliser une procédure)

    Je souhaite bien évidement connaitre quelle est la valeur max et quelle est la valeur min je fait donc un affichage , et c'est là qu'est mon problème l'instruction printf me retourne ce qui semble être une adresse mémoire.

    Ma question est donc comment faire pour pouvoir récupérer mes valeurs ?

    Voici mon code :

    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
    #include <stdio.h>
    #include <stdio.h>
     
    	void maxmin (int tab[], int taille[], int *min, int *max);
     
    	int main()
    	{
     
    /* Déclaration des variables */
     	int TAB[10];
     	int VALEUR;
    	int POSITION;
    	int N;
    	int I;
    	int max = 0;
    	int min = 0;
     
    /* Saisie du tableau */
     	printf("Dimension du tableau (max 10) : ");
     	scanf("%d", &N );
     
     	for (I=0; I<N; I++) {
         	printf("position %d : ", I);
         	scanf("%d", &TAB[I]);
        }
     
    /* Recherche séquentielle */
     	printf("valeur rechercher : ");
     	scanf("%d", &VALEUR );
     	printf("Tableau: \n");
     
     	for (I=0; I<N; I++)
         	printf("%d ", TAB[I]);
     		printf("\n");
     		POSITION = -1;
     
     	for (I=0 ; (I<N)&&(POSITION==-1) ; I++)
           if (TAB[I]==VALEUR)
               POSITION=I;
     
     
     		if (POSITION==-1)
         	{printf("La valeur recherchée n,'existe pas");
      			}else {
        			printf("%d se trouve position %d\n",VALEUR, POSITION);
     
    		}
     
     
    /* Procédure pour affiche le max et le min du tableau */
     
    	void maxmin (int tab[], int taille[], int *min, int *max)
     
    		{
    			int i=0;
    			*max = tab[0];
    			*min = tab[0];
     
     
    			for (i=0;i<taille;i++)
    			{
     
     
    				if (tab[i]>(*max))
    					{
    						(*max)=tab[i];
     
    					}
     
    				if (tab[i]<(*min))
    					{
    						(*min)=tab[i];
     
    					}
    			}
     
     
    		}
     
    /* Affichage du max et du min  ( mon problème ce situe ici) */
    			printf ("max = %d\t",max);
    			printf ("min = %d",min);
     
     
    }
    Merci d'avance pour votre aide

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Déjà, tu peux retirer les crochets derrière taille.

    Ensuite, l'appel dans main() se fait ainsi:
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    maxmin(TAB, 10, &min, &max);
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre expérimenté Avatar de moins1
    Homme Profil pro
    Autre
    Inscrit en
    Février 2013
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Autre
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2013
    Messages : 85
    Par défaut
    Ta fonction est définie dans le main(). Petit probleme de {} probablement.

    Sinon si la fonction ne sert qu'à afficher, c'est ce que le commentaire dans ton code dit, le passage pas pointeur pour min et max est inutile, en fait min et max sont inutile dans ce cas.


  4. #4
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2013
    Messages : 18
    Par défaut
    Si j'ai bien compris tu me suggère donc de supprimer tout ce qui fait référence aux pointeurs ? En fessant cela mon max = 0 et min = 0


    Ce programme nous à été donner par notre prof à la va vite et j'ai comme l'impression que celui-ci nous à aiguiller sur une fausse piste.

  5. #5
    Membre expérimenté Avatar de moins1
    Homme Profil pro
    Autre
    Inscrit en
    Février 2013
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Autre
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2013
    Messages : 85
    Par défaut
    Si tu dois utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    void maxmin (int tab[], int taille, int *min, int *max);
    on ne parle plus d'affichage mais d'une fonction qui détermine les min et max que tu dois afficher par la suite dans ton main(). C'est pas vraiment clair dans ton premier post.

    Dans ce cas là sors quand même ta fonction du main et corrige taille[] comme ça été dit par Médinoc. Ensuite dans le main() appel ta fonction et affiche max et min.

    Plus que ça on te donne le code


  6. #6
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2012
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2012
    Messages : 19
    Par défaut
    bonjour à tous
    le problème est déjà résolu par nos collègues ,mais il y a une remarque :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    void maxmin (int tab[], int taille[], int *min, int *max)
    {
        *max = tab[0];
        *min = tab[0];
     
     
        for (i=0;i<taille;i++)// il faut initialiser la variable i par 1 (i=1)
        {.....
            if (tab[i]>(*max))/* parce que  ici  une itération NON-ESSENTIEL  ( comparaison le nombre par lui-même ) */
    .....
    }

  7. #7
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2013
    Messages : 18
    Par défaut
    Merci à tous pour vos réponses.

    J'ai enfin compris où étaient mes erreurs. Je clos donc la discussion.

    Voici le code pour ceux qui sont / seront intéressées

    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
    #include <stdio.h>
    #include <stdlib.h>
     
    	void maxmin (int TAB[], int taille[], int *min, int *max);
     
    	int main()
    	{
     
     	int TAB[10];
     	int VALEUR;
    	int POSITION;
    	int N = 10;
    	int I;
    	int max = 0;
    	int min = 0;
     
     
     
     
     	for (I=0; I<N; I++)
        {
         	printf("TAB[%d] : ", I);
         	scanf("%d", &TAB[I]);
        }
     
     	printf("valeur rechercher : ");
     	scanf("%d", &VALEUR );
     	printf("Tableau: \n");
     
     	for (I=0; I<N; I++)
        {
         	printf("%d ", TAB[I]);
     		printf("\n");
     		POSITION = -1;
     	}
     
     	for (I=0 ; (I<N)&&(POSITION==-1) ; I++)
     
     
           if (TAB[I]==VALEUR)
               POSITION=I;
     
     		if (POSITION== -1)
                {
                    printf("La valeur recherchée n'existe pas");
                }
                    else
                        {
                      printf("%d se trouve TAB[%d]\n",VALEUR,POSITION);
                        }
     
     
     
        maxmin(TAB,10,&min,&max);
     
    	printf("max = %d\t",max);
    	printf("min = %d",min);
     
    return 0;
     
    }
     
    void maxmin (int TAB[], int taille[], int *min, int *max)
    {
    			int i=0;
    			*max = TAB[0];
    			*min = TAB[0];
     
    			for (i=1;i<taille;i++)
    			{
                    if (TAB[i]>(*max))
    					{
    						(*max)=TAB[i];
    					}
     
    				if (TAB[i]<(*min))
    					{
    						(*min)=TAB[i];
    					}
                }
     
     
    		}

  8. #8
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void maxmin (int TAB[], int taille[], int *min, int *max);
    Ceci est toujours faux. Si tu n'as pas au moins un warning sur la ligne 54 qui contient l'appel à la fonction, c'est que ton compilateur est mal réglé.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  9. #9
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2013
    Messages : 18
    Par défaut
    J'avais oublié. Merci

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

Discussions similaires

  1. Affichage d'une valeur dans une zone de texte : Problème d'affichage
    Par snoopy69 dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 08/07/2008, 08h49
  2. forcer l'affichage d'une valeur null
    Par sundjata dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 23/11/2005, 09h52
  3. problème pour récupérer une valeur dans ma bd (débutante)
    Par auryn111 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 26/08/2005, 17h49
  4. [JDBC] Affichage d'une valeur de type CloB
    Par Jihed Amine Maaref dans le forum JDBC
    Réponses: 3
    Dernier message: 07/04/2005, 15h03
  5. Réponses: 13
    Dernier message: 24/02/2005, 16h45

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