[Spoiler] Calculer la somme de nombres en base quelconque

Voir le sujet précédent Voir le sujet suivant Aller en bas

[Spoiler] Calculer la somme de nombres en base quelconque

Message par Samy.C le Ven 3 Juin - 11:37

Code non vérifié mais il n'y a pas de raison qu'il ne marche pas ^^ :
Code:
Algo De Principe

Debut
 Tant que la chaine de caractère n'est pas finie
 Rechercher nombre
 Convertir en base b
 FinTantQue
 Faire Somme des chiffres
Fin

1-

 Entrée Sortie

chainechiffre----->CalculSommeBase--->sommetotale
baseb------------->

2-

Définir Type Chaine
N=80
Chaine = Tableau[N] Caractères

3-

/     chainechiffre     /   baseb       / sommetotale /
/  "17 203  9 0"     / "13"    / 370 /
/ " " / " " / 0       /

4-
Outils
procédure CalculSommeBase(entrée chainechiffre : Chaine, entrée baseb : entier , sortie sommetotale)
// Cette procédure permet de donner l'entier représentant la somme des nombres contenus dans la chaine
// chainechiffre est la chaine  
// baseb est la base dans laquelle seront converti les chiffres
// sommetotale est la somme des nombres contenus dans cette chaine

5-
Programme

Constantes
N=80             //longueur max du tableau
STOP='.' // Caractère terminatoire

Type

Chaine = Tableau[N] caractères // Type des phrases traitées

Variable

chainechiffre : Chaine // Phrase qu'il faut justifier
baseb : entier // Base sur laquelle travailler
sommetotale : entier // somme des nombres contenus dans cette chaine

Outils
procédure CalculSommeBase(entrée chainechiffre : Chaine, entrée baseb : entier , sortie sommetotale)
// Cette procédure permet de donner l'entier représentant la somme des nombres contenus dans la chaine
// chainechiffre est la chaine  
// baseb est la base dans laquelle seront converti les chiffres
// sommetotale est la somme des nombres contenus dans cette chaine


Debut
 ecrire("Chaine de chiffres ? ")
 lire(chainechiffre)
 ecrire("convertir en base ? ")
 lire(baseb)
 CalculSommeBase(chainechiffre,baseb,sommetotale)
 ecrire("Somme en base ",baseb," : ", sommetotale)
 Finsi
Fin

6-
procédure CalculSommeBase(entrée chainechiffre : Chaine, entrée baseb : entier , sortie sommetotale)  

Variable

longueur : entier

Outils
Procedure repererMot( entrée phrase : chaine, entrée sortie i : entier, sortie lg : entier)
// Repère un mot dans la phrase lg = 0 si il n'y a plus de mot
// phrase : texte où je cherche le mot
// i : - entrée : indice de départ de la recherche du mot - sortie : indice juste après le mot ou sur le STOP
// lg : longueur du mot trouvé ou 0 si il n'y a pas de mot.

Procedure convertirbase(entrée sortie chiffres : chaine, entrée i : entier, entrée lg : entier, entrée baseb)
// convertirbase sert à convertir un chiffre vers une base quelconque
// chiffre : chaine ou a lieu la conversion
// i : indice indiquant la fin du mot
// lg : longueur du mot à traité

Procédure calculsomme(entrée chiffres : chaine, sortie : sommetotale)
// calculsomme permet de faire la somme de les éléments d'un tableau
// chiffres est la chaine dans laquelle on fait le calcul
// sommetotale est la somme de tout les éléments du tableau


Debut

 i=0

 Répéter
 
 repererMot(chainechiffre,i,longueur)
 convertirbase(chainechiffre,i,longueur, baseb)
 
 Jusqu'a Longueur=0
 
 calculsomme(chainechiffre,sommetotale)
 
Fin



