Frage zu Aufgabe



  • wieso packste die null nicht mit in die case bedingung?

    switch (zahl2)  {
    						case 0: printf("Null-");break;
                            case 1: printf("Eins-");break;
                            case 2: printf("Zwei-");break;
                            case 3: printf("Drei-");break;
                            case 4: printf("Vier-");break;
                            case 5: printf("Fuenf-");break;
                            case 6: printf("Sechs-");break;
                            case 7: printf("Sieben-");break;
                            case 8: printf("Acht-");break;
                            case 9: printf("Neun-");break;
                            default: printf("IMPOSSIBLE STATE!(hamwa nich!");
    
                                    }
    


  • schon probiert, geht auch nicht



  • vfbf4n1893 schrieb:

    schon probiert, geht auch nicht

    habs grade mal kompiliert und laufen lassen.
    also, das tu das selbe. bei mir läufts, die zahlen werden rückwärts in textform angezeigt, wieso nicht bei dir? 😕



  • auch die letzte 0??? kopier mal was du bei dir compiled hast



  • vfbf4n1893 schrieb:

    auch die letzte 0??? kopier mal was du bei dir compiled hast

    ja, die letzte auch.

    int main()
    {
    	unsigned a = 1020304050, b;
    	while (a!=0)
    	{
    		b = a % 10;
    		a = a / 10;
    		switch (b)  {
    			case 0: printf("Null-");break;
    			case 1: printf("Eins-");break;
    			case 2: printf("Zwei-");break;
    			case 3: printf("Drei-");break;
    			case 4: printf("Vier-");break;
    			case 5: printf("Fuenf-");break;
    			case 6: printf("Sechs-");break;
    			case 7: printf("Sieben-");break;
    			case 8: printf("Acht-");break;
    			case 9: printf("Neun-");break;
    		}
    	}
    	return 0;
    }
    test>test.txt
    

    Null-Fuenf-Null-Vier-Null-Drei-Null-Zwei-Null-Eins-



  • ja gut sorum gehts bei mir auch. ich gebe es ja einmal vorwärts aus und einmal rückwärts. vorwärts gehts, rückwärts nicht. es geht auch, wenn die 0 irgendwo zwischendrin steht, nur nicht, wenn die 0, die letzte ziffer ist



  • vfbf4n1893 schrieb:

    ja gut sorum gehts bei mir auch. ich gebe es ja einmal vorwärts aus und einmal rückwärts. vorwärts gehts, rückwärts nicht. es geht auch, wenn die 0 irgendwo zwischendrin steht, nur nicht, wenn die 0, die letzte ziffer ist

    mein post war also die vorwärtsversion oda watt 🤡



  • wenn man z.b. 1250 eingibt. dann müsste eig in der mitte 2mal null stehen. da einmal von vorwärts und einmal von rückwärts. es steht aber nur 1 mal ne null in der mitte.

    an was leigt das?



  • irgendwie kann ich deinen sinn für humor nicht teilen 👎



  • vfbf4n1893 schrieb:

    also ich habs nun so gelöst:

    ...
                do {
                teiler = teiler*10;
                h=h+1;
                } while(h<i);
    
                while (eingabezahl!=0)
                {
                zahl1 = eingabezahl / teiler;
                eingabezahl = eingabezahl % teiler;
    ...
    

    was ich nun nicht ganz versteht, wenn ich eine zahl mit "0" eingebe, also z.b. 220. dann gibt es mir bei der letzten while schleife die "Null-" nicht aus. Also das was in default drin steht, wird nicht ausgegebn. aber nur bei der leztten while schleife. bei der 3. while schleife wird die 0 ausgegeben. Wieso???

    Die Null wird bei Vorwärtsschleife nicht ausgegeben, da die letzte "eingabezahl" 0 ist und die Abbruchbedingung damit erfüllt ist:

    1. Durchlauf: eingabezahl==220 -> zahl1=2 -> eingabezahl=20 -> weiter
    2. Durchlauf: eingabezahl==20 -> zahl1=2 -> eingabezahl=0
    3. Durchlauf: eingabezahl==0 -> Abbruch

    Du kannst stattdessen den Teiler auf 0 prüfen:

    28 while (teiler>0) // statt: while (eingabezahl!=0)
    

    viele grüße
    ralph



  • danke geht 😉


Anmelden zum Antworten