Donc je fais un programme pour trouver la plus grande soustraction possible. Si n est, f.e 9284, le nombre minimum qui peut être fait avec les chiffres de 9284 est 2489 et le maximum est 9842. La fonction max_substraction renvoie 9842 - 2489 en sortie.c/C++ | int * excepté, int donné (renvoyant un pointeur ??)
Le problème est que chaque fois que j'exécute le programme et tapez un nombre, le programme se bloque. J'ai essayé de déboguer et on m'a dit que la fonction "to_digits" était excepté int * mais int donné ce qui est vraiment étrange. Est-ce que je ne retourne pas un pointeur? ...
#include <stdio.h>
int valid(int);
int length(int);
int to_digits(int);
int to_num(int *, int);
void sort_digits(int *, int);
int max_substraction(int *, int);
int i,j;
int main()
{
int num;
scanf("%d", &num);
if(!valid(num))
{
printf("Invalid!\n");
}
else {
printf("%d", max_substraction(to_digits(num), length(num)));
}
return 0;
}
int length(int num){
int cpy_of_num = num, len = 0;
do {
cpy_of_num /= 10;
len++;
} while(cpy_of_num != 0);
return len;
}
int valid(int num){
int len = length(num);
if(len<2 || len>9){
return 0;
}
return 1;
}
int to_digits(int num){
int len = length(num), cpy_of_num = num;
int digits[len];
for(i=len-1; i>=0; i--){
digits[i] = cpy_of_num % 10;
cpy_of_num /= 10;
}
return *digits;
}
int to_num(int *digits, int len){
int new_num = 0, mult = 1;
for(i=len-1; i>=0; i--){
new_num += digits[i]*mult;
mult *= 10;
}
return new_num;
}
void sort_digits(int *digits, int len){
for(i=1;i<len;i++){
for(j=0;j<len-1;j++){
if(digits[j] > digits[j+1]){
int temp = digits[j];
digits[j] = digits[j+1];
digits[j+1] = temp;
}
}
}
}
int max_substraction(int *digits, int len){
sort_digits(digits, len);
int max_num_digits[10], min_num_digits[10];
for(i=0; i<len; i++){
min_num_digits[i] = digits[i];
max_num_digits[i] = digits[len-i-1];
}
int min_num = to_num(min_num_digits, len);
int max_num = to_num(max_num_digits, len);
return max_num - min_num;
}
Quelle est l'erreur et à quelle ligne? – nakiya
L'instruction return de la fonction "to_digits"? – Caitiff
Il n'y a rien comme "C/C++" s'il vous plaît choisir une langue et spécifier ce que vous compilez comme. –