Zum Inhalt springen

C++ Probleme bei Aufgabe


tOm´

Empfohlene Beiträge

Hallo,

Ich muss eine Aufgabe bearbeiten und habe damit sehr große Probleme.

Wenn ich mir die Lösung ansehe, versteh ich warum das Programm so geschrieben wurde und verstehe auch die Hintergründe. Sobald ich jedoch die Aufgabenstellung vor mir habe ohne Lösung bin ich irgendwie hilflos und komm nicht damit zurecht.

Ich möchte euch mal eine Beispielaufgabe zeigen:

Quellcode (C++-Programm) im Text-Format (Bitte den Quellcode nicht auf mehrere Dateien verteilen!)

• und eine ausführbare Datei (.exe).

Sie haben einen 10-€-Schein und wollen für sich und Ihren Freund je ein Eis kaufen.

Es gibt folgende Sorten:

• Capri: 1,50 €

• Nogger: 1,80 €

• Cornetto: 2,50 €

Setzen Sie den Eiskauf in ein nach objektorientierten Grundsätzen aufgebautes C++-Programm um. Es muss mindestens eine Klasse enthalten sein.

Zunächst wird der Kunde gefragt, welches Eis er wünscht. Dann wird der Gesamtpreis und die Höhe des Wechselgeldes berechnet und in Euro und Cent auf dem Bildschirm ausgegeben.

_______________________________________________

Ich weiss die Aufabe ist eigentlich sehr leicht.

Jedoch befasse ich mich erst seit 2 Wochen mit C++ und muss diese Aufgabe bis nächste Woche bearbeitet haben.

Allein die richtigen Attribute zu bestimmen ist schwierig für mich.

Könntet ihr mir einen Lösungsvorschlag geben?

Ich will es mir nicht leicht machen ich haber schon viele Stunden investiert aber bekomm es einfach nicht auf die Reihe.

Nur würde mir ein grober Aufbau dabei Helfen meine eigenen Fehler zu sehen.

Vorstellen würde ich es mir folgendermaßen:

"Willkommen bei Toms Eiswaren"

"Wir haben die Sorten Cornetto, Nogger und Capri."

"Welches Eis möchten kaufen?"

So dann fängt mein Problem schon an.

Wie leg ich fest, dass die Eingabe (1) zb Cornetto bedeutet und vor allem wie lasse ich das Programm wissen, dass Cornetto einen Betrag von 2.50€ entspricht?!?!

Reicht es eine Variable zu erstellen "Cornetto" und diese mit 2.50 zu belegen. Aber wie erkennt er dann, dass die Eingabe (1) Cornetto bedeutet?

Wäre wirklich sehr sehr dankbar für jegliche Hilfe und Lösungsvorschläge!

mfg

tOm´

Link zu diesem Kommentar
Auf anderen Seiten teilen

Könntet ihr mir einen Lösungsvorschlag geben?

Eine Klasse CIce schreiben, die als Member einen double-Wert für den Preis hat.

Evtl. noch einen Namen.

Wie leg ich fest, dass die Eingabe (1) zb Cornetto bedeutet und vor allem wie lasse ich das Programm wissen, dass Cornetto einen Betrag von 2.50€ entspricht?!?!

1. C++ Tutorial - if und else

2. s.o.

Link zu diesem Kommentar
Auf anderen Seiten teilen

hallo, Erstmal ein paar sachen die mich sehr Wundern. Du hast mit c++ erst vor 2 wochen angefangen und ihr habt jetzt schon oop? Etwas kann da meiner meinung nach nicht stimmen.

2. wir sind ein hilfeboard bitte deine Ansätze des Quellcodes in einem Dafür vorgesehenen Codeblock einfügen Bsp:


Code Block

Zu deinen Problemen gibt es mehrere Möglichkeiten. Entweder du legst fest Das er z.b. für Capri die 1 eingeben soll oder er soll den Namen Eingeben. 1. Methode wäre einfacher für die Benutzung. Dann willst du dies mit if else abfrage oder mit Switch Case blöcken machen. Da du erst 2 wochen dabei bist würde ich dir if else empfehlen. Damit er mehrere Sorten gleichzeitig kaufen kann würde ich mir While schleifen angucken. Z.b. so:

