Frage zu Aufgabe



  • Wutz schrieb:

    puts(word[*c++ -'0']);  
    }
    

    Da wird das aber untereinander ausgegeben.



  • vfbf4n1893 schrieb:

    diese schleife ist fertig wenn i=8

    Eigentlich ist die Berechnung fertig, wenn sich das Ergebnis nicht mehr ändert.

    vfbf4n1893 schrieb:

    ich weiß nicht wie ich die einzelnen ziffern in jeder schleife deklarieren muss. also z.B. wenn ich 124 / 10 = ??? und dann 124 mod 10 = ???

    beim nächsten durchlauf der schlaufe muss ja dann 124 durch das ergebnis der 1. schlaufe ersetzt werden. wie bekomme ich das hin?

    Steht doch da:

    zahl = zahl / 10;
    

  • Mod

    vfbf4n1893 schrieb:

    beim nächsten durchlauf der schlaufe muss ja dann 124 durch das ergebnis der 1. schlaufe ersetzt werden. wie bekomme ich das hin?

    Du benutzt eine Variable, die sich das Ergebnis merkt.



  • also ich bekomms nicht hin.. werd am montag mal kollegen fragen... hab nun ca. 10 stunden hin und her probiert aber klappt nicht



  • Du darfst auch hier fragen.
    Zeig was du hast und wir können darüber reden.



  • {
    
        int eingabezahl, zahl, i=0;
        printf("Bitte geben Sie eine natürliche Zahl ein: ");
        scanf("%d", &eingabezahl);
    
        while (i<2)
    
    {
            eingabezahl % 10 == zahl;
            eingabezahl / 10 == eingabezahl;
            i=i+1;
    }
    
        printf("%d", zahl);
    
        return 0;
    }
    

    hab absolut kein plan, was bei print rein soll und wie ich dann die zahlen als wörter ausgeben vorwärts und rückwärts.



  • vfbf4n1893 schrieb:

    hab absolut kein plan, was bei print rein soll und wie ich dann die zahlen als wörter ausgeben vorwärts und rückwärts.

    versuch doch mal dieses array in einer schleife auszugeben:

    char* zahlen[] = {"null", "eins", "zwei", "drei", "vier"};
    

    dann weißt du auch, was bei printf rein soll.
    die abbruchbedingung in der while schleife musst du noch überdenken.



  • Es würde ja erstmal reichen die Zahl in rückwarts als Zahl auszugeben.
    Dazu wäre es ganz nützlich das printf in die Schleife zu nehmen.

    Allerdings weiß ich nicht so ganz was die Vergleiche in den Zeilen 12 und 13 sollen.



  • ja die / und % die einzelnen zahlen rausrechnen?



  • vfbf4n1893 schrieb:

    ja die / und % die einzelnen zahlen rausrechnen?

    was verstehst du unter rausrechnen?



  • 124mod10= 4
    124 / 10 = 12

    12mod10=2
    12/10=1 usw



  • vfbf4n1893 schrieb:

    124mod10= 4
    124 / 10 = 12

    12mod10=2
    12/10=1 usw

    ja, kann man so machen.
    oder so, wie es wutz gezeigt hat.



  • vfbf4n1893 schrieb:

    ja die / und % die einzelnen zahlen rausrechnen?

    Das würdest du mit einer Zuweisung viel besser hinbekommen.
    = ist eine Zuweisung. Da steht das Ziel auch auf der linken Seite vom =
    == ist ein Vergleich auf Gleichheit.

    Die beiden Zeilen waren Müll und haben keinen Einfluss auf das Programm da das Ergebnis verworfen wird.



  • nächster versuch: Eingabe 124: Ergebnis = 4.
    Ich will zunächst mal hinbekommen, das es mir die zahlen aufsplittet. also 1 2 4

    {
    
        int eingabezahl, zahl1;
        printf("Bitte geben Sie eine natürliche Zahl ein: ");
        scanf("%d", &eingabezahl);
    
           while (eingabezahl/10==0); {
                    zahl1 = eingabezahl % 10;
                    printf("%d", zahl1);
                    eingabezahl == zahl1;
                                }
    
        return 0;
    }
    

    wieso sprint er mir nicht mehr in die schleife? Kapier net wie ich das printf gestalten soll bzw wie ich die neue eingabezahl nach 1. schleife oben reinbekomme in whilde (...)



  • Das while heißt übersetzt solange
    Dann steht da "solange (eingabezahl/10) gleich Null ist, mache.

    124/10 sind aber 12. Das ist ungleich Null, also ist die Bedingung beim while falsch und die Schleife wird nicht ausgeführt.

    Ein while(eingabezahl != 0) wäre da besser.

    Das % 10 berechnet nur die Einerstelle der Zahl.
    Wenn du aber eingabezahl == zahl1; machst, bekommt deine eingabezahl nur die Einerstelle. Aber eigentlich willst du ja die anderen Stellen berechnen.

    Jetzt brauchst du einer Rechenvorschrift, die Die Zehnerstelle zur Einerstelle macht. Die eingabezahl muss also nur noch ein Zehntel sein.



  • while (eingabezahl/10!=0); {
                    zahl1 = eingabezahl % 10;
                    printf("%d", zahl1);
                    eingabezahl= eingabezahl / 10;
                                }
    

    oh man nun hab ich das.... jetz spuckt er wieder gar nichts mehr aus...
    muss dazu sage ich programmiere seit ca. 2 wochen 😉



  • das semikolon hinter der while bedingung muss weg



  • ok für eingabe 124 spuckt er nun 42 aus... d.h. wo ist die 1? :p



  • vfbf4n1893 schrieb:

    ok für eingabe 124 spuckt er nun 42 aus... d.h. wo ist die 1? :p

    Das

    while (eingabezahl/10!=0)
    

    ist falsch. Wenn eingabezahl=1, dann ist eingabezahl/10=0 und die Schleife wird verlassen.

    Richtig ist:

    while (eingabezahl!=0)
    

    Besser ist:

    do
    {
    	...
    }
    while (eingabezahl != 0);
    

    Dann wird die Schleife wenigstens einmal durchlaufen, also auch bei Eingabe von Null.

    viele grüße
    ralph



  • jop klar, muss so sein... das mit dem while.. logisch...

    nun kommt bei 124 folgendes raus: 421.. jetzt soll das noch rauskommen als 124 und in Buchstaben also: eins-zwei-vier und vier-zwei-eins.

    Tipps? 😉


Anmelden zum Antworten