bonjour j'ai du souci avec se code apparemment il y a une coquille mais j'arrive pas a la trouver c'est un programme quui doit calculer la racine carrée d'une valeur
début
r <- 1
répéter
r <- (r + n / r) / 2
fin
adresse contenu signification
2997 : 1 ; ;Placer
2998 : 1 ; ;le nombre 1
2999 : 1000 ; ;à l’adresse 1000
3000 : 0
3001 : 1 ; ; Placer
3002 : 2 ; ;le nombre 2
3003 : 1020 ; ;à l’adresse 1020
3004 : 0
3005 : 2 ; ; Diviser
3006 : 2000 ; ;le contenu de l’adresse 2000
3007 : 1000 ; ;par le contenu de l’adresse 1000
3008 : 1010 ; ;et placer le résultat à l’adresse 1010 (n/r)
3009 : 4 ; ; Ajouter
3010 : 2000 ; ;le contenu de l’adresse 2000
3011 : 1010 ; ;au contenu de l’adresse 1010
3012 : 1010 ; ;et placer le résultat à l’adresse 1010 (r+n/r)
3013 : 2 ; ;Diviser
3014 : 1010 ; ;le contenu de l’adresse 1010
3015 : 1020 ; ;par le nombre 2
3016 : 1000 ; ;et placer le résultat à l’adresse 1000 r=(r+n/r)/2
3017 : 3 ; ;continuer avec une autre instruction :
3018 : 3005 ; ;la prochaine instruction est à l’adresse 3005
3019 : 0
3020 : 0
le code de python est :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 def affecte(valeur, adresse) : m[adresse] = valeur def divise(x, y, adresse) : m[adresse] = m[x] / m[y] def ajoute(x, y, adresse) : m[adresse] = m[x] + m[y] def encore(adresse) : m['pc'] = adresse op = {1 : affecte, 2 : divise, 3 : encore, 4 : ajoute} m = {} m['pc'] = 2997 m[2997] = [1, 1, 1000] m[3001] = [1, 2, 1020] m[3005] = [2, 2000, 1000, 1010] m[3009] = [4, 2000, 1010, 1010] m[3013] = [2, 1010, 1020, 1000] m[3017] = [3, 3005] m[2000] = 2.0 def run(fois) : for n in range(4 * fois) : a = m['pc'] apply(op[m[a][0]], m[a][1:]) if m[a][0] != 3 : m['pc'] += 4 return m[1000]
j'ai donner a 2000 la valeur de 2.0
mais sa marche pas merci de m'aider
Partager