Vorab:

int var;

double PreisGesamt = 0;

double Geld = 10.00;

double Capri = 1.50;

double Nogger = 1.80;

double Cornetto = 2.50;

1. Frage welches Eis

Auswahlmöglichkeit (1) Capri (2) Nogger (3) Cornetto

2. Abfrage wert in einer Var. speichern.

3. If else abfrage beginnen.

wenn 1 dann in block eins gehen

Bsp: if( var == 1 ) { Dann Ausrechnen}

4. Frage ob er noch mehr Eis kaufen möchte. Wenn ja wiederholen der schritte 1-4 bis diese Abfrage Negativ ausfällt

5. Ausgabe des Preises, Des Restgeldes

6. Programmende

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

ich danke schonma für die zahlreichen Antworten.

Laut Aufgabenstellung würde ich auch sagen es handelt sich fix nur um 2 Personen die Eis kaufen und ich muss nicht zwanghaft eine Schleife einfügen für mehrere Personen die evtl. Eis kaufen wollen.

Ich werde in den nächsten Tagen versuchen so weit wie möglich zu kommen und mich dann nochmal hier melden wie es mir dabei erging :)

Vielen Dank

Link zu diesem Kommentar
Auf anderen Seiten teilen

Zunächst wird der Kunde gefragt, welches Eis er wünscht.

Das ist die Einzahl bei mir und es steht nirgendswo was von "Freunde kriegen auch Eis".

So sehr ich zwar glaube, dass den Aufgabenstelle hier eine Schleife wünschenswert war, würde ich mich dennoch an die Aufgabenstellung halten.:floet:

[Editerle]

ahh, ok die Zeile

Sie haben einen 10-€-Schein und wollen für sich und Ihren Freund je ein Eis kaufen.

grad nochmal gesehen.

Selbst da würd ich aber keine Schleife machen, sondern einfach den Kauf zweimal ansetzen.

Bearbeitet von TDM
Link zu diesem Kommentar
Auf anderen Seiten teilen

#include<iostream>

#include <string>

using namespace std; 


class Eis

{public:

        float Preis;

        float Wechselgeld;




void start()

{

cout << "Willkommen bei Toms Eiswaren" << endl;

cout << "Wir haben die Sorten Capri, Nogger und Cornetto zur Auswahl" << endl;

cout << "Welches Eis möchten Sie kaufen?" << endl;


}

};


void benutzereingabe1()

{

cout << "Drücken Sie für Capri die (1), für Nogger die (2) und für Cornetto die (3)." << endl;

cin >> wahl1;

        if(wahl1==1)

        {

            cout<<"Ok Sie haben sich für Capri entschieden"<<endl;

        }

        if(wahl1==2)

        {

            cout<<"Ok Sie haben sich für Nogger entschieden"<<endl;

        }

        if (wahl1==3)

        {

            cout<<"Ok Sie haben sich für Cornetto entschieden"<<endl;

        }

}


void benutzereingabe2()

{

cout << "Welches Eis möchte ihr Freund?" << endl;

cin >> wahl2;

        if(wahl2==1)

        {

            cout<<"Ihr Freund möchte also Capri"<<endl;

        }

        if(wahl2==2)

        {

            cout<<"Ihr Freund möchte also Nogger"<<endl;

        }

        if (wahl2==3)

        {

            cout<<"Ihr Freund möchte also Cornetto"<<endl;

        }

};





int main (){


    Eis Capri;

    Capri.Preis = 1.5


    Eis Nogger;

    Nogger.Preis = 1.8


    Eis Cornetto;

    Cornetto.Preis = 2.5


start();    

benutzereingabe1();

benutzereingabe2();





system ("PAUSE");

return 0;

}

Ich habe es jetzt mal bis zur Abfrage gemacht wer welches Eis will.

Jedoch funktioniert es net und ich weiss auch nicht, ob es grundlegend richtig wäre.

