Aaaalso... gestern und heute ein turbulenter Tag aber ich habe Neuigkeiten.
Der Compiler an der Uni spuckte immer irgendwelche Warnings aus, die wir immer ignorierten, weil alles lief (irgendwas wurde durch eine andere Bib ersetzt oder irgend sowas in die Richtung) Naja, egal... Dann lief in einem neuen Programm nichteinmal ein simples
int main(){
cout<<"Ich bin der Ausgabetext\n";
return 0;
}
Dann lief nichteinmal der 1:1 kopierte Code, der vorher aber lief... Verrückt³... Ok, den Krempel gepackt, und mir per E-Mail gesendet und versucht dort zu kompilieren. Ich habe vermutlich eine neuere Compilerversion oder weiß der Geier, jedenfalls erhielt ich eine Warning, dass cout nicht definiert ist. Ok, dann habe ich den Header so angepasst, wie Gargamel es vorgeschlagen hatte und siehe da, ich erhalte meine gewünschte Ausgabe.
Als ich dies einer Komilitonin sagte meinte sie auch, dass sie die 'gleichen' Fehler hatte, und jedesmal std:: vor cout und cin hat schreiben müssen... passt auf jeden Fall zu meinem Headerproblem.
Naja langer Rede kurzer Sinn: Ich habe mein Problem annehmbar lösen können:
Da die Modulo-Operation leider nicht für floatzahlen geht kam mir ein cast in den Sinn. Ich lese die Zahl als float ein, und bilde die Different aus der Zahl und der gecasteten Zahl. Ist die Differenz größer als 0, wird abgebrochen.
Nun der komplette Quellcode:
#include <iostream>
using namespace std;
int ggt( int m, int n){
if (n == 0){
return m;
}
else{
ggt(n,m%n);
}
return m;
}
int kgv(int m, int n){
return( m*n/ggt(m,n) );
}
int main(){
float n=0.0;
float m=0.0;
cout<<"Bitte geben Sie eine natuerliche Zahl ein:\n";
cin>>n; //Einlesen von n
if(n-(int)n != 0){ //von n wird die gecastete Zahl n abgezogen
cout<<"Die eingegebene Zahl ist nicht aus dem natuerlichen Zahlenbereich\n"; //wenn die Differenz groesser als 0 wird abgebrochen
}
else{ //und ansonsten die zweite Zahl eingelesen
cout<<"Bitte geben Sie eine weitere natuerliche Zahl ein:\n";
cin>>m; //Einlesen von m
if(m-(int)m == 0){ //Selbiger Test wie fuer n, desmal aber auf m
cout<<"Das kgV lautet: "<<kgv(m,n)<<endl; //Wenn Test erfolgreich ist, Ergebnisse ausgeben
cout<<"Der ggT lautet: "<<ggt(m,n)<<endl;
}
else{
cout<<"Die eingegebene Zahl ist nicht aus dem natuerlichen Zahlenbereich\n";//Ansonsten Fehlermeldung ausspucken
}
}
return 0;
}
Dummerweise erhalte ich bei der Eingabe eines Chars noch die Ausgabe, dass ich die zweite Zahl eingeben soll. Zwar wird abgebrochen aber es ist ein Schönheitsfehler. Weiß einer dafür einen Rat?