Algorithme sur les tableaux a une dimansion

Résolu
bansan Messages postés 125 Statut Membre -  
 imene -
Bonjour,
Bonjour,
Je suis sur des exercices d'algo dont je n'arrive pas a resoudre la fin
Je suppose que ces 2 exercices vont ensemble donc je vous donne les 2 et je vous donne ce que j'ai fait:

Exercice 15 : Insertion en fin de tableau
Ecrire un algorithme dont le rôle est d'initialiser le tableau Villes puis d'insérer en fin de tableau le
nom d'une ville préalablement saisi par l'utilisateur. Si le tableau est complet, le nom de la commune
ne peut pas être inséré et le message "Tableau complet" est affiché.

Voila ce que j'ai fait pour le 15

Var Villes[100],nom_ville: chaine

Debut

Villes[100]
Afficher("Saisir la ville:")
Saisir(nom_ville)
Pour i de 1 à 100
Si Villes EQ "" [i](chaine vide) Alors
Villes[100] <- Villes
nom_ville<-Villes[100]
Afficher(nom_ville)
Sinon
Afficher ("Tableau complet")
Finsi
FinPour
Fin

Exercice 18 : Insertion en début de tableau
Ecrire un algorithme dont le rôle est d'initialiser le tableau Villes puis d'insérer en début de tableau
le nom d'une ville préalablement saisi par l'utilisateur. Si le tableau est complet, le nom de la commune
ne peut pas être inséré et le message "Tableau complet" est affiché

Villes[100]
Afficher("Saisir la ville:")
Saisir(nom_ville)
Pour i de 1 à 100
Si Villes[i] NE "" [i](chaine vide) Alors
Afficher ("Tableau complet")
Finsi
Si Villes EQ "" [i](chaine vide) Alors
Villes[i] <- Villes[1]
..............Et à ce moment là je me dis qu'il y a un truc de pas bon...

Merci pour votre aide
Configuration: Windows XP
Firefox 2.0.0.13

2 réponses

  1. kaelhula Messages postés 48 Statut Membre 25
     
    Bonjour,

    dis moi que veulent dire NE et EQ dans ton algo ? est-ce qu'on suppose que le tableau ne contient pas de case vide entre deux villes (il est "bien" remplit) ou pas ?
    0
    1. bansan Messages postés 125 Statut Membre 1
       
      NE =" different " pour chaine de caracteres
      EQ "egal " pour chaine de caractere

      Concernant le remplisage, on va supposer qu'il n'y a pas de case vide en villes insérés...ou...admettons qu'on considere les 2 cas

      J'aimerais bien savoir les 2 algos
      MErci
      0
      1. kaelhula Messages postés 48 Statut Membre 25 > bansan Messages postés 125 Statut Membre
         
        ah, c'était le 18 pardon.

        eh bien là on reprend le même principe sauf qu'on veut ajouter la ville au début : donc on va parcourir le tableau pour voir s'il n'est pas plein de la même façon que tout à l'heure, sauf que là si on trouve une case vide, on va vouloir libérer la première case du tableau et pour celà : on décale toutes les cases d'un rang ! bien sur en partant de la dernière pour ne pas écraser de données.

        tente-le, regarde après ma solution (à tester) :


        Var
        Villes[100]
        nom_ville: chaine
        i, j :entier
        ok:booleen

        Debut

        Afficher("Saisir la ville:")
        Saisir(nom_ville)
        i<- 1 // si ton tableau commence à 1
        ok<- false //te permet en fin de boucle tant que de savoir si tu as inséré ta ville ou pas
        tant que i<=100 && ok=false faire // si ton tableau commence à 1, sinon i=0 et tant que 1<100
        Si Villes[i]<> "" Alors
        i<- i+1
        sinon
        pour j allant de i à 2 par pas de -1 //toujours si ton tableau commence à 1
        Villes[j]<- Villes[j-1] //la dernière case se décale de 1 : on libère ainsi sa case, et ainsi de suite
        fpour
        Villes[1]<- nom_ville //on met notre nom dans la première case maintenant libérée
        ok<- true
        fsi
        ftq

        si ok=false alors //si tu n'as pas pu insérer tu affiches ton message d'erreur
        Afficher ("Tableau complet")
        Finsi

        Fin


        voilà ^^
        0
  2. kaelhula Messages postés 48 Statut Membre 25
     
    pour ma part je ferai ça : la saisie du nom de la ville, puis on parcourt le tableau existant : tant qu'on a pas trouvé de case vide, on coninue d'avancer dans le tableau, si on trouve une case vide, on insère le nom : il faut donc une boucle tant que, la boucle pour n'est pas appropriée car tu n'as pas forcément besoin de parcourir les 100 cases du tableau. dès que tu as un espace vide, tu t'arrêtes : une boucle tant que convient mieux je pense. ensuite, si on a pas pu insérer le nom et qu'on a donc parcouru le tableau en entier, on affiche le message d'erreur.

    essaie de le faire par toi même, les petits exos comme ça sont ceux qui font bien comprendre !

    sinon ça donne ça :

    15 /

    Var
    Villes[100]
    nom_ville: chaine
    i:entier
    ok:booleen

    Debut

    Afficher("Saisir la ville:")
    Saisir(nom_ville)
    i<- 1 // si ton tableau commence à 1
    ok<- false //te permet en fin de boucle tant que de savoir si tu as inséré ta ville ou pas
    tant que i<=100 && ok=false faire // si ton tableau commence à 1, sinon i=0 et tant que 1<100
    Si Villes[i]<> "" Alors
    i<- i+1
    sinon
    Villes[i]<- nom_ville
    ok<- true
    fsi
    ftq

    si ok=false alors //si tu n'as pas pu insérer tu affiches ton message d'erreur
    Afficher ("Tableau complet")
    Finsi

    Fin

    ça devrait marcher (après je peux me tromper, mais ça devrait être bon), si tu ne comprends pas quelque chose n'hésite pas à demander !
    (le 16 arrive, je le regarde)
    0
    1. imene
       
      bonsoir tout le monde.je ss en premiere annee mathematique et informatique.aidez moi a resoudre cet algo svp: il consiste a fusionner deux tableaux ordonés ds 1 3eme tableau.merci d'avance les amis
      0