Sollte es grundlegend richtig sein, wie würde ich bei der Methode fürs Wechselgeld fortfahren?!

Wieder mit "IF"?

Also wenn "benutzereingabe1" den Wert "1" besitzt dann 10 minus den jeweiligen Wert fürs Eis oder wäre eine andere Lösung sinnvoller?

Danke euch

PS: Mir ist klar, dass auch die cout-Texte an sich noch abgeändert gehören aber ich möchte das Programm ma grundsätzlich zum laufen bekommen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

oder wäre eine andere Lösung sinnvoller?

Ich habs mir mal als Frühmorgensaufgabe gesetzt:

CIce.cpp:

#include "stdafx.h"

#include "Ice.h"


using namespace std;


void printGreeting();

const char* getUserRequest();

const char* getFriendRequest();

const CIce& chooseIce(CIce& ice1, CIce& ice2, CIce& ice3);


int main(int argc, char* argv[])

{

	CIce capri("Capri", 1.5);

	CIce nogger("Nogger", 1.8);

	CIce cornetto("Cornetto", 2.5);


	double budget = 10.0;


	printGreeting();

	cout << getUserRequest() << endl;

	CIce choosenIce = chooseIce(capri, nogger, cornetto);

	budget -= choosenIce.getPrice();

	cout << getFriendRequest() << endl;

	choosenIce = chooseIce(capri, nogger, cornetto);

	budget -= choosenIce.getPrice();


	cout << "Restgeld:\t" << budget;

	cin.get();


	return 0;

}


void printGreeting()

{

	cout << "Tach." << endl;

}


const char* getUserRequest()

{

	return "Was willste?";

}


const char* getFriendRequest()

{

	return "Was will dein Freund?";

}


const CIce& chooseIce(CIce& ice1, CIce& ice2, CIce& ice3)

{

	cout << "1 = " << ice1.getName() << endl;

	cout << "2 = " << ice2.getName() << endl;

	cout << "3 = " << ice3.getName() << endl;

	int buffer = 0;

	cin >> buffer;

	switch(buffer)

	{

	case 1:

		return ice1;

	case 2:

		return ice2;

	case 3:

		return ice3;

	}

}
Ice.h
#pragma once


#include "stdafx.h"


class CIce

{

private:

	std::string m_name;

	double m_price;

public:

	CIce(std::string name, double price);

	virtual ~CIce(void);


	const std::string& getName();

	double getPrice();

};

Ice.cpp:
#include "StdAfx.h"

#include "Ice.h"


CIce::CIce(std::string name, double price)

{

	this -> m_name = name;

	this -> m_price = price;

}


CIce::~CIce(void)

{

}


const std::string& CIce::getName()

{

	return m_name;

}


double CIce::getPrice()

{

	return m_price;

}
stdafx.h:
#pragma once


#include <iostream>

#include <string>

Kannst dir ja ein, zwei Sachen abgucken.

Sachen wie Benutzerfehleingaben usw. hab ich erstmal nicht berücksichtigt... :floet:

Link zu diesem Kommentar
Auf anderen Seiten teilen

#include<iostream>

#include <string>

using namespace std; 

#include <windows.h>




float summe_rechnung;         

float budget=10;

float preis_capri=1.50;

float preis_nogger=1.80;

float preis_cornetto=2.50;

float wechselgeld;


void start()

{

cout <<endl << "W I L L K O M M E N    B E I    T O M S    E I S W A R E N  !" << endl << endl;

Sleep(1500);

cout << "Wir haben die Sorten Capri, Nogger und Cornetto zur Auswahl." << endl;

cout << "Welches Eis moechten Sie kaufen?" << endl;

}


void benutzereingabe1()

{

cout << "Druecken Sie fuer Capri die (1), fuer Nogger die (2) und fuer Cornetto die (3)." << endl;

float wahl1;

cin >> wahl1;

        if(wahl1==1)

        {

            cout<<"Ok Sie haben sich fuer Capri entschieden."<<endl;

            summe_rechnung=preis_capri;


        }

        if(wahl1==2)

        {

            cout<<"Ok Sie haben sich fuer Nogger entschieden."<<endl;

            summe_rechnung=preis_nogger;

        }

        if (wahl1==3)

        {

            cout<<"Ok Sie haben sich fuer Cornetto entschieden."<<endl;

            summe_rechnung=preis_cornetto;

        }

}


