#include <stdio.h>
bool isNumeric(char *zahl, int laenge); // diese Funktion überprüft, ob es sich wirklich um eine Zahl handelt
void sortZahl(char *zahl, int laenge); // diese Funktion sortiert die Zahl
int getLaenge(char *zahl, int arrLaenge); // diese Funktion gibt die Tasächlichen anzahl der Ziffern zurück
void main()
{
char zahl[11] = {0}; // 10 stellige Ganzzahl, da Long 4 Byte hat + Null-Terminator (\0)
int echteLaenge = 0;
printf("Bitte geben sie eine 10 stellige Ganzzahl ein\n");
scanf("%10s",zahl); // %10s steht dafür, das die ersten 10 Stellen als Zeichenfolge gelesen werden
flushall(); // leeren des Tastaturpuffers
echteLaenge = getLaenge(zahl, sizeof(zahl)); // die Echte Laenge
if( isNumeric(zahl, echteLaenge) )
{
printf("\nDie eingegebene Zahl:\n%s\n\n", zahl); // Ausgabe der eingegebenen Zahl (wobei nur die 1. 10 Ziffern genommen werden
sortZahl(zahl, echteLaenge); // Zahl sortieren
printf("Die sortierte Zahl:\n%s", zahl); // Ausgabe der sortierten zahl
}
else
{
printf("\nUngueltige Eingabe");
}
}
int getLaenge(char *zahl, int arrLaenge)
{
int l=0;
for(int i=0; i<arrLaenge; i++) // Schleife bis Gesamtlänge des Arrays
{
if(zahl[i] != 0) l++; // wenn das Zeichen der Stelle i nicht leer ist
}
return l;
}
bool isNumeric(char *zahl, int laenge)
{
bool nummer=true;
for(int i=0; i<laenge; i++) // Schleife bis Gesamtlänge des Arrays
{
if(!((zahl[i]>=48)&&(zahl[i]<=57)) )
{// wenn das zeichen nicht zwischen ASCII 48 und 57 liegt, dann ist es keine Ziffer
nummer=false;
}
}
return nummer;
}
void sortZahl(char *zahl, int laenge)
{
//hier wir das char-Array sortiert mit Hilfe eines Bubble-Sorts
bool sortiert = true;
char temp; // temporäre Variable
int zahl1, zahl2;
while(sortiert)
{
int i=0;
sortiert = false;
while(i<(laenge-1))
{
zahl1 = zahl[i]-48;
zahl2 = zahl[i+1]-48;
if(zahl1 > zahl2)
{
temp = zahl[i];
zahl[i] = zahl[i+1];
zahl[i+1] = temp;
sortiert = true;
}
i++;
}
laenge--;
}
}