Hallo!
Bin neu hier und komm auch gleich mit nem Problem daher.
Also ich mach seit gut 6 Wochen C und soll jetzt son Programm machen und komm einfach nicht damit zurecht. Wär schön wenn mir dabei einer ein wenig unter die Arme greifen könnte.
Also das Programm soll folgendermaßen aussehen.
1. Der User soll gefragt werden, ob er selber Zahlen eingeben möchte oder, ob er ne Batchkonvertierung machen möchte (batch mode ist mir im Moment nicht so wichtig, sollte aber im Endprogramm drin sein).
2. Das Programm soll Zahlen zwischen 1 und 4999 umwandeln können.
3. Das Programm soll die Subtraktionsregel befolgen
4. Größtmögliche röm. Zahl ist M = 1000
Zum Batchmode: Wenn Batchmode gewählt wird, soll das Programm nach dem Dateinamen der *.txt Datei fragen, in der sich die röm. Zahlen befinden und dann nach einem Dateinamen für die *.txt Datei in der sich die konvertierten Zahlen befinden.
Wie gesagt, ich hab grad erst mit C angefangen und komm damit nicht wirklich zurecht. Mir gehts im Moment erstmal darum, daß ich die Konvertierung von röm. in arab. Zahlen hinbekomme. Das mit dem batchen kann man hinterher immer noch angehen.
Ich hab mir mal folgenden Code von lagalopex ausm Programmieraufgaben Subforum genommen und editiert. Bekomm dann aber zwei Fehlermeldungen.
Original von legalopex:
Mein abgeänderter Code:
und die Fehlermeldung aus Visual C++ 2005:
Aja, und wie mach ich hier Spoiler bzw. Hide Tags? funktioniert nicht :/
Bin neu hier und komm auch gleich mit nem Problem daher.
Also ich mach seit gut 6 Wochen C und soll jetzt son Programm machen und komm einfach nicht damit zurecht. Wär schön wenn mir dabei einer ein wenig unter die Arme greifen könnte.
Also das Programm soll folgendermaßen aussehen.
1. Der User soll gefragt werden, ob er selber Zahlen eingeben möchte oder, ob er ne Batchkonvertierung machen möchte (batch mode ist mir im Moment nicht so wichtig, sollte aber im Endprogramm drin sein).
2. Das Programm soll Zahlen zwischen 1 und 4999 umwandeln können.
3. Das Programm soll die Subtraktionsregel befolgen
4. Größtmögliche röm. Zahl ist M = 1000
Zum Batchmode: Wenn Batchmode gewählt wird, soll das Programm nach dem Dateinamen der *.txt Datei fragen, in der sich die röm. Zahlen befinden und dann nach einem Dateinamen für die *.txt Datei in der sich die konvertierten Zahlen befinden.
Wie gesagt, ich hab grad erst mit C angefangen und komm damit nicht wirklich zurecht. Mir gehts im Moment erstmal darum, daß ich die Konvertierung von röm. in arab. Zahlen hinbekomme. Das mit dem batchen kann man hinterher immer noch angehen.
Ich hab mir mal folgenden Code von lagalopex ausm Programmieraufgaben Subforum genommen und editiert. Bekomm dann aber zwei Fehlermeldungen.
Original von legalopex:
Code:
#include <iostream>
using namespace std;
const int roemi[] = {5000, 4000, 1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1};
const char roemc[][3]={"A", "MA", "M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"};
const int arraynum = 15;
const int maxnum = 8888;
int main(int argc, char *argv[])
{
int tmp;
cout << "arabisch => roemisch" << endl;
cout << "unter Anwendung der \"Subtraktionsregel\" (1..." << maxnum << ")" << endl;
for(;;) {
cout << "Zahl: " << flush;
cin >> tmp;
if(!tmp)
break;
if(tmp < 1 || tmp > maxnum)
cout << "Ungueltige Zahl" << endl;
else {
cout << "roemisch: ";
for(int i = 0 ; i < arraynum ; i++) {
while(tmp >= roemi[i]) {
tmp -= roemi[i];
cout << roemc[i];
}
}
cout << endl;
}
}
return(0);
}
Mein abgeänderter Code:
Code:
#include <iostream>
using namespace std;
const char romc[] = ("M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I");
const int romi[] = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1};
const int arraynum = 13;
const int maxnum = 4999;
int main(int argc, char *argv[])
{
int tmp;
cout << "Roman to Arabic Number Converter" << endl;
cout << "using the substraction rule" << endl;
for(;;) {
cout << "Please enter a Roman Number:" << flush;
cin >> tmp;
if(!tmp)
break;
if(tmp < 1 || tmp > maxnum)
cout << "Illegal input!" << endl;
cout << "Please enter a number that lies between 1 and 4999." << endl;
else {
cout << "Arabic Number:";
for(int i = 0 ; i < arraynum ; i++) {
while(tmp >= romc[i]) {
tmp -= romc[i];
cout << romi[i];
}
}
cout << endl;
}
}
return(0);
}
und die Fehlermeldung aus Visual C++ 2005:
Code:
------ Build started: Project: miniproject1, Configuration: Debug Win32 ------
Compiling...
mpr1.cpp
.\mpr1.cpp(5) : error C2440: 'initializing' : cannot convert from 'const char *' to 'const char []'
There are no conversions to array types, although there are conversions to references or pointers to arrays
.\mpr1.cpp(23) : error C2181: illegal else without matching if
Build log was saved at "file://g:\My Projects\miniproject1\miniproject1\Debug\BuildLog.htm"
miniproject1 - 2 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
Aja, und wie mach ich hier Spoiler bzw. Hide Tags? funktioniert nicht :/