void benutzereingabe2()

{

Sleep(1000);

cout <<endl << "Welches Eis moechte ihr Freund?" << endl;

float wahl2;

cin >> wahl2;

        if(wahl2==1)

        {

            cout<<"Ihr Freund moechte also Capri."<<endl<<endl;

            summe_rechnung=summe_rechnung+preis_capri;

        }

        if(wahl2==2)

        {

            cout<<"Ihr Freund moechte also Nogger."<<endl<<endl;

            summe_rechnung=summe_rechnung+preis_nogger;

        }

        if (wahl2==3)

        {

            cout<<"Ihr Freund moechte also Cornetto."<<endl<<endl;

            summe_rechnung=summe_rechnung+preis_cornetto;

        }

}





void summe_zahlung()

{

Sleep(500);

cout << "Das macht dann zusammen " <<summe_rechnung << " Euro bitte." << endl;

Sleep(1000);

cout << "Vielen Dank für die 10.00 Euro" << endl<<endl;

}


void witz()

{

Sleep(1500);

cout << "Kann ich Ihnen sonst noch irgendwie behilflich sein?" << endl;

cout << "JA (1)     NEIN (2)"<<endl;

float auswahl_witz;

cin >> auswahl_witz;

        if(auswahl_witz==1)

        {

            cout<<"Oh natuerlich Ihr Wechselgeld. Bitte entschuldigen Sie mich"<<endl;

        }

        if(auswahl_witz==2)

        {

            cout<<"Dann haetten Sie fast Ihr Wechselgeld vergessen ;)"<<endl<<endl;

        }

}        







void  wechselgeld_anzeigen()

{

wechselgeld=budget-summe_rechnung;

cout << "Hier Ihr Wechselgeld ueber " << wechselgeld << " Euro."<< endl;

}





int main (){



start();

benutzereingabe1();

benutzereingabe2();

summe_zahlung();

witz();

wechselgeld_anzeigen();



system ("PAUSE");

return 0;

}

hoi nochma.

zuerst: Vielen Dank für deinen Lösungsvorschlag ich weiss es sehr zu schätzen, dass du dafür deine Zeit geopfert hast. Jedoch muss ich sagen das es mir wenig gebracht hab, da ich deine Lösung nicht nachvollziehen kann :)

Ich habe mich selbst nochmal hingesetzt und jetzt ein lauffähiges Programm geschaffen.

Es macht das, was in der Aufgabenstellung verlangt wird!

EINS JEDOCH NICHT!

--> Es besitzt keine Klasse und ich weiss nicht was ich hier als Klasse definieren könnte bzw wie ich diese einbauen könnte.

Gibt es eine Möglichkeit diese noch einzubauen und es umzuschreiben ohne viel Zeitaufwand?

Link zu diesem Kommentar
Auf anderen Seiten teilen

he ja das geht ohne große umstände.

Eine Klasse besteht einfach nur aus Attributen und Methoden

Um eine Klasse benutzen zu können musst du 2 dateien erzeugen eine initialiesierungsdatei und eine zum arbeiten um es verständlich auszudrücken.

eine standart Initiaisationsdatei (auch header genannt) sieht etwa so aus

#ifndef KLASSE_H

#define KLASSE_H


dann deine biblotheken


class Klassenname

{

    private:


    public:

    KOnstruktor();

    Destruktor();



};

#endif
cpp datei dazu ist genau so simpel
#include "Dateiname"


Klassenname::Konstruktor(){}


Klassenname::Destruktor(){}

Link zu diesem Kommentar
Auf anderen Seiten teilen

#include<iostream>

#include <string>

using namespace std; 

#include <windows.h>


class eis


{public:

float preis_capri=1.50;

float preis_nogger=1.80;

float preis_cornetto=2.50;

float summe_rechnung;         

int budget=10;

float wechselgeld;

int wahl1;

int wahl2;

int auswahl_witz;

};


