Algorithme de kaprekar
Fermé
chaimaebel
Messages postés
12
Date d'inscription
samedi 18 novembre 2017
Statut
Membre
Dernière intervention
8 janvier 2018
-
Modifié le 22 nov. 2017 à 21:04
chaimaebel Messages postés 12 Date d'inscription samedi 18 novembre 2017 Statut Membre Dernière intervention 8 janvier 2018 - 23 nov. 2017 à 05:55
chaimaebel Messages postés 12 Date d'inscription samedi 18 novembre 2017 Statut Membre Dernière intervention 8 janvier 2018 - 23 nov. 2017 à 05:55
A voir également:
- Algorithme de kaprekar
- Logiciel algorithme gratuit - Télécharger - Édition & Programmation
- Logiciel algorithme euromillion - Télécharger - Loisirs créatifs
- Code ascii algorithme - Guide
- Algorithme qui calcule le carré d'un nombre - Forum Algorithmes / Méthodes
- Ecrire un algorithme qui calcule le produit de deux nombres - Forum Programmation
4 réponses
luckydu43
Messages postés
3833
Date d'inscription
vendredi 9 janvier 2015
Statut
Membre
Dernière intervention
4 novembre 2024
951
22 nov. 2017 à 21:20
22 nov. 2017 à 21:20
Bonsoir !
Je ne sais pas si tu vas avoir des réponses.
Essaie déjà de faire un peu de code propre : nommage explicite des variables, commentaires... Là, perso, je ne connais pas ton algo de tête ! Et je n'ai franchement pas envie de faire des recherches sur cet algo sachant que je vais devoir déboguer un code incompréhensible...
Soit plus explicite dans ta question.
Dégrossis le bazar en isolant les méthodes/fonctions/procédures qui marchent de celles qui ne marchent pas
Et à l'avenir... applique ce que je t'ai dit au quotidien : nommage explicite et commentaires. LA recette pour relire ton code 6 mois après :-D Surtout si d'autres (comme là maintenant tout de suite) sont amenés à le lire
Étonnant qu'on ne vous apprenne pas ça en école...
Je ne sais pas si tu vas avoir des réponses.
Essaie déjà de faire un peu de code propre : nommage explicite des variables, commentaires... Là, perso, je ne connais pas ton algo de tête ! Et je n'ai franchement pas envie de faire des recherches sur cet algo sachant que je vais devoir déboguer un code incompréhensible...
Soit plus explicite dans ta question.
Dégrossis le bazar en isolant les méthodes/fonctions/procédures qui marchent de celles qui ne marchent pas
Et à l'avenir... applique ce que je t'ai dit au quotidien : nommage explicite et commentaires. LA recette pour relire ton code 6 mois après :-D Surtout si d'autres (comme là maintenant tout de suite) sont amenés à le lire
Étonnant qu'on ne vous apprenne pas ça en école...
Dalfab
Messages postés
706
Date d'inscription
dimanche 7 février 2016
Statut
Membre
Dernière intervention
2 novembre 2023
101
22 nov. 2017 à 21:55
22 nov. 2017 à 21:55
Bonjour,
Avant de voir l'algorithme, il faut connaitre le langage. Il y a de très nombreuses erreurs. Je donne quelques unes mais il te faudra chercher les autres.
Ligne 4: Un tableau doit avoir une taille définie, ensuite on pourra y mettre des données de l'indice
Ligne 11: une fonction ne peut jamais retourner un tableau. Moyen souvent utilisé : c'est l'appelant qui le crée, le passe en paramètre, la fonction le remplit.
Ligne 49: c'est quoi cette accolade?
Ligne 65: pour les tests d'égalité il faut utiliser
Ligne 72 et 73: pour élever à la puissance, il n'y a pas d'opérateur (le
Ligne 76: les paramètres d'un
Lors de la compilation le compilateur signale des erreurs et des warnings, les deux doivent être lus, compris et corrigés.
Avant de voir l'algorithme, il faut connaitre le langage. Il y a de très nombreuses erreurs. Je donne quelques unes mais il te faudra chercher les autres.
Ligne 4: Un tableau doit avoir une taille définie, ensuite on pourra y mettre des données de l'indice
0à l'indice
n-1.
Ligne 11: une fonction ne peut jamais retourner un tableau. Moyen souvent utilisé : c'est l'appelant qui le crée, le passe en paramètre, la fonction le remplit.
Ligne 49: c'est quoi cette accolade?
Ligne 65: pour les tests d'égalité il faut utiliser
==.
Ligne 72 et 73: pour élever à la puissance, il n'y a pas d'opérateur (le
^est un ou exclusif), il faut utiliser la fonction
pow( n , p )qui fonctionne pour les
double, ou écrire sa fonction.
Ligne 76: les paramètres d'un
scanf()doivent être passé par adresse (avec un
&).
Lors de la compilation le compilateur signale des erreurs et des warnings, les deux doivent être lus, compris et corrigés.
chaimaebel
Messages postés
12
Date d'inscription
samedi 18 novembre 2017
Statut
Membre
Dernière intervention
8 janvier 2018
22 nov. 2017 à 22:03
22 nov. 2017 à 22:03
OUIIIIIIIIIII vous avez raison j'ai pas fait attention ! Mercii !
Dalfab
Messages postés
706
Date d'inscription
dimanche 7 février 2016
Statut
Membre
Dernière intervention
2 novembre 2023
101
23 nov. 2017 à 05:23
23 nov. 2017 à 05:23
Il reste beaucoup plus que 3 problèmes, relis bien tout ce qui a été répondu. Personne d'autre que toi ne rendras ce code lisible.
chaimaebel
Messages postés
12
Date d'inscription
samedi 18 novembre 2017
Statut
Membre
Dernière intervention
8 janvier 2018
23 nov. 2017 à 05:55
23 nov. 2017 à 05:55
D'accord ! Merci pour me repondre ! C'est gentille de votre part :)
chaimaebel
Messages postés
12
Date d'inscription
samedi 18 novembre 2017
Statut
Membre
Dernière intervention
8 janvier 2018
22 nov. 2017 à 21:58
22 nov. 2017 à 21:58
Ouii vous avez raison ! j'ai remodifier le Voilaa ! mais il reste des 3 probleme
#include <stdio.h>
int Decomp(int N,int n ){
int T[10];
int i;
i=0;
while(i<n){
T[i]=N%10;
N=N/10;
i=i+1;
} return T;
}
void trie(int T[], int n){
int i=0;
int x=0;
int j=0;
for(i=0;i<n;i++){
for(j=1;j<n;j++){
if(T[i]<T[j]){
x=T[i];
T[i]=T[j];
T[j]=x;
j--;
}
}
}
x=T[0];
for(i=0;i<n;i++){
T[i]=T[i+1];
T[n-1]=x;
}
int Calculcroi(int T[], int n){
int i,n1;
n1=0;
for(i=0;i<n;i++){
n1=n1+T[i]*10^(n-1-i);
} return n1;
}
int Calculdecroi(int T[],int n){
int i,n2;
n2=0;
for(i=0;i<n;i++){
n2=n2+T[i]*10^i;
} return n2;
}
}
void kaprekar(int N,int n,int MAXT){
int T[10],k;
int n1,n2,i;
i=0;
k=N;
do {
N=k;
T[10]=Decomp(N,n);
trie(T,n);
n1=Calculcroi(T,n);
n2=Calculdecroi(T,n);
k=n1-n2;
printf("%d=%d-%d \n",k,n2,n1);
i=i+1;
}while(k=0||k=N|| i>MAXT);
}
main(){
int N,T[10],n,MAXT;
printf("saisir le nombre de chiffre n :");
scanf("%d",&n);
N=10^n;
while(N>=10^n || N<0){
scanf("%d",&N);
}
scanf("%d",&MAXT);
Decomp(N,n);
trie(T, n);
Calculcroi(T,n);
Calculdecroi(T,n);
kaprekar(N,n,MAXT);
} :(
#include <stdio.h>
int Decomp(int N,int n ){
int T[10];
int i;
i=0;
while(i<n){
T[i]=N%10;
N=N/10;
i=i+1;
} return T;
}
void trie(int T[], int n){
int i=0;
int x=0;
int j=0;
for(i=0;i<n;i++){
for(j=1;j<n;j++){
if(T[i]<T[j]){
x=T[i];
T[i]=T[j];
T[j]=x;
j--;
}
}
}
x=T[0];
for(i=0;i<n;i++){
T[i]=T[i+1];
T[n-1]=x;
}
int Calculcroi(int T[], int n){
int i,n1;
n1=0;
for(i=0;i<n;i++){
n1=n1+T[i]*10^(n-1-i);
} return n1;
}
int Calculdecroi(int T[],int n){
int i,n2;
n2=0;
for(i=0;i<n;i++){
n2=n2+T[i]*10^i;
} return n2;
}
}
void kaprekar(int N,int n,int MAXT){
int T[10],k;
int n1,n2,i;
i=0;
k=N;
do {
N=k;
T[10]=Decomp(N,n);
trie(T,n);
n1=Calculcroi(T,n);
n2=Calculdecroi(T,n);
k=n1-n2;
printf("%d=%d-%d \n",k,n2,n1);
i=i+1;
}while(k=0||k=N|| i>MAXT);
}
main(){
int N,T[10],n,MAXT;
printf("saisir le nombre de chiffre n :");
scanf("%d",&n);
N=10^n;
while(N>=10^n || N<0){
scanf("%d",&N);
}
scanf("%d",&MAXT);
Decomp(N,n);
trie(T, n);
Calculcroi(T,n);
Calculdecroi(T,n);
kaprekar(N,n,MAXT);
} :(