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 :

Exo d'algo débutant


Sujet :

Algorithmes et structures de données

  1. #1
    Membre confirmé Avatar de Mika2008
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 176
    Par défaut Exo d'algo débutant
    Bonjour, j'espère qu'on vas pas trop ce moqué :

    en fais je débute dans l'algorithme, et je me suis acheter le livre :

    "l'algorithmique votre passeport informatique pour la programmation"

    et donc je suis bloquer au chapitre 5 dans les exercices, et il n'y a pas les solutions pour corriger, j'espère que quelqu'un ici pourras m'aider :

    Voila l' ennoncer :
    écrire un algo qui entre un caractère et sort la nature du caractère, à savoir : Numérique, Alphanumérique ou autre.
    Pour déterminer si un caractère est un numérique, il suffit de tester s'il est compris entre le caractère "0" et "9", pareil pour l'alphanumérique
    Exemples :
    "J"----->"Alphabétique"
    "7"-----> "Numérique"
    "="-----> "Autre"
    Voila 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
     
    Action Test
      Var :
        T : chaine de caractère
    Debut
       Entrée T
       Si 0<T< 9
          Sortir "Numerique"
       FinSi
       Si A<T<Z ou a<T<z
         Sortir "Alphanumerique"
       FinSi
      Sortir "Autre"
    Fin Action
    Voila , qu'en pensez vous svp??
    je pense que sa peut pas être aussi simple, j'ai du me tromper, mais comment corriger svp??

  2. #2
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Petite remarque, la formulation

    devait contenir des comparaisons "inférieure ou égale" et il est d'usage de les séparer en termes simples:

    idem pour les comparaison a,z,A,Z.

    Sinon j'aime bien ton code.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  3. #3
    Membre confirmé Avatar de Mika2008
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 176
    Par défaut

    merci beaucoup

  4. #4
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Par défaut
    Salut !

    Certains me contrediront s'ils ne sont pas d'accord, mais je crains que cela ne dépende du langage utilisé: certains langages n'autorisent pas les tests de la forme A<T; il faut comparer les numéros des caractères dans la table ASCII ou ANSI, et non les caractères eux-mêmes.

    Jean-Marc Blanc

  5. #5
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Citation Envoyé par FR119492 Voir le message
    Certains me contrediront s'ils ne sont pas d'accord, mais je crains que cela ne dépende du langage utilisé: certains langages n'autorisent pas les tests de la forme A<T; il faut comparer les numéros des caractères dans la table ASCII ou ANSI, et non les caractères eux-mêmes.
    Mouais...

    Pour moi, l'algorithmique n'a pas a se préoccuper de ce que sait faire (ou ne pas faire) un langage.

    S'il faut utiliser des fonctions spéciales pour comparer l'ordre des caractères dans un langage X, et bien ça sera au codeur d'y penser. Il faut bien lui laisser du boulot.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  6. #6
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    par contre, remarque plus importante dans le contexte :

    tu déclares une variable "chaine de caractères" et ensuite tu testes 1 seul caractère..

    Il manque un petit quelque chose à ton algo

    Et enfin on peut utiliser préférentiellement des conditions :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SI ...
    SINON SI ....
    SINON...
    ce qui évite des comparaisons inutiles (dans ton cas, si c'est un caractère numérique, tu testes quand même si il est alpha, et ensuite si il est autre)

  7. #7
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Citation Envoyé par souviron34 Voir le message
    par contre, remarque plus importante dans le contexte :

    tu déclares une variable "chaine de caractères" et ensuite tu testes 1 seul caractère..
    Exact. En fait T devrait être un "caractère" et pas une chaine, vu l'ennoncé de l'algo.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SI ...
    SINON SI ....
    SINON...
    ce qui évite des comparaisons inutiles (dans ton cas, si c'est un caractère numérique, tu testes quand même si il est alpha, et ensuite si il est autre)
    Hum... J'avais compris que était une sortie immédiate de la fonction (equivalent de return en C).
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  8. #8
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Par défaut
    A pseudocode:

    l'algorithmique n'a pas a se préoccuper de ce que sait faire (ou ne pas faire) un langage
    Pas tout à fait d'accord avec toi. Tu as peut-être déjà remarqué que je suis un généraliste convaincu, partisan d'une approche globale. Imagine que l'on ait quelque-part un "algorithmicien" qui ne sait pas programmer, et ailleurs un "codeur" qui ne comprend rien à l'algorithmique; on doit s'attendre aux pires horreurs. Je pense que, dans ces forums, le rôle des intervenants expérimentés est d'éduquer les débutants qui nous consultent, et que c'est plus d'élargir leur champ de vision que d'en faire des spécialistes très pointus.

    Amitiés.
    Jean-Marc Blanc

  9. #9
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Citation Envoyé par FR119492 Voir le message
    Imagine que l'on ait quelque-part un "algorithmicien" qui ne sait pas programmer, et ailleurs un "codeur" qui ne comprend rien à l'algorithmique; on doit s'attendre aux pires horreurs.
    Ca c'est certain.

    Pour moi un "algorithmicien" à pour objectif de transformer une solution "théorique" (abstraite) en une solution "pratique" (concrète). Les limitations imposées par la solution "pratique" sont uniquement de l'ordre du modèle de programmation choisi (impératif, fonctionnel, ...). Une fois que le modèle de programmation a été choisi, l'algorithme ne doit pas dépendre des "subtilités" d'un langage.

    Il y a un consensus sur les fonctions/structures utilisables dans un modèle donné. Il y a également des libertés qu'on s'autorise pour rendre l'algorithme plus clair. Par exemple ici, on s'est autorisé à comparer l'ordre alphabétique des caractères avec le symbole "<". Tant que ça reste compréhensible je n'y vois pas de problème. (sinon une remarque en commentaire ou en aparté est la bienvenue)

    Pour ce qui est du "codeur", c'est sa responsabilité de connaître les subtilités/contraintes de son langage et d'adapter son code en conséquence. Dans notre exemple, il se peut qu'il doive utiliser des fonctions de comparaison dédiées aux caractères car le symbole "<" est peut-être réservé aux nombres.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  10. #10
    Membre confirmé Avatar de Mika2008
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 176
    Par défaut
    Bonjour, merci pour vos remarque,

    voila ce que donne l'algo, maintenant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Action Test
      Var :
        T : chaine de caractère
    Debut
       Entrée T
       Si (0<=T) et (T<=9)
          Sortir "Numerique"
       Sinon si [(A<=T) et (T<=Z)] ou [(a<=T) et (T<=z)]
         Sortir "Alphanumerique"
       Sinon
         Sortir "Autre"
       FinSi
    Fin Action
    par contre je ne comprend la notion de

    Envoyé par FR119492 Voir le message
    Certains me contrediront s'ils ne sont pas d'accord, mais je crains que cela ne dépende du langage utilisé: certains langages n'autorisent pas les tests de la forme A<T; il faut comparer les numéros des caractères dans la table ASCII ou ANSI, et non les caractères eux-mêmes.
    j'utilise le langage algorithmique
    "lap"
    ce que propose l'ouvrage que j'utilise,
    et dans cette ouvrage il stipule que l'on ne peux pas comparer un numérique avec un caractère, c'est pour cela que j'utilise la variable "chaine de caractere", qui dispose de tout les caractère numérique et alphanumérique
    et que je test si ma variable "T" ce trouve dans les intervalles proposé, qu'en pensez vous svp?

  11. #11
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Citation Envoyé par Mika2008 Voir le message
    j'utilise le langage algorithmique
    "lap"
    ce que propose l'ouvrage que j'utilise,
    et dans cette ouvrage il stipule que l'on ne peux pas comparer un numérique avec un caractère, c'est pour cela que j'utilise la variable "chaine de caractere", qui dispose de tout les caractère numérique et alphanumérique
    et que je test si ma variable "T" ce trouve dans les intervalles proposé, qu'en pensez vous svp?
    Le type "chaine de caracteres" fait référence à une suite de 0, 1 ou plusieurs caractères. Dans le cas ou T contient plusieurs caractères, ta comparaison "A<=T et T<=Z" n'est pas clairement définie. Est-ce que "ZZZ" est inférieur ou égal à "Z" ?

    C'est pour cela qu'on utilise plutot le type "caractère" qui représente un seul caractère.


    PS: et pense à mettre des parentheses autour de chaque terme dans les comparaisons multiples ou/et.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  12. #12
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Par défaut
    Salut pseudocode !

    Voici un bout de code de la fonction DDOT du BLAS de LinPack:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
       20 M = MOD(N,5)
          IF( M .EQ. 0 ) GO TO 40
          DO 30 I = 1,M
            DTEMP = DTEMP + DX(I)*DY(I)
       30 CONTINUE
          IF( N .LT. 5 ) GO TO 60
       40 MP1 = M + 1
          DO 50 I = MP1,N,5
            DTEMP = DTEMP + DX(I)*DY(I) + DX(I + 1)*DY(I + 1) +
         *   DX(I + 2)*DY(I + 2) + DX(I + 3)*DY(I + 3) + DX(I + 4)*DY(I + 4)
       50 CONTINUE
       60 DDOT = DTEMP
    A ton avis, la décision de prendre les produits 5 par 5 plutôt qu'un par un, c'est de nature algorithmique ou purement codage ?

    Jean-Marc Blanc

  13. #13
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par FR119492 Voir le message
    A ton avis, la décision de prendre les produits 5 par 5 plutôt qu'un par un, c'est de nature algorithmique ou purement codage ?
    j'aurais tendance a dire que c'est du codage, car je ne vois pas bien ce que ca apporte.....

  14. #14
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    J'aurais tendance a dire

    1. Que c'est du Fortan, et donc que la question est sans objet.

    2. Qu'en l'absence d'autres informations ce n'est pas l'algo que j'écrirais pour calculer un produit scalaire.

    Sinon je rejoins Souviron. Je ne vois pas de raison "algorithmique" pour faire des additions par bloc de 5 multiplications dans un modèle impératif.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  15. #15
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par pseudocode Voir le message
    Sinon je rejoins Souviron. Je ne vois pas de raison "algorithmique" pour faire des additions par bloc de 5 multiplications dans un modèle impératif.
    a part eventuellement prevoir de paralleliser sur 5 cpus.. Ce qui est un peu stupide de se limiter a 5, dans ce cas....

  16. #16
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Citation Envoyé par souviron34 Voir le message
    a part eventuellement prevoir de paralleliser sur 5 cpus.. Ce qui est un peu stupide de se limiter a 5, dans ce cas....
    D'ou ma remarque: "en l'absence d'autres informations".

    S'il s'agit d'optimiser les calculs sur une architecture dédiée ca peut s'expliquer. Mais sinon il n'y a pas de raison algorithmique de calculer des paquets de 5 (ou de 12) (ou de 3).
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  17. #17
    Membre confirmé Avatar de Mika2008
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 176
    Par défaut
    Salut , en fais la c'est un topic pour algo de débutant, je comprend pas trops votre discution??

  18. #18
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    oui tu as raison, on a un peu dévié du sujet.

    Si tu as eu les reponses que tu voulais, pense a cliquer sur le bouton en bas de la page.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

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

Discussions similaires

  1. Exo java après débutant
    Par skeud dans le forum Débuter avec Java
    Réponses: 5
    Dernier message: 10/02/2014, 09h19
  2. exo d'algo a resoudre
    Par bansan dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 27/02/2008, 17h33
  3. exo d'algo a resoudre
    Par bansan dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 27/02/2008, 16h00
  4. Aide sur un exo d'algo
    Par sp4rr0ws dans le forum Algorithmes et structures de données
    Réponses: 5
    Dernier message: 25/03/2007, 03h08
  5. Exo d'algo
    Par sony54 dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 09/02/2006, 21h31

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