void eis :: start()

{

cout <<endl << "W I L L K O M M E N    B E I    T O M S    E I S W A R E N  !" << endl << endl;

Sleep(1500);

cout << "Wir haben die Sorten Capri, Nogger und Cornetto zur Auswahl." << endl;

cout << "Welches Eis moechten Sie kaufen?" << endl;

}


void eis :: benutzereingabe1()

{

cout << "Druecken Sie fuer Capri die (1), fuer Nogger die (2) und fuer Cornetto die (3)." << endl;

cin >> wahl1;

        if(wahl1==1)

        {

            cout<<"Ok Sie haben sich fuer Capri entschieden."<<endl;

            summe_rechnung=preis_capri;

        }

        if(wahl1==2)

        {

            cout<<"Ok Sie haben sich fuer Nogger entschieden."<<endl;

            summe_rechnung=preis_nogger;

        }

        if (wahl1==3)

        {

            cout<<"Ok Sie haben sich fuer Cornetto entschieden."<<endl;

            summe_rechnung=preis_cornetto;

        }

}


void eis :: benutzereingabe2()

{

Sleep(1000);

cout <<endl << "Welches Eis moechte ihr Freund?" << endl;

cin >> wahl2;

        if(wahl2==1)

        {

            cout<<"Ihr Freund moechte also Capri."<<endl<<endl;

            summe_rechnung=summe_rechnung+preis_capri;

        }

        if(wahl2==2)

        {

            cout<<"Ihr Freund moechte also Nogger."<<endl<<endl;

            summe_rechnung=summe_rechnung+preis_nogger;

        }

        if (wahl2==3)

        {

            cout<<"Ihr Freund moechte also Cornetto."<<endl<<endl;

            summe_rechnung=summe_rechnung+preis_cornetto;

        }

}



void :: summe_zahlung()

{

Sleep(500);

cout << "Das macht dann zusammen " <<summe_rechnung << " Euro bitte." << endl;

Sleep(1000);

cout << "Vielen Dank fuer die 10.00 Euro" << endl<<endl;

}


void :: witz()

{

Sleep(1500);

cout << "Kann ich Ihnen sonst noch irgendwie behilflich sein?" << endl;

cout << "JA (1)     NEIN (2)"<<endl;

cin >> auswahl_witz;

        if(auswahl_witz==1)

        {

            cout<<"Oh natuerlich Ihr Wechselgeld. Bitte entschuldigen Sie mich."<<endl;

        }

        if(auswahl_witz==2)

        {

            cout<<"Dann haetten Sie fast Ihr Wechselgeld vergessen ;)"<<endl<<endl;

        }

}        



void  :: wechselgeld_anzeigen()

{

wechselgeld=budget-summe_rechnung;

cout << "Hier Ihr Wechselgeld ueber " << wechselgeld << " Euro."<< endl;

}





int main (){


eis e1;


e1. start();

e1. benutzereingabe1();

e1. benutzereingabe2();

e1. summe_zahlung();

e1. witz();

e1. wechselgeld_anzeigen();



system ("PAUSE");

return 0;

}

Ich hab jetzt nochmal versucht eine Klasse "eis" einzubauen. Jedoch sagt er mir beim copilen das nix deklariert is.

Es ist der gleiche code wie oben im vorigen post von mir nur das ich die Methoden mit "eis::Methodenname" verknüpft hab und bei int main() die verknüpfung mit quasi mit eis.Methodenname ausführe.

Aber bekomm jetzt unzählige Fehlermeldungen und ich weiss net warum.

Was mache ich falsch?

Das wäre mein wichtigsten Anliegen.

Was ich noch gerne einbauen würde wäre ein Abfrage mit wieviel Euro der Kunde bezahlen möchte. Ist auch kein Problem es einzubauen aber ein Problem bekomm ich wenn er genau den zu bezahlenden Wert eingibt.

