Algorithme sur les tableaux a une dimansion

Résolu/Fermé
bansan Messages postés 122 Date d'inscription samedi 7 février 2004 Statut Membre Dernière intervention 8 mai 2011 - 1 avril 2008 à 13:08
 imene - 23 janv. 2009 à 19:16
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

2 réponses

kaelhula Messages postés 48 Date d'inscription mardi 1 avril 2008 Statut Membre Dernière intervention 10 avril 2009 25
1 avril 2008 à 13:20
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
bansan Messages postés 122 Date d'inscription samedi 7 février 2004 Statut Membre Dernière intervention 8 mai 2011 1
1 avril 2008 à 13:33
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
kaelhula Messages postés 48 Date d'inscription mardi 1 avril 2008 Statut Membre Dernière intervention 10 avril 2009 25 > bansan Messages postés 122 Date d'inscription samedi 7 février 2004 Statut Membre Dernière intervention 8 mai 2011
1 avril 2008 à 13:58
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
kaelhula Messages postés 48 Date d'inscription mardi 1 avril 2008 Statut Membre Dernière intervention 10 avril 2009 25
1 avril 2008 à 13:38
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
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