CPP102 Einsende

Algorithmus, Baumdurchlauf, Compiler, Interpreter...; Cobol, Pascal, C/C++, Java & Co.
Antworten
Schmaler79
Mitglied
Mitglied
Beiträge: 21
Registriert: 15.03.10 19:03

Hallo Kollegen,

hänge bei der Geldwechselaufgabe.

anbei meine Schleife für die Stueckelung:

for (i=0; i<6; i++)
{
wert=hilf;
hilf=wert%aufteilung;
stueck=(wert-hilf)/aufteilung;
}
stimmt die so?
Wenn ich compiliere kommt 0 Fehler heraus, aber das Ergebnis ist total falsch: Bsp.:0002356FF045655 usw.
Benutzeravatar
Chandini
Forums-Scout
Forums-Scout
Beiträge: 314
Registriert: 03.03.08 15:32
Wohnort: Feucht

Hallo!

Also, die Schleife an sich funktioniert. Aber nur, wenn du am Anfang die Variable hilf mit dem gleichen Wert initialisierst wie die Variable wert. Sieht so aus, als würde da die Adresse der Variablen ausgegeben, aber nicht die Variable selbst. Wie sieht denn der restliche Code aus?

Um zu sehen, ob die Schleife richtig ausgibt, kannst du auch einfach folgendes einfügen:

Code: Alles auswählen

cout << "wert " << wert << " hilf " << hilf << " aufteilung " << aufteilung[i] << " stueck " << stueck[i] << endl;
Dann siehst du immer, was bei welchem Durchlauf rauskommt.


Grüße
Ines
Andere zu beherrschen, erfordert Kraft. Sich selbst zu beherrschen, erfordert Stärke.
Schmaler79
Mitglied
Mitglied
Beiträge: 21
Registriert: 15.03.10 19:03

Hallo Ines,

der restliche Code sieht so aus:

#include <iostream.h>
int main()
{

int wert, hilf, i;

int aufteilung[6]={50,20,10,5,2,1}; // Array Werte zuweisen
int stueck[6]={0};// Array stueckelung unbekannt

cout<<"Gebe einen Wert ein:";
cin>>wert;

if(wert>=100)
cout<<"\nWert ist zu gross!";

for (i=0; i<=6; ++i)// i beginnt bei 0 darf nicht größer als 6 sein Bezug auf Aarray aufteilung
{
wert=hilf;
hilf=wert%aufteilung;
stueck=(wert-hilf)/aufteilung;
}
cout << "wert " << wert << " hilf " << hilf << " aufteilung " << aufteilung << " stueck " << stueck << endl;
return 0;
}
Benutzeravatar
Chandini
Forums-Scout
Forums-Scout
Beiträge: 314
Registriert: 03.03.08 15:32
Wohnort: Feucht

Hallo

Du musst der Variable hilf den Wert schon vor der FOR Schleife zuweisen. hilf bekommt keinen Wert zugewiesen, das heißt, es könnte jeder beliebige Wert drinstecken. Und damit weißt du der Variable wert in der ersten Zeile der Schleife diesen Wert zu.

Du brauchst vor der Schleife die Zeile hilf=wert;
Außerdem durchläufst du die Schleife einmal zu oft. i kann maximal 6 Werte annehmen. Du startest mit 0, gehst allerdings bis i <= 6. Damit wärst du bei sieben Werten. Muss also heißen i<6.

Wenn du jetzt noch die Ausgabe in die FOR Schleife packst, dann siehst du für jeden Durchgang, was rauskommt.

Deine Abfrage, ob der eingegebene Wert größer 100 ist, macht so auch wenig Sinn. Du bekommst zwar die Meldung, dass der Wert zu groß ist, aber das Programm läuft trotzdem weiter. Du müsstest den nachfolgenden Teil in den ELSE Teil von IF packen.

Code: Alles auswählen

#include <iostream>
using namespace std;

int main()
{

int wert, hilf, i;

int aufteilung[6]={50,20,10,5,2,1}; // Array Werte zuweisen
int stueck[6]={0};// Array stueckelung unbekannt

cout<<"Gebe einen Wert ein:";
cin>>wert;
hilf=wert; //hilf bekommt den inhalt von wert zugewiesen

if(wert>=100){ //funktioniert nur mit schleife im else teil, sonst wird beides ausgeführt
	cout<<"\nWert ist zu gross!"<<endl; }
else {
	
	for (i=0; i<6; ++i)// i darf maximal 6 werte annehmen. i=6 wäre zuviel!
	{
	wert=hilf; //ohne die zeile hilf=wert würdest du hier den inhalt von wert überschreiben und hättest damit irgendwas in der variable stehen
	hilf=wert%aufteilung[i];
	stueck[i]=(wert-hilf)/aufteilung[i];
	cout << "wert " << wert << " hilf " << hilf << " aufteilung " << aufteilung[i] << " stueck " << stueck[i] << endl; //ausgabe in der schleife
	}
}

system("pause");
return 0;
}

Grüße
Ines
Andere zu beherrschen, erfordert Kraft. Sich selbst zu beherrschen, erfordert Stärke.
Schmaler79
Mitglied
Mitglied
Beiträge: 21
Registriert: 15.03.10 19:03

Hallo Ines,

vielen Dank für Deine Hilfe!

Gruß

Sven
Antworten