Ich frag Ihn ja am schluss bei der Methoe "witz()" ob ich ihm noch weiterhelfen kann. Bei beiden Optionen spiele ich auf das wechselgeld an (was er ja bei genauer Bezahlung nicht bekommen würde).

Dazu würde ich ne Methode einbauen die mit If abfragt, ob budget=summe_rechnung ist.

wenn nein dann soll der witz() eben ausgeführt werden (so wie es jetzt auch ist).

Wenn ja möchte ich die methode "witz()" überspringen. Wie kann ich am besten festlegen?

Am wichtigsten ist mir aber der Einbau der Klasse eis. Auf die Eingabe des budget kann ich notfalls auch verzichten ist ja auch nicht unbedingt gefordert.

Vielen Dank

Link zu diesem Kommentar
Auf anderen Seiten teilen

Jedoch sagt er mir beim copilen das nix deklariert is.

Es ist der gleiche code wie oben im vorigen post von mir nur das ich die Methoden mit "eis::Methodenname" verknüpft hab und bei int main() die verknüpfung mit quasi mit eis.Methodenname ausführe.

Die Klassendeklaration ist ein Bauplan.


class eis


{public:

float preis_capri=1.50;

float preis_nogger=1.80;

float preis_cornetto=2.50;

float summe_rechnung;         

int budget=10;

float wechselgeld;

int wahl1;

int wahl2;

int auswahl_witz;

};

Wo sind hier die Methoden?

Link zu diesem Kommentar
Auf anderen Seiten teilen

hab die falsche datei kopiert ^^

#include<iostream>

#include <string>

using namespace std; 

#include <windows.h>


class eis


{

      private:

float preis_capri=1.50;

float preis_nogger=1.80;

float preis_cornetto=2.50;

float summe_rechnung;         

int budget=10;

float wechselgeld;

int wahl1;

int wahl2;

int auswahl_witz;


    public:

void start();

void benutzereingabe1();

void benutzereingabe2();

void summe_zahlung();

void witz();

void wechselgeld_anzeigen();

};


void eis :: start()

{

cout <<endl << "W I L L K O M M E N    B E I    T O M S    E I S W A R E N  !" << endl << endl;

Sleep(1500);

cout << "Wir haben die Sorten Capri, Nogger und Cornetto zur Auswahl." << endl;

cout << "Welches Eis moechten Sie kaufen?" << endl;

}


void eis :: benutzereingabe1()

{

cout << "Druecken Sie fuer Capri die (1), fuer Nogger die (2) und fuer Cornetto die (3)." << endl;

cin >> wahl1;

        if(wahl1==1)

        {

            cout<<"Ok Sie haben sich fuer Capri entschieden."<<endl;

            summe_rechnung=preis_capri;

        }

        if(wahl1==2)

        {

            cout<<"Ok Sie haben sich fuer Nogger entschieden."<<endl;

            summe_rechnung=preis_nogger;

        }

        if (wahl1==3)

        {

            cout<<"Ok Sie haben sich fuer Cornetto entschieden."<<endl;

            summe_rechnung=preis_cornetto;

        }

}


void eis :: benutzereingabe2()

{

Sleep(1000);

cout <<endl << "Welches Eis moechte ihr Freund?" << endl;

cin >> wahl2;

        if(wahl2==1)

        {

            cout<<"Ihr Freund moechte also Capri."<<endl<<endl;

            summe_rechnung=summe_rechnung+preis_capri;

        }

        if(wahl2==2)

        {

            cout<<"Ihr Freund moechte also Nogger."<<endl<<endl;

            summe_rechnung=summe_rechnung+preis_nogger;

        }

        if (wahl2==3)

        {

            cout<<"Ihr Freund moechte also Cornetto."<<endl<<endl;

            summe_rechnung=summe_rechnung+preis_cornetto;

        }

}



void eis :: summe_zahlung()

{

Sleep(500);

cout << "Das macht dann zusammen " <<summe_rechnung << " Euro bitte." << endl;

Sleep(1000);

cout << "Vielen Dank fuer die 10.00 Euro" << endl<<endl;

}


void eis :: witz()

