Zahl in Wort umwandeln



  • tff schrieb:

    Auja, ein Wettbewerb, wer es kürzer hinbekommt:

    Ja aber dann müsste man sich auch die Mühe machen, und mal einen Compiler versuchsweise drüberlaufen lassen. 😃

    ebenfalls beides nicht lauffähig...
    Wenn man schon die if's weglassen muss dann auch bitte richtig.



  • Ja oder aber einen Compiler verwenden, der es nicht so genau mit der Syntax nimmt und die Typumwandlung selbst implementiert.



  • Folgender Code funktioniert einwandfrei und lässt sich ohne Warnung mit CodeBlocks und Visual Studio 2008 kompilieren

    #include <iostream> 
    #include <string> 
    
    int main() 
    { 
        std::string e[]={"","ein","zwei","drei","vier","fuenf","sechs","sieben","acht","neun","zehn","elf","zwoelf","dreizehn","vierzehn","fuenfzehn","sechzehn","siebzehn","achtzehn","neunzehn","","","zwanzig","dreissig","vierzig","fuenfzig","sechzig","siebzig","achtzig","neunzig","","und",""}; 
        for(unsigned int i(0); i != 100 && std::cout<<(e[32]=e[i>19?i%10:i]+(i==1?"s":"")+e[i%10&&i>20?31:30]+e[i/10+20],e[32][0]-='a'-'A',i==0?"Null":e[32])<<std::endl; ++i); 
    }
    


  • ttf schrieb:

    tff schrieb:

    Auja, ein Wettbewerb, wer es kürzer hinbekommt:

    Ja aber dann müsste man sich auch die Mühe machen, und mal einen Compiler versuchsweise drüberlaufen lassen. 😃

    ebenfalls beides nicht lauffähig...
    Wenn man schon die if's weglassen muss dann auch bitte richtig.

    Jaja, so nen Compiler zu benutzen, ist schon schwierig. Sonst würdest du merken, dass sich mein Code kompilieren lässt. 🙄

    wtf schrieb:

    Beat this!

    Kein Problem, e[30] ist überflüssig, using namespace std; spart zwei Token und int i = 0 spart ebenfalls zwei Token ggü. unsigned int i(0); :p



  • Jaja, so nen Compiler zu benutzen, ist schon schwierig. Sonst würdest du merken, dass sich mein Code kompilieren lässt.

    So ist es funktionsfahig.

    string foo(int i)
    {
        string e[]={"","ein","zwei","drei","vier","fuenf","sechs","sieben","acht","neun","zehn","elf","zwoelf","dreizehn","vierzehn","fuenfzehn","sechzehn","siebzehn","achtzehn","neunzehn","","","zwanzig","dreissig","vierzig","fuenfzig","sechzig","siebzig","achtzig","neunzig","","und",""};
        return e[32]=e[i>19?i%10:i]+(i==1?"s":"")+e[i%10&&i>20?31:30]+e[i/10+20],e[32][0]-='a'-'A',i==0?string("Null"):e[32];
    }
    


  • Jetzt kommt mal alle wieder runter. 😉
    Letztendlich habt ihr ja nur den optimalsten und schönsten Code von "zähler" kopiert und etwas zusammengefrickelt ohne euch dafür zu schämen. 🙄



  • beurteiler schrieb:

    Jetzt kommt mal alle wieder runter. 😉
    Letztendlich habt ihr ja nur den optimalsten und schönsten Code von "zähler" kopiert und etwas zusammengefrickelt ohne euch dafür zu schämen. 🙄

    👍



  • beurteiler schrieb:

    Jetzt kommt mal alle wieder runter. 😉
    Letztendlich habt ihr ja nur den optimalsten und schönsten Code von "zähler" kopiert und etwas zusammengefrickelt ohne euch dafür zu schämen. 🙄

    ach komm, das geht schon noch ein bisschen 'schöner' und 'optimaler' und zählers ansatz ist auch nicht 'neu'.



  • ach komm, das geht schon noch ein bisschen 'schöner' und 'optimaler'...

    ... zeig mal.

    ...und zählers ansatz ist auch nicht 'neu'

    Theoretisch nicht aber praktisch schon. 😉



  • beurteiler schrieb:

    ... zeig mal.

    Nö. :p
    Denn deine Meinung steht ja schon fest:

    "...optimalsten und schönsten Code..."

    😉



  • Ok! Willma nich so sein 🙂

    int i;
    	char* e[] = {"ein", "zwei", "drei", "vier", "fuenf", "sechs",
    					 "sieben", "acht", "neun"};
    	char* z[] = {"zehn", "zwanzig", "dreissig", "vierzig", "fuenfzig",
    					"sechzig", "siebzig", "achtzig", "neunzig"};
    
    	for( i=0; i<100; i++ )
    	{
    		switch(i)
    		{
    			case 0:
    				puts("null");
    			break;
    
    			case 1:
    				puts("eins");
    			break;
    
    			case 11:
    				puts("elf");
    			break;
    
    			case 12:
    				puts("zwoelf");
    			break;
    
    			default:	
    				if (i%10)
    					printf(e[i%10-1]);
    				if(i>20&&i%10)
    					printf("und");
    				if(i>=10)
    					printf(z[i/10-1]);
    				puts("");
    		}
    	}
    


  • Wo kommen die ganzen C-ler hergekrochen? ..



  • omgdie schrieb:

    Wo kommen die ganzen C-ler hergekrochen? ..

    Das sind so mehr die C-Mischer denen in ihrer Sprache bestimmte Möglichkeiten von C++ fehlen.

    Sechszehn, Siebenzehn

    🙄



  • ttf schrieb:

    So ist es funktionsfahig.

    Du weißt aber schon, was ein Konstruktor ist?

    beurteiler schrieb:

    Letztendlich habt ihr ja nur den optimalsten und schönsten Code von "zähler" kopiert und etwas zusammengefrickelt ohne euch dafür zu schämen. 🙄

    Ohja, ich hab die Arrays kopiert, wie ich mich schäme.



  • cpplus schrieb:

    omgdie schrieb:

    Wo kommen die ganzen C-ler hergekrochen? ..

    Das sind so mehr die C-Mischer denen in ihrer Sprache bestimmte Möglichkeiten von C++ fehlen.

    Sechszehn, Siebenzehn

    🙄

    Uuu yeah, very well, sorry i overlooked. Die beiden Zahlen kann man auch natürlich auch noch inne switch packen.



  • Michael E. schrieb:

    ttf schrieb:

    So ist es funktionsfahig.

    Du weißt aber schon, was ein Konstruktor ist?

    beurteiler schrieb:

    Letztendlich habt ihr ja nur den optimalsten und schönsten Code von "zähler" kopiert und etwas zusammengefrickelt ohne euch dafür zu schämen. 🙄

    Ohja, ich hab die Arrays kopiert, wie ich mich schäme.

    Nicht nur die arrays.
    Es ist fast genau das gleiche Konstrukt des von "zähler" Vorgesetzten.
    Schade das du nicht ehrlich genug bist dies zuzugeben. 👎



  • Ich hab mir zählers Code bis jetzt noch nicht mal durchgelesen. Deshalb kann ich gar nicht abgeschrieben haben.

    Verwundert es dich wirklich bei solch einem trivialen Problem, dass sich die Vorgehensweisen von zähler und mir ähneln?



  • Michael E. schrieb:

    Ich hab mir zählers Code bis jetzt noch nicht mal durchgelesen.

    Das kann nachher jeder sagen. Plagiator! Mal sehen, wann die Softwarepatente durchkommen, dann hast du nichts mehr zu lachen ...


Anmelden zum Antworten