Connectez-vous avec des experts et des passionnés sur Zoofast.fr. Obtenez des réponses détaillées et précises de la part de notre communauté de professionnels bien informés.

Bonjour je bloque sur ça besoin d’aide s’il vous plaît c’est en nsi (terminal)


Avec ce programme :


def chercher(T,n,i,j):

if i < 0 or ??? :

print("Erreur")

return None

if i > j :

return None

m = (i+j) // ???

if T[m] < ??? :

return chercher(T, n, ??? , ???)

elif ??? :

return chercher(T, n, ??? , ??? )

else :

return ???



L’exécution du code doit donner :

>>> chercher([1,5,6,6,9,12],7,0,10)

Erreur

>>> chercher([1,5,6,6,9,12],7,0,5)

>>> chercher([1,5,6,6,9,12],9,0,5)

4

>>> chercher([1,5,6,6,9,12],6,0,5)

2

Bonjour Je Bloque Sur Ça Besoin Daide Sil Vous Plaît Cest En Nsi TerminalAvec Ce Programme Def ChercherTnij If I Lt 0 Or PrintErreur Return None If I Gt J Retur class=
Bonjour Je Bloque Sur Ça Besoin Daide Sil Vous Plaît Cest En Nsi TerminalAvec Ce Programme Def ChercherTnij If I Lt 0 Or PrintErreur Return None If I Gt J Retur class=

Sagot :

Bonsoir

Cet exercice n'est pas forcément facile à résoudre car on aurait tendance à utiliser une boucle for pour faire la fonction mais ici avec les fragments donnés, on n'en est interdit.

Code complet ci-joint

Le principe du code

Si le i (début) < 0 ou si le j (fin) < que la longueur totale du tableau:

   Alors print Erreur et retourner None

Si le début (i) > que la fin (j):

   Alors retourner None

Définir m comme l'index de la valeur centrale du tableau (longueur totale (i+j) divisé (//) par 2)

Si la valeur centrale du tableau, correspondant à l'index m (T[m]) est < à la valeur recherchée (n):

    Alors retourner la fonction (donc la relancer) en augmentant la valeur de départ (i) de 1

Sinon, Si la valeur centrale du tableau, correspondant à l'index m (T[m]) est > à la valeur recherchée (n):

    Alors retourner la fonction (donc la relancer) en diminuant la valeur de fin (i) de 1

Sinon (donc si T[m] = n) :

    Retourner m (donc l'index du chiffre recherché)

Explications

Je pense que le pseudo-code du dessus suffit à comprendre mais si ce n'est pas le cas, je précise:

  • Pour trouver m on additionne i + j pour obtenir la "longueur" qu'on va parcourir dans le tableau, on divise cette valeur pour tomber sur la valeur centrale du tableau, celle qui se trouve au milieu.
  • Quand on compare que T[m] < n et qu'on finit par renvoyer la fonction avec i+1, c'est pour diminuer la plage de valeur qu'on va englober dans le tableau
  • Quand on compare T[m] > n et qu'on renvoi la fonction avec j-1, c'est comme au dessus, pour diminuer la plage de valeur. On fait ca jusqu'à ce que la plage analysée n'englobe plus qu'une seule valeur.

J'espère que ces explications t'aurons aidé à comprendre, si tu as mal compris quelque chose ou que je l'ai mal expliqué tu peux me demander dans les commentaires ;)

Bonne soirée & bonne chance !

View image ClementCg
Merci d'utiliser cette plateforme pour partager et apprendre. Continuez à poser des questions et à répondre. Chaque contribution que vous faites est appréciée. Zoofast.fr s'engage à répondre à toutes vos questions. Merci et revenez souvent pour des réponses mises à jour.