Was macht das Hier



  • Hallo Leute,

    ich soll herausfinden, was folgender Code macht. Leider kriege ich den nicht ans laufen. Die Funktion akzeptiert angeblich Zahlen zwischen 1-3999. Wenn einer da durchsieht, könnte er ja mal versuchen, den Code zu erklären. Angeblich sieht man am Resultat sofort, was passiert. Vielen Dank für die Hilfe.

    Gruß
    Hans

    char* was(int x) {
    	char*t=(char*)malloc(10);
    	int i=7,j=0,v=5000,p,z[7]={0x49,0x56,0x58,0x4c,0x43,0x44,0x4d};
    	while(!(t[j]='\0')&&x&&(v/=5/((i--+1)%2+1))+1) {
    	while(x>=v&&(x-=v)+1&&(t[j++]=z[i])+1);
    	while(i&&x>=(p=v-v*(i%2+1)/10)&&(x-=p)+1&&(t[j++]=z[i-2+(i%2)])+1&&(t[j++]=z[i])+1);}
    	return t;
    }
    


  • Angeblich sieht man am Resultat sofort, was passiert.

    Dann probier's halt aus.



  • Das ist ja das Problem, ich krieg das nicht ans laufen. Sonst hätte ich das mal ausprobiert.


  • Mod

    GeoHans schrieb:

    Das ist ja das Problem, ich krieg das nicht ans laufen. Sonst hätte ich das mal ausprobiert.

    Ich will dir ja nicht die Hausaufgaben abnehmen: Was gibt es denn daran nicht zum Laufen zu bekommen? Das ist 100% korrekter Code.

    P.S.: Und es ist wirklich offensichtlich was das macht, wenn man es durchlaufen lässt. Das Ergebnis hätte ich aber vom reinen Überfliegen des Codes auch nicht erwartet 🙂 .



  • Und siehe da, wenn man sich selbst nicht die Finger schmutzig machen will, lässt man andere das für sich machen:
    http://codepad.org/Yp97zsz8
    Da sieht man auch, dass die Römer noch keine 0 gekannt haben.



  • Alles klar! Vielen Dank Leute!

    Hatte nen dummen Fehler im Programm und habs deshalb nicht ans Laufen gekriegt.

    Gruß Hans


Anmelden zum Antworten