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 :

Algorithmique autour les tableaux


Sujet :

Algorithmes et structures de données

  1. #81
    Membre éclairé
    Étudiant
    Inscrit en
    Août 2007
    Messages
    419
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2007
    Messages : 419
    Par défaut
    Citation Envoyé par s-ehtp Voir le message
    mais si j'utilise une boucle rep je sais pas quand est ce que ma boucle s'arretera?
    la boucle s'arrêtera à la fin du tableau, quand ton indice arrive à nmax

  2. #82
    Membre éclairé
    Inscrit en
    Octobre 2007
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 285
    Par défaut
    Citation Envoyé par s-ehtp Voir le message
    algorithme:positif_negatif
    debut
    variables:N tableau de Nmax
    T tableau de t éléments
    P tableau de P max
    i,j,k:entiers
    pour i allant de 1 à t faire
    lire(T[i])
    fin pour
    i=1
    repeter
    si T[i] inferieur ou egale à 0 alors N[k]=T[i] finsi
    si T[i] superieur strict à 0 alors P[j]=T[i] finsi
    jusqu'à i superieur strict à t

    ecrire('le vecteur initiale',T,'est',T[i])
    ecrire('le vecteur positif',P,'est',P[j])
    ecrire('le vecteur negatif',N,'est,N[k])
    fin


    NB:j ai utilisé 3 indices k i et j,parce que si un element du tableau T se trouve à la 3eme place dans N ou P se trouvera sur 1 position par exemple
    donc je sais pas si ce que j'ai fait est bien correcte
    pour l'ecriture je sais pas pourquoi je vais utiliser une boucle puisque l'affichage sera fait une fois pas plus.

  3. #83
    Membre éclairé
    Étudiant
    Inscrit en
    Août 2007
    Messages
    419
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2007
    Messages : 419
    Par défaut
    il te manque d'incrémenter i dans la boucle.

    l'affichage sera fait une fois pour tous les éléments, c'est à dire pour chaque T[i].

  4. #84
    Membre éclairé
    Inscrit en
    Octobre 2007
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 285
    Par défaut
    oui ta raison j'ai oublié d'incrementer
    mais l'affichage je sais pas ou est le probleme exactement;il demande d'editer les 3 tableaux et c'est fait dans mon algo

  5. #85
    Membre éclairé
    Étudiant
    Inscrit en
    Août 2007
    Messages
    419
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2007
    Messages : 419
    Par défaut
    oui, il faut boucler pour afficher tous les éléments d'un tableau

    tu affiche le premier, le second, le troisième, et ainsi de suite jusqu'au dernier.

  6. #86
    Membre éclairé
    Inscrit en
    Octobre 2007
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 285
    Par défaut
    oui oui oui j'ai pas fait attention c'est bon!!
    merci!!

  7. #87
    Membre éclairé
    Inscrit en
    Octobre 2007
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 285
    Par défaut
    bonjour tout le monde!
    bonjour acacia ,sidahmed
    j'ai un tableau de nombre d'éléments n,je dois ecrire un algo pour supprimer les valeurs nules.
    here is my essay:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    algorithme:suppression
    Debut
    variables:T tableau de t élements
                  i:entier
       pour i allant de 1 à t faire
          lire(T[i])
           si T[i]=0 alors T[i]=T[i+1] finsi
       finpour
    fin
    alors qu'est ce que vous en pensez?(j'attend toujours vos comentaires et vos corrections pour discuter)

  8. #88
    Inactif  
    Inscrit en
    Mars 2006
    Messages
    352
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 352
    Par défaut
    Bonjour s-ehtp ,

    logiquement, c'est bon sauf si la dernière valeur est nulle, c'est pas la peine de décaler vers la gauche, une simple décrémentation du nombre d'éléments suffit.

    Mais sache que l'opération du décalage est coûteuse en temps, il faut l'utiliser avec parcimonie ! Et par exemple si t'as les trois premières valeurs nulles, il vaudrait mieux décaler une fois pour toute et non pas trois décalages successifs

    Bon courage !

    Cordialement,
    Sidahmed.

  9. #89
    Membre éclairé
    Étudiant
    Inscrit en
    Août 2007
    Messages
    419
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2007
    Messages : 419
    Par défaut
    Bonsoir;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    algorithme:suppression
    Debut
    variables:T tableau de t élements
                  i:entier
       pour i allant de 1 à t faire
          lire(T[i])
           si T[i]=0 alors T[i]=T[i+1] finsi
       finpour
    fin
    et i := i+1; ?

  10. #90
    Expert confirmé
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Par défaut
    et i := i+1; ?
    A là non, la boucle pour sous entend cette incrémentation.

  11. #91
    Membre éclairé
    Étudiant
    Inscrit en
    Août 2007
    Messages
    419
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2007
    Messages : 419
    Par défaut
    Citation Envoyé par PRomu@ld Voir le message
    A là non, la boucle pour sous entend cette incrémentation.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     pour i allant de 1 à t faire
    si c'était for (var i=0; i<n; i++), oui, puisqu'il y a le i++ qui incrémente, mais dans son pour, il n'y a rien qui indique que l'indice se déplacer ni le pas de i.

  12. #92
    Expert confirmé
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Par défaut
    Le seul fait de préciser pour i de x à y indique que le i va varier tout seul. Dans les cas précédents, là où on ne connaissait pas forcément le nombre d'itérations à utiliser, on utilisait une boucle répéter ... tant que.

    Si tu précises le domaine dans lequel va varier ta variable, ça ne sert à rien de surcharger les notations (en rajoutant une incrémentation) . Au contraire, cela ne peut qu'introduire d'éventuelles erreurs lors d'une possible implémentation.

  13. #93
    alex_pi
    Invité(e)
    Par défaut
    Citation Envoyé par acacia Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     pour i allant de 1 à t faire
    si c'était for (var i=0; i<n; i++), oui, puisqu'il y a le i++ qui incrémente, mais dans son pour, il n'y a rien qui indique que l'indice se déplacer ni le pas de i.
    En algorithmique et dans les vrais langages (</troll>), une boucle for est la donnée d'une valeure de début et d'une valeur de fin pour une variable (et éventuellement d'un pas si celui ci diffère de 1), et cette variable n'est pas modifiable dans le corps de la boucle. C'est à dire que l'on sait exactement et à l'avance combien de fois le corps de la boucle va s'exécuter. Sinon, on utilise une boucle tant que (while). L'incrément de la variable de boucle est donc implicite au passage de la fin de la boucle au début.

    La citation de la syntaxe C pour prouver quelque chose en algorithmique n'est pas franchement une bonne solution :-)

  14. #94
    Expert confirmé
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Par défaut
    C'est à dire que l'on sait exactement et à l'avance combien de fois le corps de la boucle va s'exécuter. Sinon, on utilise une boucle tant que (while).
    C'est pas un peu ce que je viens de dire ?

  15. #95
    alex_pi
    Invité(e)
    Par défaut
    Citation Envoyé par PRomu@ld Voir le message
    C'est pas un peu ce que je viens de dire ?
    Ouais mais euh, en différent, et euh, c'est le matin, et euh zut. Voilà. :-)

  16. #96
    Membre éclairé
    Étudiant
    Inscrit en
    Août 2007
    Messages
    419
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2007
    Messages : 419
    Par défaut
    Citation Envoyé par alex_pi Voir le message
    En algorithmique et dans les vrais langages (</troll>), une boucle for est la donnée d'une valeure de début et d'une valeur de fin pour une variable (et éventuellement d'un pas si celui ci diffère de 1), et cette variable n'est pas modifiable dans le corps de la boucle. C'est à dire que l'on sait exactement et à l'avance combien de fois le corps de la boucle va s'exécuter. Sinon, on utilise une boucle tant que (while). L'incrément de la variable de boucle est donc implicite au passage de la fin de la boucle au début.

    La citation de la syntaxe C pour prouver quelque chose en algorithmique n'est pas franchement une bonne solution :-)
    j'ai bien compris pour la boucle for

    pourquoi alors en c on incrémente le i ?

  17. #97
    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 acacia Voir le message
    j'ai bien compris pour la boucle for

    pourquoi alors en c on incrémente le i ?
    Parceque l'instruction "for" du C ne sert pas uniquement a faire des boucles incrémentales sur une variable. C'est une instruction plus générale, un peu equivalent a un "while".

    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    for( A ; B ; C) { ... }
     
    // est a peu près equivalent à 
     
    A;
    while(B) {
      ...
      C;
    }
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  18. #98
    Expert confirmé
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Par défaut
    D'ailleurs, la boucle for n'est rien d'autre que du sucre syntaxique.

  19. #99
    alex_pi
    Invité(e)
    Par défaut
    Citation Envoyé par PRomu@ld Voir le message
    D'ailleurs, la boucle for n'est rien d'autre que du sucre syntaxique.
    La boucle for en C. Ce n'est pas le cas de tous les langages. Typiquement, en OCaml, le for n'est pas simulable par un while puisque la variable n'est pas une référence et qu'elle varie pourtant à chaque tours de boucle (c'est en revanche faisable avec une récursion évidement, mais je ne pense pas que ce soit compilé comme ça)

  20. #100
    Expert confirmé
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Par défaut
    D'un point de vue compilation (et génération de code), la boucle for est traduite en boucle while.

    Ce que propose les langages de programmation, c'est un choix. Pour ce qui est d'OCaml, le paradigme de programmation est beaucoup trop différent de ce qui se passe en machine pour être appliqué tel quel. Tu pourras bien entendu trouver des contres-exemples dans n'importe quel paradigme de programmation.

    Ce que je disais faisait référence à l'histoire de la programmation impérative. On a crée la boucle for pour faciliter l'écritures des programmes, surtout pour les parcours de tableau. Pense à la boucle for d'un langage comme ada :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for i in T'range loop 
         ...
    end loop
    Cela facilite d'une part la lecture et la maintenance par rapport à une boucle while. Mais au moment de la compilation, il y aura une traduction vers une sorte de boucle while (un peu comme l'a présenté pseudocode)

    Ca ne sert à rien d'épiloguer là dessus, ceci dépasse largement les considérations du PO, évitons de polluer le thread qui est déjà très (trop) long.

Discussions similaires

  1. Mais pourquoi ... Avec IE les tableaux sont décentrés ?
    Par nebule dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 26/11/2004, 10h04
  2. Article sur les tableaux dynamiques
    Par Eric Sigoillot dans le forum Langage
    Réponses: 2
    Dernier message: 16/04/2004, 22h00
  3. Réponses: 14
    Dernier message: 01/09/2003, 22h46
  4. Les tableaux en PL/SQL
    Par GRUMLY dans le forum PL/SQL
    Réponses: 5
    Dernier message: 12/08/2002, 18h10

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