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

Algorithmes et structures de données Discussion :

Exercice sur les fonctions


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 14
    Par défaut Exercice sur les fonctions
    Bonjour à tous,
    voila j'ai un devoir et je suis bloqué dans un exercice qui parait très simple mais pourtant.. j'ai du mal à saisir le principe en fait, dc si quelqu'un pouvait m'aider ça serait cool

    Voici l'énoncé :

    Voici un programme et la fonction appelée par ce programme*:
    programme machin
    a, b, c : réel
    début
    b <- 2
    c <- calcul (b, 3)
    a <- calcul (b, c)
    	 afficher a, b, c
    fin
    fonction calcul (E/S a: réel, E b: réel) : réel
    c : réel
    début
    a <- a / 2
    c <- b - 2
    b <- a * 5
    retourner (a + b + c)
    fin
    Donner l’état des variables a, b et c du programme machin en fin d’exécution de ce programme. N’essayez pas
    de donner le détail de la trace*: avec ce type de paramètres c’est un peu complexe. Donnez juste le résultat.

  2. #2
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Par défaut
    On te demande de donner les valeurs de a, b et c à la fin de l'exécution du programme.
    Il te suffit de faire tourner le programme à la main.
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

  3. #3
    Membre chevronné
    Homme Profil pro
    .
    Inscrit en
    Juin 2002
    Messages
    239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : .
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2002
    Messages : 239
    Par défaut
    Bonjour.

    un exercice qui parait très simple
    Je ne suis pas de cet avis : cet exercice ne me parait pas simple.
    Je dirais même que je le trouve particulièrement vicieux.

    En effet, il présente trois difficultés qui rendent la réponse difficile à trouver :

    1) Les deux paramètres de la fonction calcul sont de natures différentes, bien que tous les deux du type réel.

    Le premier paramètre, noté a, est déclaré comme étant E/S, ce que j'interprète comme Entrée/Sortie.
    Cela signifie que sa valeur à l'entrée est utilisée, mais que la variable passée comme premier paramètre peut être modifiée par la fonction.
    Effectivement, à la première ligne de la fonction, le contenu de cette variable est divisé par 2.
    Le deuxième paramètre, noté b, est déclaré comme E, donc Entrée seule.
    Sa valeur à l'entrée est utilisée, mais la variable passée comme deuxième paramètre n'est pas modifiée par la fonction.

    2) Les paramètres de la fonctions (a et b) et la variable de la fonction (c) portent le même nom que les trois variables du programme principal.

    C'est source de confusion.
    C'est à proscrire systématiquement quand on programme (sauf si on souhaite rendre son code illisible).
    Pour y voir plus clair, je suggère de remplacer les paramètres par x et y, et la variable par z.

    3) Le sujet donne une indication trompeuse :

    N’essayez pas de donner le détail de la trace : avec ce type de paramètres c’est un peu complexe.
    D'abord : avec ce type de paramètres, ce n'est pas un peu complexe c'est fortement complexe.
    Ensuite : pour comprendre ce qui se passe, il faut tracer entièrement ce programme.
    (même si le détail n'a pas à figurer sur la copie à remettre, il faut le faire au brouillon)

    En résumé, cet exercice est délicat mais formateur.
    Pour le résoudre : bien comprendre le point 1) et faire ce que je propose aux points 2) et 3).

    Bon courage.

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 14
    Par défaut
    Exactement cet exercice est beaucoup plus vicieux qu'il en a l'air Voici le début de ce que j'ai déduit de l'énoncé sans réussir à aller plus loin :
    dans la fonction, a = b , c reste c et b = a, si bien que : b= b/2, c = a - 2 et a = bx5. Peut être que je me trompe et si vous le voyez de manière évidente dites le moi, mais en tout cas merci pour vos réponses, je vais essayer d'appliquer ce que vous me dites et si jai un pb je vous le dis. Bonne soirée à tous

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 14
    Par défaut
    Non à vrai dire je ne vois vraiment pas comment faire même en supposant que ce que j'ai dis est vrai, je n'arrive pas à trouver a b et c. En fait, comment faut il calculer c<- calcul (b,3) et a <- calcul (b, c) ? Et à quoi sert le retourner à la fin de la fonction? S'il vous plait aidez moi au moins à comprendre

  6. #6
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 215
    Par défaut
    Citation Envoyé par yoelhazan Voir le message
    Exactement cet exercice est beaucoup plus vicieux qu'il en a l'air Voici le début de ce que j'ai déduit de l'énoncé sans réussir à aller plus loin :
    dans la fonction, a = b , c reste c et b = a, si bien que : b= b/2, c = a - 2 et a = bx5. Peut être que je me trompe et si vous le voyez de manière évidente dites le moi, mais en tout cas merci pour vos réponses, je vais essayer d'appliquer ce que vous me dites et si jai un pb je vous le dis. Bonne soirée à tous
    Je ne comprends rien à ce message.
    Ou plutôt : ce message est un méli-mélo incompréhensible, tout juste bon à embrouiller encore plus une question déjà tordue.

    Suis les conseils de Prof.
    Lis précisément son message.
    Relis-le 10 fois si nécessaire, chaque ligne de son message est une mine d'or.
    Sur chaque ligne du message, passe éventuellement 5 minutes pour bien comprendre le message qu'il cherche à faire passer.
    Et applique chacun de ses conseils.

    Ici, on dirait que tu t'es arrêté à la 3ème ligne de son message.

  7. #7
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 14
    Par défaut
    Très bien merci pour tout à vous tous
    Voici un autre exercice :

    Vous avez à votre disposition les déclarations suivantes*:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    s_personne : structure
    nom : chaîne
    prenom : chaîne
    age : entier
    finstructure
    t_pers[1..500] : s_personne
    // tableau dont chaque case est de type s_personne
    nbpers : entier
    // contient le nombre de lignes remplies dans t_pers
    Pour toutes les questions, on considérera que le tableau t_pers est déjà partiellement rempli et trié dans
    l’ordre alphabétique sur le nom. La variable nbpers contient le nombre de lignes remplies dans t_pers. Ces
    variables ne sont donc pas à saisir.
    Dans les questions suivantes, vous ne déclarerez que les variables dont vous aurez besoin en dehors des
    variables déjà déclarées ci dessus.

    Écrire en algo ou dans le langage de votre choix, la séquence qui permet d’afficher les noms et prénoms des
    personnes dont l’âge est supérieur à l’âge moyen des personnes contenues dans t_pers.

    b. Homonymes
    Le tableau t_pers contient souvent plusieurs personnes de la même famille ou tout simplement des homonymes
    (des personnes qui ont le même nom). Écrire en algo ou dans le langage de votre choix, la séquence qui affiche
    une seule fois chaque nom présent dans t_pers, suivi du nombre de personnes portant ce même nom.

    J'ai fais 2 algo, pouvez vous me dire ce que vous en pensez ?
    Les voici :

    a/
    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
    Programme âge moyen
       S_personne : structure
       t_personne [1...500] : s_personne
       nom, prénom : chaîne
       n, i, âge : entier
    début
       Afficher "Quel est le nombre de personnes? "
       saisir nbpers
       i ← 1
          pour i de 1 à n-1
               âge moyen ← âge+1/nbpers
          finpour
          si vec[i] > âge moyen alors
               afficher "nom + prénom"
          sinon i ← i + 1
          finsi
               si vec[i] > âge moyen alors 
                    afficher "nom + prénom"
               sinon i ← i + 1
               finsi
    fin
    b/
    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
    Programme homonyme
       S_personne : structure
       t_personne [1...500] : s_personne
       nom : chaîne
       j, i, n : entier
    début
       i ← 1
       j ← i +1
          si t_pers [i].nom = t_pers [j] alors
             afficher " t_pers [i].nom"
          sinon j ← j + 1 
             si t_pers [i].nom = t_pers [j] alors
                 afficher "t_pers [i].nom"
             sinon i ← i + 1 
                        j ← i + 1
             finsi
          finsi
       si t_pers [i].nom = t_pers [j] alors
             afficher " t_pers [i].nom"
       sinon j ← j + 1 
          si t_pers [i].nom = t_pers [j] alors
              afficher "t_pers [i].nom"
          sinon i ← i + 1 
                     j ← i + 1
          finsi
       finsi
          pour t_pers [i].nom de 1 à n – 1
              afficher " le nombre de personnes portant le même nom que  ''t_pers [i].nom'' 
                               est de ''nombre de t_pers [j].nom'' ''   
          finpour
    fin

  8. #8
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 215
    Par défaut
    Citation Envoyé par yoelhazan Voir le message
    Très bien merci pour tout à vous tous
    Voici un autre exercice :
    ...
    J'ai fais 2 algo, pouvez vous me dire ce que vous en pensez ?
    0/5 au premier exercice : Calcul de l'âge moyen faux, affichage des individus ... faux aussi.
    Et
    0/5 au deuxième exercice : La solution passe par un algo de moins de 10 lignes.

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

Discussions similaires

  1. exercice sur les fonctions
    Par goldensun dans le forum Débuter
    Réponses: 6
    Dernier message: 26/10/2008, 15h57
  2. Exercice sur les fonctions
    Par jeje-2309 dans le forum Mathématiques
    Réponses: 7
    Dernier message: 01/10/2007, 12h04
  3. doc sur les fonctions
    Par masterfab dans le forum C
    Réponses: 18
    Dernier message: 23/06/2005, 17h55

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