Contest: 19 August 2008 - 21 August 2008
-
Es sind nich meine Ha's. Ich hab kein Informatik und bin in der 10. Klasse. Willst du meinen Quellcode sehen?
-
LittleGamer3 schrieb:
Willst du meinen Quellcode sehen?
Immer her damit.

-
#include <iostream> using namespace std; int main() { int eingabe; cin >> eingabe; while (eingabe>=1000) { cout << "M"; eingabe = eingabe - 1000; } if (eingabe>=900) { cout << "DCCCC"; eingabe = eingabe - 900; } if (eingabe>=800) { cout << "DCCC"; eingabe = eingabe - 800; } if (eingabe>=700) { cout << "DCC"; eingabe = eingabe - 700; } if (eingabe>=600) { cout << "DC"; eingabe = eingabe - 600; } if (eingabe>=500) { cout << "D"; eingabe = eingabe - 500; } if (eingabe>=400) { cout << "CCCC"; eingabe = eingabe - 400; } if (eingabe>=300) { cout << "CCC"; eingabe = eingabe - 300; } if (eingabe>=200) { cout << "CC"; eingabe = eingabe - 200; } if (eingabe>=100) { cout << "C"; eingabe = eingabe - 100; } if (eingabe>=90) { cout << "LXXXX"; eingabe = eingabe - 90; } if (eingabe>=80) { cout << "LXXX"; eingabe = eingabe - 80; } if (eingabe>=70) { cout << "LXX"; eingabe = eingabe - 70; } if (eingabe>=60) { cout << "LX"; eingabe = eingabe - 60; } if (eingabe>=50) { cout << "L"; eingabe = eingabe - 50; } if (eingabe>=40) { cout << "XXXX"; eingabe = eingabe - 40; } if (eingabe>=30) { cout << "XXX"; eingabe = eingabe - 30; } if (eingabe>=20) { cout << "XX"; eingabe = eingabe - 20; } if (eingabe>=10) { cout << "X"; eingabe = eingabe - 10; } if (eingabe>=9) { cout << "VIIII"; eingabe = eingabe - 9; } if (eingabe>=8) { cout << "VIII"; eingabe = eingabe - 8; } if (eingabe>=7) { cout << "VII"; eingabe = eingabe - 7; } if (eingabe>=6) { cout << "VI"; eingabe = eingabe - 6; } if (eingabe>=5) { cout << "V"; eingabe = eingabe - 5; } if (eingabe>=4) { cout << "IIII"; eingabe = eingabe - 4; } if (eingabe>=3) { cout << "III"; eingabe = eingabe - 3; } if (eingabe>=2) { cout << "II"; eingabe = eingabe - 2; } if (eingabe>=1) { cout << "I"; eingabe = eingabe - 1; } cout << endl; return 0; }
-
Glaubst du mir jetzt?
Ich möchte nur mal sehen, wie andere das Problem angehen und ob es möglich ist, den Quellcode kürzer zu halten...
-
Wieviel von diesen 16kb wohl auf durch die Funktion bedingt sein werden...
Sorry, aber das sind einfach unsinnige Randbedingungen.
-
LittleGamer3 schrieb:
Glaubst du mir jetzt?
Ich möchte nur mal sehen, wie andere das Problem angehen und ob es möglich ist, den Quellcode kürzer zu halten...Soll jetzt der Quellcode kürzer sein, oder dessen Kompilat?
Btw. ist es der Quellcode, der später wartbar und übersichtlich sein muss, nicht das Kompilat.
-
Das fertig kompilierte Programm soll weniger Speicherplatz beanspruchen als meins.
-
Wenn es um die Größe des Binaries geht solltest du die iostream-Anforderung definitiv rausnehmen.
Außerdem sollte jeder selbst kompilieren dürfen, immerhin kann man durch etwas Feintuning deutlich Platz sparen.Aber dir scheint es hier weniger um einen Coding-Contest zu gehen als darum wer die eleganteste Lösung bietet, richtig?
Also eher eine Frage der Ästethik. Dein Code ist so schon in Ordnung, zwar sehr lang, aber er ist weder schwer zu verstehen noch unübersichtlich. Die 16KB kommen hauptsächlich dadurch zu Stande, dass du die C++ IOStreams benutzt (die verschlingen schon ganz schön was an Platz im Verhältnis zu deinem Code) und wahrscheinlich ist es auch noch ein Debug Build. Mit Mac OS kenn ich mich nicht so aus und ich weiß nicht welchen Compiler du benutzt hast, daher kann ich dir nicht genau sagen woran es liegt.
-
Du hast das genau richtig verstanden. Ich hab mit
g++ main.cpp -o romq
kompiliert.Postet einfach mal eure Codes oder Vorschläge
EDIT: Wie kann ich die Iostream rausnehmen?
-
Die andere Richtung wird hier verlangt. Ich bin bei 175 Zeichen