{

Sleep(1500);

cout << "Kann ich Ihnen sonst noch irgendwie behilflich sein?" << endl;

cout << "JA (1)     NEIN (2)"<<endl;

cin >> auswahl_witz;

        if(auswahl_witz==1)

        {

            cout<<"Oh natuerlich Ihr Wechselgeld. Bitte entschuldigen Sie mich."<<endl;

        }

        if(auswahl_witz==2)

        {

            cout<<"Dann haetten Sie fast Ihr Wechselgeld vergessen ;)"<<endl<<endl;

        }

}        



void  eis :: wechselgeld_anzeigen()

{

wechselgeld=budget-summe_rechnung;

cout << "Hier Ihr Wechselgeld ueber " << wechselgeld << " Euro."<< endl;

}





int main (){


eis e1;


e1. start();

e1. benutzereingabe1();

e1. benutzereingabe2();

e1. summe_zahlung();

e1. witz();

e1. wechselgeld_anzeigen();



system ("PAUSE");

return 0;

}

So ists richtig.

Aber trotzdem hier die Fehlermeldung die ich bekomme:

10 C:\Users\tOm\Documents\löschen.cpp ISO C++ forbids initialization of member `preis_capri'

10 C:\Users\tOm\Documents\löschen.cpp making `preis_capri' static

10 C:\Users\tOm\Documents\löschen.cpp ISO C++ forbids in-class initialization of non-const static member `preis_capri'

11 C:\Users\tOm\Documents\löschen.cpp ISO C++ forbids initialization of member `preis_nogger'

