This Chat is read-only. Login to resume chatting.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <stdbool.h>
// Fonction pour vérifier si un nombre a au moins deux chiffres distincts
bool hasTwoDistinctDigits(int number) {
int digits[10] = {0};
while (number > 0) {
digits[number % 10]++;
number /= 10;
}
int distinctCount = 0;
for (int i = 0; i < 10; i++) {
if (digits[i] > 0) {
distinctCount++;
if (distinctCount >= 2) {
return true;
}
}
}
return false;
}
// Fonction pour générer un nombre aléatoire de quatre chiffres avec au moins deux chiffres distincts
int generateRandomNumber() {
int number;
do {
number = 1000 + rand() % 9000; // Génère un nombre entre 1000 et 9999
} while (!hasTwoDistinctDigits(number));
return number;
}
// Fonction pour classer les chiffres d'un nombre par ordre croissant
int sortAscending(int number) {
int digits[4];
for (int i = 0; i < 4; i++) {
digits[i] = number % 10;
number /= 10;
}
for (int i = 0; i < 3; i++) {
for (int j = i + 1; j < 4; j++) {
if (digits[i] > digits[j]) {
int temp = digits[i];
digits[i] = digits[j];
digits[j] = temp;
}
}
}
return digits[0] * 1000 + digits[1] * 100 + digits[2] * 10 + digits[3];
}
// Fonction pour classer les chiffres d'un nombre par ordre décroissant
int sortDescending(int number) {
int digits[4];
for (int i = 0; i < 4; i++) {
digits[i] = number % 10;
number /= 10;
}
for (int i = 0; i < 3; i++) {
for (int j = i + 1; j < 4; j++) {
if (digits[i] < digits[j]) {
int temp = digits[i];
digits[i] = digits[j];
digits[j] = temp;
}
}
}
return digits[0] * 1000 + digits[1] * 100 + digits[2] * 10 + digits[3];
}
// Fonction pour calculer le terme suivant de la suite
int nextTerm(int number) {
int a = sortAscending(number);
int b = sortDescending(number);
return b - a;
}
int main() {
srand(time(NULL)); // Initialise le générateur de nombres aléatoires
int currentTerm = generateRandomNumber();
printf("Premier terme : %d\n", currentTerm);
while (true) {
int next = nextTerm(currentTerm);
printf("Terme suivant : %d\n", next);
if (next == currentTerm) {
break;
}
currentTerm = next;
}
return 0;
}