-
.filmor schrieb:
Die andere Richtung wird hier verlangt. Ich bin bei 175 Zeichen

und das funktioniert???
-
S.T.A.L.K.E.R. schrieb:
Dein Code ist so schon in Ordnung, zwar sehr lang, aber er ist weder schwer zu verstehen noch unübersichtlich.
Ein sehr langer Code ist auch immer unübersichtlich.
int i = 0, wert = 1000; while( eingabe > 0 ) if ( eingabe >= wert ) { cout << i["MDCLXVI"]; eingabe -= wert; } else wert /= ++i % 2 ? 2 : 5;Dürfte kaum zu erheblich kleinerem binary führen.
-
LittleGamer3 schrieb:
.filmor schrieb:
Die andere Richtung wird hier verlangt. Ich bin bei 175 Zeichen

und das funktioniert???
duerfte sogar einfacher sein...
ich bin derzeit bei 8054 Byte im Release-Mode (mit deinen Compilerflags sogar nur 7819 Byte)
#include <cstdio> int main() { int eingabe; scanf( "%u", &eingabe ); while ( eingabe >= 1000 ) { putchar( 'M' ); eingabe -= 1000; } while ( eingabe >= 500 ) { putchar( 'D' ); eingabe -= 500; } while ( eingabe >= 100 ) { putchar( 'C' ); eingabe -= 100; } while ( eingabe >= 50 ) { putchar( 'L' ); eingabe -= 50; } while ( eingabe >= 10 ) { putchar( 'X' ); eingabe -= 10; } while ( eingabe >= 5 ) { putchar( 'V' ); eingabe -= 5; } while ( eingabe >= 1 ) { putchar( 'I' ); eingabe--; } putchar( '\n' ); }geht sicher besser...
-
ich hab noch ein #include vorne drann gemacht, dann hat es den fünf zahlen standgehaten... hat fertig kompiliert jedoch auch 16KB
-
camper schrieb:
S.T.A.L.K.E.R. schrieb:
Dein Code ist so schon in Ordnung, zwar sehr lang, aber er ist weder schwer zu verstehen noch unübersichtlich.
Ein sehr langer Code ist auch immer unübersichtlich.
int i = 0, wert = 1000; while( eingabe > 0 ) if ( eingabe >= wert ) { cout << i["MDCLXVI"]; eingabe -= wert; } else wert /= ++i % 2 ? 2 : 5;Dürfte kaum zu erheblich kleinerem binary führen.
kannst du das prog mal so posten, dass es funktioniert?
-
LittleGamer3 schrieb:
kannst du das prog mal so posten, dass es funktioniert?
Das Programmgerüst hast du doch vorgegeben.
-
camper schrieb:
cout << i["MDCLXVI"];Komm schon, das hast du nur gemacht um ihn zu flachsen

-
Dein Prog hat 13.008 KB
-
.filmor schrieb:
camper schrieb:
cout << i["MDCLXVI"];Komm schon, das hast du nur gemacht um ihn zu flachsen

ehrlich gesagt find ich den else block unübersichtlicher
-
kannst ja das cout-Statement mal durch putchar ersetzen und gegen den anderen Code antreten lassen.