Bonjour, je débute dans le pseudo-langage algorithmique et je voudrai vous demander une vérification d'un algorithme que je viens d'écrire. Cela reste très basique, mais c'est pour vérifier quelques notions. Alors j'ai voulu réaliser un tableau rempli d'entiers que l'utilisateur choisis lui même, puis d'une recherche de la valeur encore choisie par cet utilisateur. J'ai voulu opérer suivant une manière itérative basique, puis le refaire avec la notion de fonction :
Première façon :
Algorithme chercherValeur
Variables : valeur, compteur, i, valeur1 : entier;
tab : Tableau [] d'entiers;
Début
tab <- new entier [5]
compteur <- 0
tant_que (compteur < 5) faire
lire(valeur)
tab[compteur] <- valeur
compteur <- compteur + 1
fin tant_que
lire(valeur1)
i <- 0
tant_que ((i < 5) ET (tab[i]<>(pas égale) valeur1)) faire
i <- i+1
fin tant_que
si (tab[i]=valeur1) alors
ecrire("l'indice de la valeur recherchée est ",i)
fin si
sinon
ecrire("cette valeur n'existe pas dans ce tableau")
fin sinon
Fin
Deuxième façon :
Algorithme fonctionChercherValeur
Variables : tab : tableau[] d'entiers
nb, résultat : entier
Début
tab <- new entier [5]
remplirTableau(tab) //appel de la première fonction "remplirTableau"
lire(nb)
résultat <- chercherValeur(nb, tab) //appel de la deuxième fonction "chercheValeur"
ecrire("L'indice de la valeur recherchée est ",résulstat)
Fin
Fonction remplirTableau(tableau : tableau [] d'entiers): vide
Variables : valeur, compteur : entier
Début
compteur <- 0
tant_que (compteur < 5) faire
lire(valeur)
tableau[compteur] <- valeur
compteur <- compteur + 1
fin tant_que
retourne
Fin
Fonction chercherValeur (nb1 : entier, tab1 : tableau[] d'entiers): entier
Variables : i : entier
Début
i <- 0
tant_que (i < 5) faire
si (tab1[i] = nb1) alors
retourne(i)
fin si
sinon
i <- i+1
fin sinon
fin tant_que
retourne (-1)
Fin
Merci de votre patience.
edit : modification de l'erreur de la sixième valeur inutile
Il me semble que ton code lit six valeurs au lieu de cinq.
Dans la deuxième version, il est curieux de ne pas traiter dans le programme principal le code d'erreur (-1) que peut renvoyer la fonction de recherche. Cela est peut-être sans importance tant qu'on reste dans le cadre de l'algorithmique remarque.
Non, le code lit bien 5 valeurs, on va de 0 à 4 (< 5)...
Je voudrais quelques précisions : tab et valeur sont fixés avant qu'on entre dans ton programme... ? Ton code (1) ne m'en donne pas l'impression... surtout le new int[5] ...
Sinon, juste pour la fonction de recherche, la fonction lire() dans le 1er algo est bien... juste le début de cet algo qu'est pas clair quant à son utilité...
Dans ton 2e algo... J'arrive pas à comprendre pourquoi tu te sert de la fonction lire ici :
Début
lire(valeur)
compteur <- 0
tant_que (compteur < 5) faire
tableau[compteur] <- valeur
lire(valeur)
compteur <- compteur + 1
fin tant_que
retourne
Fin
Vu ce que tu as l'air de vouloir de faire, le bon çà serait plutot çà :
Début
compteur <- 0
tant_que (compteur < 5) faire
tableau[compteur] <- compteur # D'où sortait la variable valeur, elle vaut toujours pareil si elle est préfixé ?
compteur <- compteur + 1
fin tant_que
retourne
Fin
Sinon, le reste est bon...
__________________________
Sujet résolu ? Pensez à mettre le tag
Un problème en C# ? Vérifiez celui-ci n'est pas déjà résolu dans la FAQ et que le sujet n'est pas traité parmis les tutoriaux ou les articles avant de poster dans le forum C#.
Dans la première version, je crée le tableau grâce aux constructeurs " new entiers[5], et la variable "valeur" est défini par l'utilisateur grâce à la méthode lire(), normalement cette méthode permet à l'utilisateur d'écrire ce que vaut cette variable, non ?
Dans mon deuxième algo, je me sert de la fonction lire() pour que l'utilisateur puisse choisir ses propres valeurs aux tableaux, autrement si je choisis cette expression " tableau[compteur] <- compteur " l'utilisateur n'aurait pas le choix des valeurs du tableau.
Je pense que j'ai mal saisi le notion de la méthode lire() ? Elle permet de saisir la valeur indiquer par l'utilisateur, non ?
A oki, je n'avais pas compris ce que tu voulais dire par 'lire(valeur)'... mais si c'est 'demander à l'utilisateur d'entrer une valeur, ben c'est mon alors, c'est nikel... je vois pas de pb dans ton algo
__________________________
Sujet résolu ? Pensez à mettre le tag
Un problème en C# ? Vérifiez celui-ci n'est pas déjà résolu dans la FAQ et que le sujet n'est pas traité parmis les tutoriaux ou les articles avant de poster dans le forum C#.
Dans la première boucle, le code lit bien cinq valeurs, compteur variant de 0 à 4. Mais avant d'entrer dans la boucle, il y a un "6ème" lire (valeur) dont je ne comprends pas l'utilité.
Avant de rentrer dans la boucle on demande à l'utilise une valeur (fonction lire(valeur)).
On rentre dans la boucle et on met tout de suite cette valeur dans le tableau...
On en demande un autre pour le passage suivant dans la boucle et ainsi de suite...
Mais je suis d'accord avec toi, on lit 6 valeurs...
Il aurait été plus astucieux d'écrire :
tab <- new entier [5]
compteur <- 0
tant_que (compteur < 5) faire
lire(valeur)
tab[compteur] <- valeur
compteur <- compteur + 1
fin tant_que
Ca marche dans les 2 cas... mais cette dernière version est plus optimisée quoi...
€dit : no post se sont croisés.
__________________________
Sujet résolu ? Pensez à mettre le tag
Un problème en C# ? Vérifiez celui-ci n'est pas déjà résolu dans la FAQ et que le sujet n'est pas traité parmis les tutoriaux ou les articles avant de poster dans le forum C#.