Einfaches Programm Umkehrzahl



  • Hallo,
    eine einfach Frage.
    Es soll die Umkehrzahl gebildet werden

    z.B 12345

    ergibt 54321

    Hab zwar eine Lösung mit

    {
    int wert,wert1,wert2,wert3,wert4,wert5;

    printf("Vierstellige Zahl eingeben:");
    scanf("%i",&wert);
    wert1=wert/1000;
    wert2=wert%1000/100;
    wert3=wert%100/10;
    wert4=wert%10;
    wert5=wert1+wert2*10+wert3*100+wert4*1000;
    printf("Umkehrwehrt von %i ist: %i\n",wert,wert5);

    return 0;
    }

    aber gibt es da nicht auch eine elegante lösung mit einer Schleife, sonst muss ich ja bei einer 15 stelligen Zahl einen ewigen code eingeben.

    Danke im Vorraus



  • Du kannst die Zahl als String einlesen und dann per reverse() umdrehen.

    Oder du verwendest eine Schleife:

    int zahl=...,uzahl=0;
    
    vector<int> stellen;
    while(zahl>0)
    {
      stellen.push_back(zahl%10);
      zahl/=10;
    }
    
    for(int i=0;i<stellen.size();++i)
      uzahl=10*uzahl+stellen[i];
    


  • Bloodysunday schrieb:

    Hallo,
    eine einfach Frage.
    Es soll die Umkehrzahl gebildet werden

    z.B 12345

    ergibt 54321

    Hab zwar eine Lösung mit

    {
    int wert,wert1,wert2,wert3,wert4,wert5;

    printf("Vierstellige Zahl eingeben:");
    scanf("%i",&wert);
    wert1=wert/1000;
    wert2=wert%1000/100;
    wert3=wert%100/10;
    wert4=wert%10;
    wert5=wert1+wert2*10+wert3*100+wert4*1000;
    printf("Umkehrwehrt von %i ist: %i\n",wert,wert5);

    return 0;
    }

    aber gibt es da nicht auch eine elegante lösung mit einer Schleife, sonst muss ich ja bei einer 15 stelligen Zahl einen ewigen code eingeben.

    Danke im v******

    Vielleicht suchst du so was einfaches:

    long int reversi(long int z)
    { long int r = 0;
      while (z != 0) { r = r * 10 + z % 10; z /= 10; }
      return r;
    }
    

    vg tesu


Anmelden zum Antworten