Frage zu einer Eingabefolge
-
Da sollte false hin, das hast du schon korrekt erkannt. Wie sieht das Programm bei dir genau aus?
-
Hier:
#include<iostream>
using namespace std;int main()
{
bool monoton_steigend = false;
bool monoton_fallend = true;
int alte_zahl;
int neue_zahl;cout<<"Bitte geben Sie eine Zahl ein: ";
cin>>alte_zahl;while (alte_zahl !=0)
{
cout<<"Bitte geben Sie eine Zahl ein: ";
cin>>neue_zahl;
if(neue_zahl<alte_zahl) monoton_fallend =true;
if(neue_zahl>alte_zahl) monoton_steigend =true;
alte_zahl=neue_zahl;
}
if(monoton_fallend ==true && monoton_steigend ==true){ cout<<"Folge ist ungeordnet";
return 0;
}
if(monoton_fallend==true){ cout<<"Folge ist monoton fallend !";
return 0;
}
if(monoton_steigend==true){ cout<<"Folge ist monoton steigend !";
return 0;
}
}
-
1. Du hast den Fall, dass die Folge beides ist rausgenommen. 1 1 1 1 1 ist zum Beispiel monoton fallend und monoton steigend.
2. Das Problem ist deine Abbruchbedingung. Wenn du eine 0 eingibst so brichst du die Schleife nicht sofort ab, sondern verarbeitest die 0 zuerst. War die Folge vorher monoton steigend, so wird sie ungeordnet. Deshalb sollte nach der Eingabe der Zahl eine Abfrage, ob es die 0 ist. Steht in der Aufgabenstellung wie die Zahlen eingegeben werden?
-
Nein, das hier ist die komplette Aufgabenstellung :
Schreiben und testen Sie ein Programm, das eine Folge von ganzen Zahlen einliest, bis eine 0 eingegeben wird und ausgibt, ob die eingegebene Zahlenfolge monoton steigend, monoton fallend oder ungeordnet war. Dazu genügt es, das Monotonieverhalten der bisher eingegebenen Folge zu speichern und bei Eingabe jeder neuen Zahl zu aktualisieren.. Speichern Sie die eingegebenen Zahlen nicht in einem Array.
-
Ok, dann hast du jetzt eine funktionierende Variante?
-
Meine Güte hier hat sich über den Tag ja richtig was getan!
@chiro:
Nochwas kleines: Ab jetz code-tags benutzen. Siehe dazu eventuell auch hier.Caipi
-
Nein
Wir haben in der Vorlesung gesagt bekommen, dass, bei der Bedingung einer while-Schleife, dies Abgebrochen wird, wenn der Wert "erreicht" ist.
Da war nichts davon zu hören, dass sie Eingabe dann noch verarbeitet wird.Ich muss dem Programm nun ""nur"" noch erzählen, dass bei Eingabe einer 0 sofort abgebrochen wird, ohne das die 0 noch verarbeitet wird.
Hmmm....
-
while (alte_zahl !=0) { cout<<"Bitte geben Sie eine Zahl ein: "; cin>>neue_zahl; if (neue_zahl == 0) break; if(neue_zahl<alte_zahl) monoton_fallend =true; if(neue_zahl>alte_zahl) monoton_steigend =true; alte_zahl=neue_zahl; }