Procedure repererMot( entrée phrase : chaine, entrée sortie i : entier, sortie lg : entier)
// Repère un mot dans la phrase lg = 0 si il n'y a plus de mot
// phrase : texte où je cherche le mot
// i : - entrée : indice de départ de la recherche du mot - sortie : indice juste après le mot ou sur le STOP
// lg : longueur du mot trouvé ou 0 si il n'y a pas de mot.

Variables

Début

Tantque phrase[i] = SEPARATEUR
// Avance jusqu'au premier caractère ou au STOP
 i := i + 1

FinTantQue

lg := 0
Tantque phrase[i] <> SEPARATEUR et phrase[i] <> de STOP faire
//  S'arrête si on rencontre séparateur ou si on rencontre STOP

i := i + 1    
lg := lg +1

FinTantQue

// i s'arrête après le dernier caractère du mot trouvé
Fin



Procedure convertirbase(entrée sortie chiffres : chaine, entrée i : entier, entrée lg : entier, entrée baseb)
// convertirbase sert à convertir un chiffre vers une base quelconque
// chiffre : chaine ou a lieu la conversion
// i : indice indiquant la fin du mot
// lg : longueur du mot à traité

Variables

nbaffilé : entier
j : entier //Indice de parcours

Début
 nbaffilé=0
 j=i-1
 Tantque j>i-longueur
 chiffres[j]=chiffres[j]*baseb^nbaffilé
 j:=j-1
 FinTantQue
Fin


Procédure calculsomme(entrée chiffres : chaine, sortie : sommetotale)
// calculsomme permet de faire la somme de les éléments d'un tableau
// chiffres est la chaine dans laquelle on fait le calcul
// sommetotale est la somme de tout les éléments du tableau

Variables

j : entier //Indice de parcours

Début
 j:=0
 sommetotale:=0
 
 Tantque non chiffres[j]=0 et non chiffres[j-1]=" "
 sommetotale=sommetotale+chiffres[j]
 j:=j+1
 FinTantQue
Fin
avatar
Samy.C

Messages : 42
Karma Karma : 55
Date d'inscription Date d'inscription : 24/05/2016
Age Age : 21
Localisation Localisation : Cellule AFPA
Humeur Humeur : Gone

Voir le profil de l'utilisateur http://youtube.com/sonicdbzfan07

Revenir en haut Aller en bas

Le même avec des corrections... ^^

Message par GrlSidious (Vince) le Ven 3 Juin - 12:00

Algo De Principe

Debut
 Tant que la chaine de caractère n'est pas finie
 Rechercher nombre
 Convertir en base b
 FinTantQue
 Faire Somme des chiffres
Fin


2-

Définir Type Chaine
N=30
Chaine = Tableau[N] Caractères

3-

//  nombConvert   /   baseb       / sumTot /
//  "17 203  9 0"     / "13"     / 370 /
//  " " / " " / 0       /

4-
Outils
procédure CalculSommeBase(entrée nombConvert : Chaine, entrée baseb : entier , sortie sumTot) 
// Cette procédure permet de donner l'entier représentant la somme des nombres contenus dans la chaine
// nombConvert est la chaine  
// baseb est la base dans laquelle seront converti les chiffres
// sumTot est la somme des nombres contenus dans cette chaine

5-
Programme 

Constantes 
N=30             //longueur max du tableau 
STOP='.' // Caractère terminateur
SEPARATEUR=' '// Caractère espace

Type

Chaine = Tableau[n]caractères // Type des phrases traitées

Variable

nombConvert : Chaine // Phrase qu'il faut justifier
baseb : entier // Base sur laquelle travailler
sumTot : entier // somme des nombres contenus dans cette chaine

Outils
procédure CalculSommeBase(entrée nombConvert : Chaine, entrée baseb : entier , sortie sumTot) 
// Cette procédure permet de donner l'entier représentant la somme des nombres contenus dans la chaine
// nombConvert est la chaine  
// baseb est la base dans laquelle seront converti les chiffres
// sumTot est la somme des nombres contenus dans cette chaine


