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 :

Tableau à double entrée et fonction


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti Avatar de MayaKobayashi
    Femme Profil pro
    Etudiante en 1ère année Licence mention Informatique
    Inscrit en
    Novembre 2015
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Etudiante en 1ère année Licence mention Informatique

    Informations forums :
    Inscription : Novembre 2015
    Messages : 26
    Par défaut Tableau à double entrée et fonction
    Bonjour,



    On me demande de définir une fonction qui prendra en entrée un tableau d'entiers t de type TAB2DIM (typedef int TAB2DIM[50][20];) et qui permettra d’affecter chaque case du tableau à l’aide d’une saisie réalisée avec scanf().

    Voici ce que j'ai fais :

    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
    #define TAILLE1 50
    #define TAILLE2 20
    
    typedef int TAB2DIM[50][20];
    
    void  F18(TAB2DIM t)
    {
    int i,j;
    
    for (i=0;i<TAILLE1;i++)
    for (j=0;j<TAILLE2;j++)
    
    scanf("%d",&t[i][j]);
    
    }
    Est-ce correct ?

    Merci d'avance

  2. #2
    Membre actif Avatar de Abacar94
    Homme Profil pro
    L2 Math-informatique
    Inscrit en
    Novembre 2015
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Niger

    Informations professionnelles :
    Activité : L2 Math-informatique

    Informations forums :
    Inscription : Novembre 2015
    Messages : 103
    Par défaut
    Citation Envoyé par MayaKobayashi Voir le message
    Bonjour,

    On me demande de définir une fonction qui prendra en entrée un tableau d'entiers t de type TAB2DIM (typedef int TAB2DIM[50][20] et qui permettra d’affecter chaque case du tableau à l’aide d’une saisie réalisée avec scanf().

    }[/CODE]
    c'est bien sauf que ta dit une fonction mais ce que tu a fait c'est une procédure......par ce que les procédures commence par
    or les fonction commence par le type a renvoyer et aussi elles ont return pour renvoyer la valeur finale
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    #define L 50
    #define C 20
    typedef int TAB2DIM[L][C];
    TAB2DIM F18(TAB2DIM t) /* comme TAB2DIM est le type de la fonction dont la fonction a pour type TAB2DIM et non void */
    {
    int i,j;
    for (i=0;i<L;i++)
    for (j=0;j<C;j++)
    scanf("%d",&t[i][j]);
    return(t);                     /* a la fin de la fonction elle doit renvoyer le tableau t  */
    }

  3. #3
    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
    Ah, là on arrive dans un "edge case" du C que je ne connais pas très bien.

    Normalement, suite à des raisons historiques, les tableaux sont passés "par adresse" en C, ce qui veut dire que Abacar94 a tort et que ta fonction modifie déjà le tableau.
    Par contre, j'ignore si le typedef y change quoi que ce soit (même si je pencherais pour non, c'est le genre de truc que je préférerais vérifier).
    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.

  4. #4
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    le typedef n'y change rien.
    Un typedef est un alias de type, ce n'est pas un nouveau type. Les deux noms sont le même type, et le paramêtre transmis est un pointeur (int (*t)[20]).

  5. #5
    Membre actif Avatar de Abacar94
    Homme Profil pro
    L2 Math-informatique
    Inscrit en
    Novembre 2015
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Niger

    Informations professionnelles :
    Activité : L2 Math-informatique

    Informations forums :
    Inscription : Novembre 2015
    Messages : 103
    Par défaut
    l’intéresser a bel et bien dit une fonction or les fonction doivent toujours renvoyer des valeur.........mais si le tableau est défini comme variable globale alors là on na pas besoin de renvoyer une valeur et coup se n'est plus une fonction mais plutôt une procédure(elle commence par void et ne renvois au qu’une valeur car elle opères sur les variable qui sont hors de la procédure )

  6. #6
    Membre averti Avatar de MayaKobayashi
    Femme Profil pro
    Etudiante en 1ère année Licence mention Informatique
    Inscrit en
    Novembre 2015
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Etudiante en 1ère année Licence mention Informatique

    Informations forums :
    Inscription : Novembre 2015
    Messages : 26
    Par défaut
    Citation Envoyé par Abacar94 Voir le message
    c'est bien sauf que ta dit une fonction mais ce que tu a fait c'est une procédure......par ce que les procédures commence par
    or les fonction commence par le type a renvoyer et aussi elles ont return pour renvoyer la valeur finale
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    #define L 50
    #define C 20
    typedef int TAB2DIM[L][C];
    TAB2DIM F18(TAB2DIM t) /* comme TAB2DIM est le type de la fonction dont la fonction a pour type TAB2DIM et non void */
    {
    int i,j;
    for (i=0;i<L;i++)
    for (j=0;j<C;j++)
    scanf("%d",&t[i][j]);
    return(t);                     /* a la fin de la fonction elle doit renvoyer le tableau t  */
    }
    Merci En effet, ce que j'ai fais était une procédure...

  7. #7
    Membre actif Avatar de Abacar94
    Homme Profil pro
    L2 Math-informatique
    Inscrit en
    Novembre 2015
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Niger

    Informations professionnelles :
    Activité : L2 Math-informatique

    Informations forums :
    Inscription : Novembre 2015
    Messages : 103
    Par défaut
    Citation Envoyé par MayaKobayashi Voir le message
    Merci En effet, ce que j'ai fais était une procédure...
    Tout le plaisir est pour en-faite mois aussi je confondait fonction et procédure par le passer

  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
    On est en C ici, pas en Visual Basic ou pire.

    En C, il n'y a pas de distinction entre procédures et fonctions: Tout est fonction, et peut avoir autant d'effets de bord que voulu, etc. La seule "différence" est la présence ou non d'un retour, mais le C ne s'embête pas à appeler la même chose par deux noms différents juste sur la base de ce détail.

    De plus, la notion de "distinguer procédures et fonctions" me ramène toujours à l'absurdité qu'était le BASIC sur calculatrice TI-89, où seuls les "programmes" pouvaient avoir des effets de bord (y compris toute interaction avec l'utilisateur), mais seules les "fonctions" étaient capables de retourner une valeur... Ainsi, les programmes étaient forcés de passer par une variable globale pour avoir une chance d'indiquer à l'appelant le résultat de leur interaction avec l'utilisateur. C'est à ce genre d'idiotie que mène cette distinction illusoire.
    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 Avatar de Abacar94
    Homme Profil pro
    L2 Math-informatique
    Inscrit en
    Novembre 2015
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Niger

    Informations professionnelles :
    Activité : L2 Math-informatique

    Informations forums :
    Inscription : Novembre 2015
    Messages : 103
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    On est en C ici, pas en Visual Basic ou pire.

    En C, il n'y a pas de distinction entre procédures et fonctions: Tout est fonction, et peut avoir autant d'effets de bord que voulu, etc. La seule "différence" est la présence ou non d'un retour, mais le C ne s'embête pas à appeler la même chose par deux noms différents juste sur la base de ce détail.
    Serte on apprend la programmation par ce que, pour la plus par sa nous fascine........mais aussi il y a un autre point a ne pas oublier,les enseignants !
    Mon enseignant de programmation, en première année, si on lui fait une procédure au lieu d'une fonction ou vices-versa......notre note va en pâtir

Discussions similaires

  1. fonction equiv,tableau double entrée
    Par aimebertrand dans le forum Excel
    Réponses: 2
    Dernier message: 23/03/2008, 07h43
  2. Réponses: 3
    Dernier message: 08/08/2007, 09h47
  3. tableau double entrée et requete sql
    Par oceane751 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 29/11/2005, 14h25
  4. tableau double entrée
    Par Andrey dans le forum C
    Réponses: 16
    Dernier message: 08/11/2005, 15h33
  5. [XSLT]tableau double entrée avec cellule manquante
    Par nferay dans le forum XSL/XSLT/XPATH
    Réponses: 9
    Dernier message: 08/03/2005, 15h07

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