


This post has been edited 1 times, last edit by "Kellox_Smacks" (May 31st 2006, 4:59pm)
dann geb ich dir mal die komplette aufgabenstellung This post has been edited 1 times, last edit by "Kellox_Smacks" (May 31st 2006, 6:39pm)
|
|
Source code |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
#include<iostream.h>
intro();
calculate();
main() {
intro();
calculate();
while (true) ; // Endlosschleife, verhindert Schliessen des Fensters
}
intro() {
cout << "Roemische Zahlendarstellung mit Basis 8\n\n"
<< "Eine eingegebene positive Zahl wird\n"
<< "in eine roemische Darstellung umgewandelt.\n"
<< "A steht fuer 1 (8^0),\n"
<< "B fuer 4 (0.5 * 8^1), C fuer 8 (1 * 8^1),\n"
<< "D fuer 32 (0.5 * 8^2), E fuer 64 (1 * 8^2) usw.\n"
<< "Aus 5 wird zum Beispiel BA, aus 7 BAAA.\n"
<< "\n"
<< "Loesungsansatz:\n"
<< "- formuliere 8er-Potenzen in 2er-Potenzen um, \n"
<< " um so etwas wie eine Binaerdarstellung zu erreichen\n"
<< "- A = 2^0, B = 2^2, C = 2^3, D = 2^5, E = 2^6, ...\n"
<< "- einzelne 2er-Potenzen fehlen: 2^1, 2^4, 2^7, 2^10., ...\n"
<< "- also bis zu dreimal 2^0, 2^3, 2^6, 2^9, ... noetig, \n"
<< " um fehlende Potenzen zu ersetzen\n";
}
calculate() { // Lösungsansatz: siehe intro()
int i; // Zähler in den for-Schleifen
char roman[50]; // Feld, das Ausgabe enthält, 50 Buchstaben sollten genug sein
int pos = 0; // Position im Ausgabe-Feld
char letter = 65; // A ist 65, B 66, C 67...
cout << "\nBitte geben Sie eine natuerliche Zahl ein: ";
int number;
cin >> number;
int n = number % 4; // Rest bei Division durch 4, 0 für Zahl durch 4 teilbar, sonst 1 bis 3
for (i = 0; i < n; i++) { // A hinzufügen, mindestens keinmal, höchstens dreimal
roman[pos] = letter;
pos++;}
number = number / 4; // letzte beide Binärstellen wegwerfen
while (number > 0) { // solange mehr Buchstaben nötig
letter++; // nächster Buchstabe
if (number % 2 == 1) { // number ist ungerade, also braucht man ein B, D, F, ...
roman[pos] = letter;
pos++;}
letter++;
number = number / 2; // letzte Binärstelle wegwerfen
n = number % 4; // Anzahl der nötigen C, E, G, ...
for (i = 0; i < n; i++) {
roman[pos] = letter;
pos++;}
number = number / 4;} // wieder zwei Binärstellen wegwerfen
pos--; // steht eins zu weit, da von while-Schleife immer eins weiter gesetzt wird
cout << "\nErgebnis: ";
while (pos > -1) { // Ausgabe rückwärts, solange noch Zeichen da
cout << roman[pos];
pos--;}
}
|
This post has been edited 1 times, last edit by "Sheep" (Jun 2nd 2006, 5:12pm)
Quoted
Original von kOa_Borgg
Warum sollte einem VC++ nicht zusagen?? Ist imho das beste was es gibt. Im Zusammenhang mit Visual Assist (www.wholetomato.com) ist das unschlagbar. Weder unter Windows noch unter Linux gibt es eine kompfortablere IDE.
Quoted
Du bist als Student übrigens in der Lage MS-VisualStudio-Standart legal kostenlos zu erwerben. www.msdnaa.de . Frag mal bei deiner Uni nach, ob sie an diesem Programm teilnimmt.
Quoted
Original von Sheep
Quoted
Original von kOa_Borgg
Warum sollte einem VC++ nicht zusagen?? Ist imho das beste was es gibt. Im Zusammenhang mit Visual Assist (www.wholetomato.com) ist das unschlagbar. Weder unter Windows noch unter Linux gibt es eine kompfortablere IDE.
Auf den ersten Blick scheint dieser Visual Assist ähnlich mächtig wie die Umgebung von Eclipse zu sein - und Eclipse hat für mich den Vorteil, dass ich es gewohnt bin.
This post has been edited 1 times, last edit by "kOa_Borgg" (Jun 6th 2006, 8:52pm)
Quoted
Original von kOa_Borgg
2 Dinge die mir bei Eclipse fehlen:
1)
Wenn ich am Tippen einer Variablen oder Funktion bin muss ich die bei VC+VA nicht ausschreiben. Der bietet mir schon nach den ersten 2 Buchstaben ein Dropdown an. Das _kann_ ich annehmen oder tippe einfach weiter. Hab ich bei Eclipse nicht bemerkt/gefunden. Da kommt nur (und das mit gefühlt längerer Verzögerung - unter Linux KDE) ein dropdown auf members von "fertig getippten" Objekten. Auch die Ersetzung "->" für "." bei Pointern fehlt mir.
2)
Syntax Highlighting für Funktionen und eigene Klassen.
Hab ich das nur übersehen oder gibts das wirklich nicht?
. Hab ich auch bei KDevelop und anderen Editoren unter Linux nie gefunden. Bei Kate ging es mal, aber da musste man sehr umständlich in den Config files rum pfuschen. ...Linux halt.