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 les variables locales


Sujet :

C

  1. #1
    Futur Membre du Club
    Probleme avec les variables locales
    Bonjour, j'essaie de faire une fonction pour creer un tableau et de le remplir et puis une fonction qui calcule le min et son indice, apres je veux les appeler a partie du main et afficher le resultat, mais ca ne marche pas 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
    86
    87
    88
    89
    90
    91
    92
    93
     
     
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <stdbool.h>
     
    #define MAX 500
     
    	int tab[MAX];
    	int i = 0;
    	int x;
     
     
    //Écrire ici la fonction "remplir" de remplissage (par saisies au clavier)
    // d'un tableau t de taille nb 
     
     
    void remplir(float *tab, int nb){
     
    	float val;
    	int i;
     
    	for(i=0; i<nb; i++){
     
    	    printf("tab[%d]=",i);
    	    scanf("%f", &val);
    	    tab[i]=val;
     
    	}
    }
     
     
    //Écrire ici la fonction "calcule_min" qui calcule et renvoie en 
    // résultat le minimum des éléments d'un tableau t de taille size. Un
    // paramètre supplémentaire permettra de ramener également l'indice 
    // dans le tableau de ce minimum
    // ... 
     
     
     
     
    void calcule_min(float *tab, int size, float *min, int *indicemin){
     
     
    		*min = tab[0];
    		*indicemin = 0 ; 
    		int i=1;
     
    		while(i<size)
    		{
    			if(tab[i]<*min)
    			{
     
    				*min=tab[i];
    				*indicemin = i; 
     
    			}
     
    			i++;
    		}
     
    }
     
     
    // Compléter la fonction main :
    int main(int nbArgs, char* arg[])
    {
     
        float *tab;
        int n, indicemin;
        float min;
     
     
    	printf("Donner la taille du tableau : \n");
    	scanf("%d", &n);
     
     
     
        // Remplissage du tableau :
     
        tab = (float*)malloc(n*sizeof(float));
     
        remplir(tab, n);
     
        // calcule de min
     
        calcule_min(tab,nbArgs,&min,&indicemin);
        printf("minimum : %f | son indice : %d \n",min,indicemin);
     
     
        return EXIT_SUCCESS;
    }

  2. #2
    Expert confirmé
    Bonjour.

    À quoi servent les lignes 10, 11 et 12 ?

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    int tab[MAX];
    int i = 0;
    int x;


    tab[] est déclaré localement dans main ();. Pourquoi vouloir aussi déclarer un tableau du même nom en global ? Idem pour i et x...
    Utilisation de Glade avec Gtk+ - N'oubliez pas de consulter les FAQ Gtk et les cours et tutoriels Gtk

  3. #3
    Expert confirmé
    Bonjour,

    Il y a en effet des lignes en trop surement dues à des évolutions.
    Mais surtout, il reste ligne 88 un second argument qui devrait être n à la place de nbArgs.
    Savoir se relire est une des choses les plus importantes en programmation.

  4. #4
    Futur Membre du Club
    Citation Envoyé par gerald3d Voir le message
    Bonjour.

    À quoi servent les lignes 10, 11 et 12 ?

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    int tab[MAX];
    int i = 0;
    int x;


    tab[] est déclaré localement dans main ();. Pourquoi vouloir aussi déclarer un tableau du même nom en global ? Idem pour i et x...

    Ok mais ça devrait pas poser pb le pb c’est dans les vars locales je perds leurs valeurs en appelans la fonction calcule_min

  5. #5
    Membre éprouvé
    Hello,

    Ce que veut dire dalfab, c'est que ligne 88, le second argument de l'appel à la fonction doit être le nombre d'éléments du tableau, c'est à dire n. nbArgs quant à lui est le nombre d'arguments passés au programme.

  6. #6
    Futur Membre du Club
    Citation Envoyé par dalfab Voir le message
    Bonjour,

    Il y a en effet des lignes en trop surement dues à des évolutions.
    Mais surtout, il reste ligne 88 un second argument qui devrait être n à la place de nbArgs.
    Savoir se relire est une des choses les plus importantes en programmation.
    j'etais sur mon tel il m'affichait pas la bonne ligne... sinon c'est bon maintenant merci pour votre réponse!

###raw>template_hook.ano_emploi###