Le poids d'un nombre algo

Résolu
scouby91 Messages postés 3 Date d'inscription jeudi 21 avril 2016 Statut Membre Dernière intervention 21 avril 2016 - Modifié par cptpingu le 21/04/2016 à 14:10
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 - 21 avril 2016 à 15:01
Bonjour à tous,
Je sais que ce problème à déjà été posé par un membre, cependant je me permets de reposer la question car pour moi c'est un autre problème malgré que l'énoncé est le même (étant donnée qu'on suit le même cours "je suppose" )

Le but est de créer un programme qui permet de saisir un nombre entier naturel et qui affiche le
ou les poid(s) de chaque chiffre dans ce nombre. À partir de ces informations (les poids de chaque
chiffre), le nombre doit pouvoir être reconstitué.
Le poids représente la position du chiffre dans le nombre, en partant de la droite (le premier chiffre de droite est à la position 0, il a donc un poids 0)

Travail demandé
Écrire l’algorithme de l’application, correctement commenté et indenté.

Je pense avoir compris le principe de l'exercice mais je bloque à un certain niveau

nb, positioin_actuelle,i,j : entier
début
tab[1,,10 , 1,,9]

tant que
pour i allant de 0 à 10
pour j allant de 0 à 9
tab[1..i, 1..j] = -1

nb = 0
position_actuelle = 0
afficher «  entrez un nomnre = »
saisir nb

si nb = 0
alors Si nb vaut 0, on sort de la boucle principale
fin si

si nb> 999999999
alors afficher «  nombre trop grand »
fin si

tant que nb>0

entier indice= nb modulo 10 (modulo signifie le reste de la division) 
entier pos = 0; 
tant que tab[indice][pos]est différent de -1 et pos < 9
pos +1; 
tab[indice][pos] = position_actuelle 
nb = nb divisé par 10 
position_actuelle +1


A partir de là je n'arrive plus à avancer

Merci d'avance pour votre aide

5 réponses

cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
21 avril 2016 à 13:54
Bonjour.

Le sujet dont tu parles doit être celui-ci: http://codes-sources.commentcamarche.net/forum/affich-10056758-le-poids-d-un-nombre

Néanmoins, tu n'expliques pas ce qui te bloque précisement (pas facile de t'aider, c'est trop "vague").
Qu'est-ce qui te bloque exactement ? Quelles sont les informations manquantes dans la conversion donnée ci-dessus, qui t'empêche d'avancer ?

PS: Pense aux balises de codes quand tu postes.
0
scouby91 Messages postés 3 Date d'inscription jeudi 21 avril 2016 Statut Membre Dernière intervention 21 avril 2016
Modifié par cptpingu le 21/04/2016 à 14:27
bonjour,

voilà ce que j'ai écris en algo "pseudocode" par contre niveau indentation je ne suis pas au top :/

En fait je ne savais pas comment faire l'affichage du coup j'ai un peu triché en lisant le code en c++ que vous aviez écrit...

Est-ce correct?


nb, position_actuelle, i, j, k : entier
début
tab[1..10, 1..9]
// On remplit toutes les cases à -1, pour dire qu'elles sont vides.
pour i allant de 0 à 9
pour j allant de 0 à 8
tab[i, j] = -1
fin pour
fin pour

nb = 0
position_actuelle = 0
afficher «  entrez un nomnre = »
saisir nb

si nb = 0 alors
On sort de la boucle principale
fin si

si nb > 999999999 alors
afficher «  nombre trop grand »
fin si

tant que nb>0
indice = nb mod 10
pos = 0
tant que tab[indice][pos] <> -1 et pos < 9 alors
pos = pos + 1
fin tant que
tab[indice][pos] = position_actuelle 
nb = nb / 10
position_actuelle = position_actuelle + 1
fin tant que

// Affichage uniquement de ce qui n'est pas en -1
afficher « affichage des positions »
pour i allant de 0 à 9
si tab [i][0] <> -1 alors
afficher « numero i : »
pour j allant de 0 à 8 et tab[i][j] <> -1 alors
afficher « tab[i][j] »
fin pour
fin si
fin pour

// reconstruction du nombre d'origine
afficher « reconstruction du nombre d'origine »
nb_orignie = 0  
pour i allant de 0 à 9  
pour k allant de 0 à 8 et tab[i][k] < -1  
nb_origine = nb_origine * 10 ^ tab[i][k] 
fin pour
fin pour
afficher « nombre d'origine »

fin programme
0
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
Modifié par cptpingu le 21/04/2016 à 14:29
J'ai corrigé ton programme. Pense aux balises de code et à l'indentation (la prochaine fois que tu ne le fais pas, je supprimerais ton message).
  • Il manquait des fermetures partout ("fin si", "fin pour", "fin tant que", etc...).
  • La notion de tableau est très mal maîtrisée (utilisation de tab[0..i] au lieu de tab[i], ce qui montre une méconnaissance de l'accès par index).
  • Il y avait (et il doit peut être rester) des fautes de frappes ("orignie" au lieu de "origine", "nomnre" au lieu de "nombre", etc...). Attention, ça ne fait pas très sérieux, et ça donne l'impression que tu t'en fiches.


Améliorer votre expérience CodeS-SourceS avec ce plugin:
http://codes-sources.commentcamarche.net/forum/affich-10000111-plugin-better-cs-2#cptpingu-signature
0
scouby91 Messages postés 3 Date d'inscription jeudi 21 avril 2016 Statut Membre Dernière intervention 21 avril 2016
21 avril 2016 à 14:34
Je vous remercie pour votre correction

pour les tableaux dans le cours il y a un memento (je recopie ce qu'il y a dans le livre)

en algo
nomtableau[1..N, 1..M] : type tableau
en c++
typetableau nomTableau [N][M]

et comme il est demandé de l'écrire en algo je l'ai écrit de cette manière.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
Modifié par cptpingu le 21/04/2016 à 15:09
Tu n'as pas compris ma remarque.

Tu avais mis: tab[1..10, 1..9], ce qui est juste, car c'est une déclaration.
En revanche, après, tu as mis: tab[0..i, 0..j] = -1, ce qui était faux, car c'est une utilisation. La bonne syntaxe est tab[i, j] = -1.

Edit: En passant, je viens de remarquer un petit bug dans ton algo, que je n'avais pas vu. Les tableaux étant indexés à partir de 0, la déclaration devrait être: tab[0..9, 0..8] (à la ligne 3).


Améliorer votre expérience CodeS-SourceS avec ce plugin:
http://codes-sources.commentcamarche.net/forum/affich-10000111-plugin-better-cs-2#cptpingu-signature
0
Rejoignez-nous