Debut
 ecrire("Nombre a convertir ? ")
 lire(nombConvert)
 ecrire("convertir en base ? ")
 lire(baseb)
 CalculSommeBase(nombConvert,baseb,sumTot)
 ecrire("Somme en base ",baseb," : ", sumTot)
 Finsi
Fin

6-
procédure CalculSommeBase(entrée nombConvert : Chaine, entrée baseb : entier , sortie sumTot)  

Variable

longueur : entier

Outils
Procedure repererMot( entrée phrase : chaine, entrée sortie i : entier, sortie lg : entier)
// Repère un mot dans la phrase lg = 0 si il n'y a plus de mot
// phrase : texte où je cherche le mot
// i : - entrée : indice de départ de la recherche du mot 
//     - sortie : indice juste après le mot ou sur le STOP
// lg : longueur du mot trouvé ou 0 si il n'y a pas de mot.

Procedure convertirbase(entrée sortie chiffres : chaine, entrée i : entier, entrée lg : entier, entrée baseb)
// convertirbase sert à convertir un chiffre vers une base quelconque
// chiffre : chaine ou a lieu la conversion
// i : indice indiquant la fin du mot
// lg : longueur du mot à traité

Procédure calculsomme(entrée chiffres : chaine, sortie : sumTot)
// calculsomme permet de faire la somme de les éléments d'un tableau
// chiffres est la chaine dans laquelle on fait le calcul
// sumTot est la somme de tout les éléments du tableau


Debut 

 i=0

 Répéter 
 
 repererMot(nombConvert,i,longueur)
 convertirbase(nombConvert,i,longueur, baseb)
 
 Jusqu'a Longueur=0
 
 calculsomme(nombConvert,sumTot)
 
Fin



Procedure repererMot( entrée phrase : chaine, entrée sortie i : entier, sortie lg : entier)
// Repère un mot dans la phrase lg = 0 si il n'y a plus de mot
// phrase : texte où je cherche le mot
// i : - entrée : indice de départ de la recherche du mot 
//     - sortie : indice juste après le mot ou sur le STOP
// lg : longueur du mot trouvé ou 0 si il n'y a pas de mot.

Variables

Début

Tantque phrase[i] = STOP faire
// Avance jusqu'au premier caractère ou au STOP
i := i + 1

FinTantQue

lg := 0
Tantque phrase[i] <> SEPARATEUR et phrase[i] <> de STOP faire
//  S'arrête si on rencontre séparateur ou si on rencontre STOP

i := i + 1     
lg := lg +1

FinTantQue

// i s'arrête après le dernier caractère du mot trouvé
Fin



Procedure convertirbase(entrée sortie chiffres : chaine, entrée i : entier, entrée lg : entier, entrée baseb)
// convertirbase sert à convertir un chiffre vers une base quelconque
// chiffre : chaine ou a lieu la conversion
// i : indice indiquant la fin du mot
// lg : longueur du mot à traité

Variables

nbaffilé : entier
j : entier //Indice de parcours

Début
 nbaffilé=0
 j=i-1
 Tantque j>i-longueur faire
chiffres[j]=chiffres[j]*baseb^nbaffilé
j:=j-1
 FinTantQue
Fin


Procédure calculsomme(entrée chiffres : chaine, sortie : sumTot)
// calculsomme permet de faire la somme de les éléments d'un tableau
// chiffres est la chaine dans laquelle on fait le calcul
// sumTot est la somme de tout les éléments du tableau

Variables

j : entier //Indice de parcours

Début
 j:=0
 sumTot:=0
  Tantque non chiffres[j]=0 et non chiffres[j-1]=" " faire
sumTot=sumTot+chiffres[j]
j:=j+1
 FinTantQue
Fin
avatar
GrlSidious (Vince)
Admin

Messages : 58
Karma Karma : 53
Date d'inscription Date d'inscription : 23/05/2016
Age Age : 27
Localisation Localisation : Grenoble
Humeur Humeur : Fiora top 4 ever

Voir le profil de l'utilisateur https://fr.wiktionary.org/wiki/connard

Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum