Anfänger Bsp , Lösungsvorschlag?



  • Hallo!
    Ich hätte folgendes Bsp zu lösen und komme auf keinen grünen Zweig:
    "Schreiben Sie ein Programm, das zwei Zahlen m und n einliest und die n-te Ziffer der Zahl m ausgibt"

    z.B. m=1358 n=2 Ausgabe: 5

    Ich soll dabei jedoch kein "pow" keine Schleifen kein "if" und keine zusätzlichen Funktionen verwenden:

    #include<iostream>
    using namespace std;
    int main() {

    return 0;
    }

    Ich glaube es soll irgendwie mit dem Rechenoperator modulo zu lösen sein 😕



  • na, dann mal ein paar anregungen

    was mach modulo? einfach ausgedrückt: rest einer division

    Bsp: 158 % 100 = 58
    158 % 10 = 8

    und im Vergleich dazu die ganzzahlige Division
    158 / 100 = 1
    158 / 10 = 15

    erkennst du den Zusammenhang zu deinem problem



  • danke für deine Antwort
    ja wie modulo funktioniert weiß ich schon, aber was mir Probleme bereitet ist das "n-te Ziffer der Zahl m"

    bei einer dreistelligen Zahl:
    (dreistellzahl/100) (dreistellzahl/10%10) + (dreistellzahl%10)
    Def. 1.Ziffer // Def. 2.Ziffer // Def. 3.Ziffer

    ..und wenn die zahl jetzt 8-stellig ist und ich will die 5 ziffer von hinten?



  • das plus zwischen der klammer ignorieren, wollte nur zeigen wie ich die 3 ziffern der 3 stelligen zahl jeweils ansprechen kann



  • assert(sizeof(int)==4);
    int powersOfTen[] = {1,10,100,1000,10000,100000,1000000,10000000,
       100000000,1000000000};
    int m, n;
    cin >> m >> n;
    cout << (m / powersOfTen[n]) % 10 << endl;
    


  • Hast du die Zehnerpotenzen etwa von Hand ausgerechnet? 😮 😕 😮
    Ich lass das immer den Compiler machen:

    template<int POW> 
    struct p {
            enum { ow =  p<POW-1>::ow * 10 };
    };
    
    template<>
    struct p<0> {
            enum { ow = 1 };
    };
    
    int powersOfTen[] = {
            p<0>::ow, p<1>::ow, p<2>::ow,
            p<3>::ow, p<4>::ow, p<5>::ow,
            p<6>::ow, p<7>::ow, p<8>::ow,
    };
    

    😃



  • Storm.Xapek.de schrieb:

    Hast du die Zehnerpotenzen etwa von Hand ausgerechnet? 😮 😕 😮

    Man und ich hab mich stundenlang mit dem Taschenrechner bemüht und dann würdigst Du nicht einmal meine Leistung!



  • kommen wir mal zur einfachsten lösung:

    int main()
    {
      char buf[256];
      cin >> buf;
      unsigned index;
      cin >> index;
      cout << buf[index] << endl;
    }
    


  • DerEntenwickler schrieb:

    Storm.Xapek.de schrieb:

    Hast du die Zehnerpotenzen etwa von Hand ausgerechnet? 😮 😕 😮

    Man und ich hab mich stundenlang mit dem Taschenrechner bemüht und dann würdigst Du nicht einmal meine Leistung!

    😃



  • thordk schrieb:

    kommen wir mal zur einfachsten lösung:

    [Schnipp]
    

    Hehe 👍


Anmelden zum Antworten