Le poids d'un nombre algo [Résolu]

scouby91 3 Messages postés jeudi 21 avril 2016Date d'inscription 21 avril 2016 Dernière intervention - 21 avril 2016 à 12:13 - Dernière réponse : cptpingu 3766 Messages postés dimanche 12 décembre 2004Date d'inscriptionModérateurStatut 1 décembre 2017 Dernière intervention
- 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
Afficher la suite 
3Messages postés jeudi 21 avril 2016Date d'inscription 21 avril 2016 Dernière intervention

5 réponses

Répondre au sujet
cptpingu 3766 Messages postés dimanche 12 décembre 2004Date d'inscriptionModérateurStatut 1 décembre 2017 Dernière intervention - 21 avril 2016 à 13:54
0
Utile
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.
Commenter la réponse de cptpingu
scouby91 3 Messages postés jeudi 21 avril 2016Date d'inscription 21 avril 2016 Dernière intervention - Modifié par cptpingu le 21/04/2016 à 14:27
0
Utile
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
Commenter la réponse de scouby91
cptpingu 3766 Messages postés dimanche 12 décembre 2004Date d'inscriptionModérateurStatut 1 décembre 2017 Dernière intervention - Modifié par cptpingu le 21/04/2016 à 14:29
0
Utile
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
Commenter la réponse de cptpingu
scouby91 3 Messages postés jeudi 21 avril 2016Date d'inscription 21 avril 2016 Dernière intervention - 21 avril 2016 à 14:34
0
Utile
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.
Commenter la réponse de scouby91
cptpingu 3766 Messages postés dimanche 12 décembre 2004Date d'inscriptionModérateurStatut 1 décembre 2017 Dernière intervention - Modifié par cptpingu le 21/04/2016 à 15:09
0
Utile
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
Commenter la réponse de cptpingu

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.