Fonction lire tableau en C
Répondre à la discussion
Affichage des résultats 1 à 9 sur 9

Fonction lire tableau en C



  1. #1
    invite6979f811

    Fonction lire tableau en C


    ------

    bonjour
    je doi ecrire une fonction LIRE_TAB à trois paramètres TAB, N et NMAX lit la dimension N et les composantes d'un tableau TAB du type int. La dimension N doit être inférieure à NMAX.
    dans les parametres de la fonction on a :
    (int *TAB, int *N, int NMAX)
    pour quoi on pointe sur N ??
    pourquoi on a pas fait int N comme int NMAX ?
    et même dans la fonction ecrire_tab qui permet d'ecrire un tableau on a (int*TAB,int N)
    pourquoi ici on ne fait pas de pointeur sur N??
    merci d'avance

    -----

  2. #2
    invite01c3c114

    Re : Fonction lire tableau en C

    c'est vrai que le pointeur sur N n'est pas utile.

  3. #3
    doul11

    Re : Fonction lire tableau en C

    bonjour,

    ce n'est pas un pointeur sur N !

    dans lire_tab N est un pointeur sur un int, qui peut éventuellement pointer sur le N de la fonction qui appelle lire_tab


    Code:
    #include "stdio.h"
    
    void lire_tab(int *N)
    {
    printf("adresse du pointeur = %p | contenu pointé = %i\n",N,*N);
    }
    
    
    int main ()
    {
    int N=55;
    int Z=66;
    
    lire_tab(&N);
    lire_tab(&Z);
    
    return 0;
    }
    La logique est une méthode systématique d’arriver en confiance à la mauvaise conclusion.

  4. #4
    bzh_nicolas

    Re : Fonction lire tableau en C

    Citation Envoyé par etoiledemer123 Voir le message
    bonjour
    je doi ecrire une fonction LIRE_TAB à trois paramètres TAB, N et NMAX lit la dimension N et les composantes d'un tableau TAB du type int.
    Si j'ai bien compris la lecture de N (par scanf ?) se fait dans LIRE_TAB. Dans ce cas, le pointeur permet de modifier N pour savoir (dans la fonction appelante) quelle valeur a été entrée dans LIRE_TAB.

  5. A voir en vidéo sur Futura
  6. #5
    whoami

    Re : Fonction lire tableau en C

    Bonjour,
    +1 sur bzh_nicolas, et pour moi, c'est une mauvaise implémentation.

    Si on doit lire un entier via une fonction, cette fonction devrait renvoyer cet entier, plutôt que de faire joujou avec un pointeur et ne rien renvoyer explicitement.

  7. #6
    invite6979f811

    Re : Fonction lire tableau en C

    merci infiniment pour vos réponses
    maintenant je plonge dans une autre question
    j'ai la structure suivante:
    struct Produit
    {
    char Nom[20];
    float Prix;
    };
    je dois ecrire une fonction qui lit un produit :
    on a
    void saisi_produit(Produit* P )
    {
    printf(" Nom : "); scanf("%s",P->Nom);
    printf(" Prix : "); scanf("%f",& (P->Prix));
    }

    pourriezvous m'expliquer svp pourquoi on a fait P->Nom et P->Prix et non pas P.Nom et P.Prix ??
    grand merci d'avance

  8. #7
    whoami

    Re : Fonction lire tableau en C

    Bonjour,

    C'est la syntaxe pour adresser les champs d'une structure via un pointeur.

    Et c'est du C basique.

    En clair, n'importe quel bouquin, cours, tutos ... en parle.

  9. #8
    invite6979f811

    Re : Fonction lire tableau en C

    merci bcp
    svp permettez moi d'ajouter une question
    j'ai une fonction qui affiche un tableau de produits
    je peux faire printf("%s",(T+i).Prix); pour afficher le champs prix de la composante du tableau ou bien je dois faire printf("%s",T[i].Prix);

  10. #9
    doul11

    Re : Fonction lire tableau en C

    Citation Envoyé par etoiledemer123 Voir le message
    struct Produit
    {
    char Nom[20];
    float Prix;
    };
    void saisi_produit(Produit* P )
    {
    printf(" Nom : "); scanf("%s",P->Nom);
    printf(" Prix : "); scanf("%f",& (P->Prix));
    }
    ce code ne fonctionne pas :

    il faut ajouter struct devant Produit dans void saisi_produit(Produit* P ), je trouve mieux d'utiliser typedef :

    Code:
    #include "stdio.h"
    
    
    typedef struct 
    {
    char Nom[20];
    float Prix;
    }Produit;
    
    
    void saisi_produit(Produit *P )
    {
    printf(" Nom : "); scanf("%s",P->Nom);
    printf(" Prix : "); scanf("%f",&P->Prix);
    }
    
    
    int main ()
    {
    Produit p;
    
    saisi_produit(&p);
    
    printf("<%s> <%f>\n",p.Nom,p.Prix);
    return 0;
    }]
    aussi il est plus que recommandé de tester la réussite des scanf et de veiller a ne pas dépasser la (courte) longueur du nom.
    La logique est une méthode systématique d’arriver en confiance à la mauvaise conclusion.

Discussions similaires

  1. R : lire un tableau de données
    Par Guillaume69 dans le forum Mathématiques du supérieur
    Réponses: 4
    Dernier message: 18/10/2010, 22h07
  2. Fonction et tableau en C
    Par invite64bb1f45 dans le forum Électronique
    Réponses: 3
    Dernier message: 20/10/2009, 15h04
  3. fonction , tableau de variation etc
    Par inviteb517eda2 dans le forum Mathématiques du collège et du lycée
    Réponses: 3
    Dernier message: 04/10/2009, 20h37
  4. Tableau du variation de la fonction réciproque
    Par invite139627a8 dans le forum Mathématiques du collège et du lycée
    Réponses: 2
    Dernier message: 01/11/2008, 23h32
  5. tableau de fonction
    Par invitea86cdc01 dans le forum Mathématiques du collège et du lycée
    Réponses: 5
    Dernier message: 17/09/2008, 16h52