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 :

Liste chaînée et tableau


Sujet :

C

  1. #1
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2021
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2021
    Messages : 5
    Points : 3
    Points
    3
    Par défaut Liste chaînée et tableau
    Bonjour,
    Je suis entrain de réviser pour un examen et je suis bloquée sur une question. je ne comprends pas vraiment ce qui est demandé. Si quelqu’un peut m’aider voici la question:

    Écrire une fonction non récursive qui retourne le plus grand entire pair d’un tableau T d’entiers passé en paramètre (T n’est pas l’unique paramètre .

    Ils ont précisé également qu’il fallait utiliser des liste et non des tableaux ce qui rend la question plus difficile

    Qu’est ce qu’ils veulent dire par T n’est pas le seul argument de la fonction ? On prend quels autres argument ?


    Merci d’avance.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 670
    Points : 10 677
    Points
    10 677
    Par défaut
    Citation Envoyé par Mila_zou Voir le message
    On prend quels autres argument ?
    Devine nous sommes en C

    • la taille du tableau
    • le pointeur de l'entier (si on ne le retourne pas)
    • penser éventuellement aux erreurs : tableau vide ou NULL, tous égaux, ... ou comme l'a dit @dalfab: pas trouvé


  3. #3
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2021
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2021
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par foetus Voir le message
    Devine nous sommes en C

    • la taille du tableau
    • le pointeur de l'entier (si on ne le retourne pas)
    • penser éventuellement aux erreurs : tableau vide ou NULL, tous égaux, ...

    je sais bien que si on avait utilisés les tableaux on devrait prendre obligatoirement sa taille en argument. Mais dans la question, il est demandé d'utiliser des listes (et non des tableaux) , et pour les listes on avait vu qu'on avait pas besoin de définir la taille de la liste.
    Pourriez vous m'éclairer un peu plus s'ils vous plait?

  4. #4
    Expert éminent
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2015
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 1 580
    Points : 7 712
    Points
    7 712
    Par défaut
    Salut,

    Ton énoncé n'était pas clair. Si T est une liste, tu as raison on n'a pas besoin de la taille.

    Pour déterminer pourquoi on aurait besoin d'un paramètre supplémentaire, on peut essayer d'écrire la fonction récursive.
    Et commençons par le cas de fin que toute fonction récursive doit avoir.
    si la liste n'a plus qu'un élément:
    • si l'élément est pair, le max à retourner c'est la valeur de l'élément;
    • mais s'il est impair, on doit indiquer qu'il n'y a pas de solution.
    Pour cela on peut tout à fait avoir une fonction à un seul paramètre element* t, la fonction retournant la valeur paire trouvée ou une valeur spéciale comme -1 (qui ne correspond à aucun pair) si impossible.
    Mais peut-être qu'une fonction avec un paramètre supplémentaire de type bool* lui permettrait d'utiliser ce bool pour indiquer qu'aucun nombre pair n'a été trouvé.

  5. #5
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 721
    Points : 31 044
    Points
    31 044
    Billets dans le blog
    1
    Par défaut
    Bonjour
    C'est vrai que l'énoncé est un peu foireux. "une fonction qui prend un tableau en paramètre sauf qu'elle peut aussi prendre une liste chainée", c'est pas un cahier de charges ça, c'est "mamie fait son marché".
    Mais bon, cela permet quand-même de trouver les arguments de la fonction. Fatalement le premier argument c'est le tableau (enfin un pointeur prévu pour recevoir l'adresse d'une case du tableau, à priori la première). Le second ce sera la taille du tableau pour que la fonction sache où s'arrêter dans sa recherche. Et effectivement une liste chainée n'a pas besoin de taille puisque le dernier maillon avec son pointeur à NULL permet d'indiquer où s'arrêter MAIS la fonction n'ayant aucun moyen de savoir que le pointeur reçu est un pointeur de tableau ou bien un pointeur de liste chainée, il faudra aussi un indicateur. On peut par exemple dire que si la taille est positive ou nulle alors c'est un tableau (tableau vide pourquoi pas) et si elle est négative alors c'est une liste chainée. Et donc dans tous les cas au-moins deux paramètres.

  6. #6
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 395
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 395
    Points : 20 502
    Points
    20 502
    Par défaut
    Citation Envoyé par Mila_zou Voir le message
    Écrire une fonction non récursive qui retourne le plus grand entire pair d’un tableau T d’entiers passé en paramètre (T n’est pas l’unique paramètre .
    Ils ont précisé également qu’il fallait utiliser des liste et non des tableaux ce qui rend la question plus difficile
    rebelote aussitôt dit aussitôt fait je donne un début
    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
     
    typedef struct node
    {
    int element_liste
    node *pElement_Suivant}
    };
     
    node *pDebut_Liste=NULL; /// ou bien =0 ça dépend des compilos
    void Ajoute_Element( int val)
    {
    node *pTemp=pDebut_Liste;
    if(pTemp==NULL) 
    {
    pTemp=malloc(sizrof(node);
    pTemp->element_liste)val;
    pTemp->pElement_Suivant=NULL;
    }
    else
    {
    ///....
    }
    }
    ensuite parcourir la liste et avec les itérations déterminer le nombre d'itérations.

  7. #7
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2021
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2021
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Merci beaucoup pour vos réponses. je comprends mieux ce qui est demandé.

  8. #8
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 721
    Points : 31 044
    Points
    31 044
    Billets dans le blog
    1
    Par défaut
    On ne veut pas trier les nombres pairs, on veut juste le plus grand, ce n'est pas la même chose. Un tri est un algorithme d'une complexité en O(n log(n)) tandis qu'une recherche de plus grand (recherche linéaire donc) est d'une complexité en O(n).

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

Discussions similaires

  1. tableau vers liste chaînée triée
    Par vcef360 dans le forum C
    Réponses: 5
    Dernier message: 05/01/2017, 11h12
  2. Conversion d'une chaîne en tableau d'octets
    Par marsupilami34 dans le forum Langage
    Réponses: 11
    Dernier message: 22/06/2005, 14h44
  3. Listes chaînées circulaires
    Par gege2061 dans le forum Algorithmes et structures de données
    Réponses: 15
    Dernier message: 11/05/2005, 13h44
  4. Construction de liste chaînées
    Par fomblardo dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 15/03/2005, 21h19
  5. Insertion d'un noeud dans une liste chaînée
    Par habib106 dans le forum Assembleur
    Réponses: 8
    Dernier message: 07/04/2004, 22h34

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