Zitat Zitat von DoS Beitrag anzeigen
@ancient: Weil ein normaler integer nur bis zu 5 Dezimal stellen speichern kann. Mit dem Float wollte ich nur sicher gehen, falls er ein bisschen erweitern möchte .
Ich heiße zwar nicht Ancient, aber das kann ich so nicht stehen lassen.
Du gehst scheinbar davon aus, dass ein Integer 16 Bit groß ist. Dies mag zwar für 16bit Betriebssysteme gelten, ist aber in der Zeit der 32bit (bzw. 64bit) Systeme nicht mehr gültig.

Starte doch mal folgendes Programm:
Code:
#include <stdio.h>


int main(int argc, char *argv[])
{
    printf("Ein Integer ist %d Bit gross!\n", sizeof(int) * 8);
    return 0;
}
Ausgabe:
Ein Integer ist 32 Bit gross!
(dazu ist natürlich zu sagen, dass ich ein 32bit Betriebssystem benutze)

Ein "normaler" Integer ist folglich 32bit bzw. 64bit groß!

Mit einem solchen (signed) int kannst du maximal die Zahl 2,147,483,647 abbilden.
Das heißt: 9 Stellen genau und ein paar 10-stellige Zahlen.

@Threadstarter

Ich hab hier mal kurz eine "einfachere" Variante geschrieben.
Es wird einfach hochgezählt und die Ziffern werden einzeln extrahiert.
Dort wo das "TODO" steht, können Bedingungen eingefügt werden, z.B.:
Code:
if (hunderter != 5) continue;
Also: nur Zahlen mit xx5xx ausgeben.

Hier der Code:
Code:
#include <stdio.h>

#define ZAHL_EXTRAHIEREN(name, nummer, var) \
    name = var / nummer; \
    var %= nummer;


int main(int argc, char *argv[])
{
    int i;
    int z;
    
    int einer;
    int zehner;
    int hunderter;
    int tausender;
    int zehntausender;
    
    for(i = 10000; i < 99999; i++)
    {
        z = i;
        
        ZAHL_EXTRAHIEREN(zehntausender, 10000, z);
        ZAHL_EXTRAHIEREN(tausender, 1000, z);
        ZAHL_EXTRAHIEREN(hunderter, 100, z);
        ZAHL_EXTRAHIEREN(zehner, 10, z);
        ZAHL_EXTRAHIEREN(einer, 1, z);
        
        // TODO: Bedingungen hier
        
        printf(
            "%d = %d%d%d%d%d\n",
            i,
            zehntausender, tausender,
            hunderter, zehner, einer
        );
    }
    
    return 0;
}