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 :

Tableaux et fonctions en C


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 Tableaux et fonctions en C
    Bonsoir,


    On m'a d'abord demandé de définir un type nommé TABCHAR permettant de déclarer des tableaux de 100 caractères.
    Voici ce que j'ai fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    typedef int TABCHAR[100];
    Ensuite, l'énoncé demande, en considérant un tableau t de type TABCHAR, de chercher si le caractère ‘$’ est mémorisé dans ce tableau. Il faut écrire des lignes d’instructions permettant d’afficher la valeur -1 si le caractère ‘$’ n’est pas présent dans t, et sinon, l’indice d’une case du tableau où le caractère ‘$’ apparaît pour la première fois s’il est mémorisé dans t.

    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
    typedef int TABCHAR[100];
     
    TABCHAR t;
    int i, taille=100; /*est-ce inutile ici de préciser la taille du tableau?*/
    char n='$';
     
    for (i=0;i<taille;i++)
    {
    if (t[i]==n)  /*t[i] est-il correct ? pourrait-il y avoir une confusion avec le t de TABCHAR t?*/
       printf("%d",i);
    else
       puts("-1");
    }
    Toujours dans la même idée, il faut écrire une fonction F15 correspondant au traitement réalisé par les lignes d’instructions précédentes! Plutôt que de procéder à un affichage, il faudra que la fonction ait pour résultat -1 quand -1 était affiché, et sinon l’indice de la case qui était affiché.
    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
    typedef TABCHAR[100]
     
    char F15(TABCHAR t) /*TABCHAR peut-il être un paramètre ?*/
    {
    int tailleTableau = 100, i; /*Y a-t-il un interêt à préciser la taille du tableau étant donné que TABCHAR le fait déjà ?*/
    char n='$';
     
    for (i=0;i<tailleTableau;i++)
    {
      if (t[i]==n)
           return i;
      else 
          return -1;
    }
    Est-ce correct s'il vous plait?

    Merci d'avance

  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
    Peux-tu commencer par éditer ton post en évitant la double-imbrication de balises CODE?
    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
    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
    Première remarque: Tu veux un tableau de cent char, pas un tableau de 100 int.

    Pour éviter de se répéter quant aux tailles de tableau, la méthode classique, c'est de définir une macro pour la taille:
    Code C : 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
    #define TAILLE_TABLEAU1 100
    typedef char TABCHAR[TAILLE_TABLEAU1];
     
    ...
     
    TABCHAR t;
    int i
    char aTrouver='$';
     
    for (i=0 ; i<TAILLE_TABLEAU1 ; i++)
    {
    if (t[i]==aTrouver)  /*t[i] est-il correct ? pourrait-il y avoir une confusion avec le t de TABCHAR t?*/
       printf("%d",i);
    else
       puts("-1");
    }
    Tu vas vite voir le problème de ce code: Il ne se limite pas au premier caractère trouvé. Il faut donc interrompre la boucle (traditionnellement, ça se fait avec break) après avoir trouvé le premier caractère.
    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
    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 Médinoc Voir le message
    Première remarque: Tu veux un tableau de cent char, pas un tableau de 100 int.

    Pour éviter de se répéter quant aux tailles de tableau, la méthode classique, c'est de définir une macro pour la taille:
    Code C : 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
    #define TAILLE_TABLEAU1 100
    typedef char TABCHAR[TAILLE_TABLEAU1];
     
    ...
     
    TABCHAR t;
    int i
    char aTrouver='$';
     
    for (i=0 ; i<TAILLE_TABLEAU1 ; i++)
    {
    if (t[i]==aTrouver)  /*t[i] est-il correct ? pourrait-il y avoir une confusion avec le t de TABCHAR t?*/
       printf("%d",i);
    else
       puts("-1");
    }
    Tu vas vite voir le problème de ce code: Il ne se limite pas au premier caractère trouvé. Il faut donc interrompre la boucle (traditionnellement, ça se fait avec break) après avoir trouvé le premier caractère.
    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
    #define TAILLE_TABLEAU1 100
    typedef char TABCHAR[TAILLE_TABLEAU1];
     
     
     
    TABCHAR t;
    int i;
    char aTrouver='$';
     
    for (i=0 ; i<TAILLE_TABLEAU1 ; i++)
    {
    if (t[i]==aTrouver)  
       printf("%d",i);
       break; /*oui car en effet il peut y avoir d'autres '$'...*/
    else
       puts("-1");
    }

  5. #5
    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
    Et pour ce qui est du paramètre pris pour la fonction F15 :

    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
     
    #define TAILLE_TABLEAU 100
     
    typedef char TABCHAR[100]
     
    char F15(TABCHAR t) /*TABCHAR peut-il être un paramètre ?*/
    {
    int tailleTableau = 100, i; 
    char n='$';
     
    for (i=0;i<tailleTableau;i++)
    {
      if (t[i]==n)
           return i;
      else 
          return -1;
    }

  6. #6
    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
    Attention, ne confonds pas C et Python: En C, ce n'est pas l'indentation qui fait les structures de contrôles, ce sont les accolades.
    Un tel code ne fait pas ce que tu crois (et il est mal indenté, d'ailleurs):
    De plus, tes deux fonctions présentent un problème: La boucle s'arrête dès le premier caractère rencontré, qu'il s'agisse du caractère recherché ou non. Tu ne dois interrompre la boucle que quand c'est le caractère recherché!
    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.

  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
    Bonsoir,


    On m'a d'abord demandé de définir un type nommé TABCHAR permettant de déclarer des tableaux de 100 caractères.
    Voici ce que j'ai fais
    tu a utiliser dans le programme, ce qui une erreur. tu doit plutôt utiliser par ce que quant tu auras retrouver l'élément en question il doit te renvoyer sont indice et sortir la boucle

Discussions similaires

  1. [Tableaux] Des fonctions SVG
    Par atito dans le forum Langage
    Réponses: 2
    Dernier message: 16/07/2007, 19h11
  2. Réponses: 8
    Dernier message: 12/03/2007, 16h56
  3. [Tableaux] Similitude fonctions de fichiers et de tableaux
    Par beejeridou dans le forum Langage
    Réponses: 2
    Dernier message: 04/02/2007, 15h46
  4. [Tableaux] simplifier fonction str_replace
    Par nicerico dans le forum Langage
    Réponses: 7
    Dernier message: 04/12/2006, 15h45
  5. Réponses: 11
    Dernier message: 04/07/2006, 14h33

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