11 C:\Users\tOm\Documents\löschen.cpp making `preis_nogger' static

usw usw immer das gleiche. An was liegt das?

Link zu diesem Kommentar
Auf anderen Seiten teilen

ok wenn ich so beginne:

{

      private:


float summe_rechnung;         

float wechselgeld;

int wahl1;

int wahl2;

int auswahl_witz;


    public:

void start();

void benutzereingabe1();

void benutzereingabe2();

void summe_zahlung();

void witz();

void wechselgeld_anzeigen();

};


float preis_capri=1.5;

float preis_nogger=1.8;

float preis_cornetto=2.5;

float budget=10;

funktioniert es.

Darf man also grundsätzlich in der geschweiften Klammer nach der Klasse keine fixen werte festlegen?

Bzw ises jetzt so wie ichs hab üblich oder is das eher net objektorientiert?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Bzw ises jetzt so wie ichs hab üblich oder is das eher net objektorientiert?

Nein.

Ein (1!) Eis darf in dem Zusammenhang keine Sachen wie Wechselgeld besitzen.

Da würde ja für jedes Eis einzeln das Wechselgeld gezählt werden, was du machen sollst (les ich so raus), ist, erst die Eisbestellungen aufgeben, und dann bezahlen (und Wechselgeld wieder bekommen).

Du gehst ja auch nicht mit Freunden zum Eismann "Ich hätte gern ein Noggereis.", bezahlst, bekommst Wechselgeld, lässt deinen Freund bestellen und bezahlst nochmal mit dem Wechselgeld, dass du wieder Wechselgeld hast.

Ergo:

Erst Eis1 wählen lassen.

Eis1.Preis von Budget abziehen.

Eis2 wählen lassen.

Eis2.Preis von Budget abziehen.

(An der Stelle hast du dann bezahlt)

Den Rest von Budget gibst du als Wechselgeld zurück.

Wechselgeld, die Summe der Kosten oder irgendwelche Auswahlsachen haben aber nichts im Eis verloren.

Link zu diesem Kommentar
Auf anderen Seiten teilen

also muss ich im endeffekt nur die beiden Methoden

void witz();

void wechselgeld_anzeigen();

von der Klasse Eis rausziehn und ohne Klasse defnieren?

Oder ist es nicht gern gesehen Methoden oder ohne ne Klasse zu defnieren.

Oder aber müsst ich mehr sachen umkrempeln um zu den gewünschten Objektorientieren Effekt zu kommen? Wenn das der Fall ist denk ich liegt es bei mir allein schon an den falsch gewählten Texten die ich verfasst habe oder?

Link zu diesem Kommentar
Auf anderen Seiten teilen

{

      private:


float summe_rechnung;         

float wechselgeld;

int wahl1;

int wahl2;

int auswahl_witz;


    public:

void start();

void benutzereingabe1();

void benutzereingabe2();

void summe_zahlung();

void witz();

void wechselgeld_anzeigen();

};


[COLOR="Red"]float preis_capri=1.5;

float preis_nogger=1.8;

float preis_cornetto=2.5;

float budget=10;[/COLOR]

das hier ist fölliger quatsch.

eine header ist nur zur definition da nicht zur initialiesierung von werten. das macht man in der dazugehörigen cpp also nur definieren dann sieht das so aus

header

{

      private:


float summe_rechnung;         

float wechselgeld;

int wahl1;

int wahl2;

int auswahl_witz;


float preis_capri;

float preis_nogger;

float preis_cornetto;

float budget;


    public:

void start();

void benutzereingabe1();

void benutzereingabe2();

void summe_zahlung();

void witz();

void wechselgeld_anzeigen();

};


cpp:


Konstruktor:

float preis_capri=1.5;

float preis_nogger=1.8;

float preis_cornetto=2.5;

float budget=10;

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 1 Jahr später...

Auch wenn einwenig verspätet, aber ich habe mich auch mal drangesetzt, ist eher eine einfache simple Version, aber tja nu halt 20 minuten Produkt


#include<iostream>

#include<string>


using namespace std;

class iceshop {

    public:

        iceshop();

        double get_money() const;

        void set_money( double );

        void action();

    private:

        double money;

        double capri;

        double nogger;

        double cornetto;

        int ammount;


        bool pay( int );

};

iceshop::iceshop() {

    money = 10.00;

    capri = 1.50;

    nogger = 1.80;

    cornetto = 2.50;

    ammount = 0;

    cout << "Willkommen in Lucis Eis laden!" << endl;

    cout << "Zur Zeit haben wir im Angebot: Capri für " << capri << "€, Nogger für " << nogger << "€ und Cornetto für " << cornetto << "€." << endl;

}

double iceshop::get_money() const {

    return money;

}

void iceshop::set_money( double new_money ) {

    money = new_money;

}

bool iceshop::pay( int choic ) {

    double money_buf;

    switch( choic ) {

        case 1:

            if( get_money() >= capri ) {

                cout << "Ein Capri gekauft" << endl;

                set_money( get_money() - capri  );

                cout << "Du hast noch " << get_money() << "€" << endl;

            }else {

                cout << "Nicht genügend Geld" << endl;

            }

            return true;

        break;

        case 2:

            if( get_money() >= nogger ) {

                cout << "Ein Nogger gekauft" << endl;

                set_money( get_money() - nogger  );

                cout << "Du hast noch " << get_money() << "€" << endl;

            }else {

                cout << "Nicht genügend Geld" << endl;

            }

            return true;

        break;

        case 3:

            if( get_money() >= cornetto ) {

                cout << "Ein Cornetto gekauft" << endl;

                cout << "Du hast noch " << get_money() << "€" << endl;

                set_money( get_money() - cornetto  );

                cout << "Du hast noch " << get_money() << "€" << endl;

            }else {

                cout << "Nicht genügend Geld" << endl;

            }

            return true;

        break;

        case 4:

            cout << "Good Bye" << endl << "Hier dein Rückgeld " << get_money() << "€" << endl; 

        break;

        default:

            cout << "Falsche Eingabe" << endl;

            return true;

        break;

    }


}

void iceshop::action() {

    int choic = 0;

    while( true ) {


        cout << "Bitte wähle: (1)Capri, (2)Nogger, (3)Cornetto, (4)Rückgeld anfordern" << endl;

        cout << "Wahl:";

        cin >> choic;

        if( pay( choic ) == false ) {

            break;

        }

    }

}

int main() {

    iceshop Luci;

    cout << "Du hast " << Luci.get_money() << "€ zur Verfügung" << endl;

    Luci.action();

    return 0;

}



Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...