Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.de  
   

Die mobilen Seiten von c++.de:
http://m.c-plusplus.de
Infos hier [BETA]

  
c++.de :: C++ (auch C++0x und C++11) ::  C++ Einkaufsliste aber wie?  
Gehen Sie zu Seite 1, 2, 3, 4, 5, 6, 7  Weiter
  Zeige alle Beiträge auf einer Seite
Auf Beitrag antworten
Autor Nachricht
nimda4
Unregistrierter




Beitrag nimda4 Unregistrierter 10:37:48 19.04.2012   Titel:   C++ Einkaufsliste aber wie?            Zitieren

Hallo Liebe Programmier Geminde

Ich würde gerne in C++ eine Art Shop schreiben in dem man verschiedene Waffen hat welche, einen Preis haben und einen Schaden.
Wie kann ich dies machen?
Den Shop möchte ich als eine Funktion haben und es soll wenn eine auswahl getroffen worden ist, diese "Speichern"

Beispiel:

Herzlich willkommen im Shop was möchtest du kaufen?
1. Schwert (18 DMG, 200 Euro)
2. Dolch (10 DMG, 100 Euro)
3. Armbrust (14 DMG, 300 Euro)

Wenn ich jetzt 1 eingebe soll er mir auf einen String "Schwert" schreiben, mir auf einen Integer die DMG (18) schreiben und von meinem Geldbeutel(global oder lokale variable??) 200 abziehen.

Ich habe zwar eine Lösung gefunden, jedoch ist diese sehr, sehr ungeschickt und brauchtzu viel Platz (Sehr langer Code):

Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#include <stdio.h>
#include <tchar.h>
#include <stdlib.h>
#include <string>
#include <time.h>
#include <csetjmp>
#include <stddef.h>
#include <iostream>
#include <conio.h>
#include <dos.h>
#include <conio.h>
#include <Windows.h>
 
using namespace std;
 
int a;
int c;
int geldbeutel;
 
int shop(int c)
{
      cout<<"Bitte Waffe auswählen\n";
        cin>>a;
        switch(a)
        {
            case 1: c=1; break;
            case 2 : c=2; break;
            case 3 : c=3; break;
        }
            std::system("cls");
            return(c);
            break;
}
 
 
int _tmain(int argc, _TCHAR* argv[])
{
     switch(shop(0))
     {
    case 1:
    if(geldbeutel>=200)
    {
            waffe="Schwert";
                 schaden=18;
                 geldbeutel=geldbeutel-200;
                 break;
    }
    else
    {
        cout <<"zuweniggeld\n";
    }
 
    case 2:
    if(geldbeutel>=100)
    {
        waffe="Dolch";
                 schaden=10;
                 geldbeutel=geldbeutel-100;
                 break;
    }
    else
    {
        cout <<"zuweniggeld\n";
    }
 
    case 3:
    if(geldbeutel>=300)
    {
        waffe="Armbrust";
                 schaden=14;
                 geldbeutel=geldbeutel-300;
                 break;
    }
    else
    {
        cout <<"zuweniggeld\n";
    }


Bei so wenigen Waffen währe diese Lösung für mich in ordungn nun habe ich jedoch 100+ Waffen -.-

Klassen habe ich mir auch angeschaut und die Variabeln auf KLassen zu schreiben wäre kein Problem jedoch habe ich immer das gleiche Problem:
Die Auswahl welche Waffe gekauft wurde.

Kann mir wer weiterhelfen?

Ich verwende den Microsoft Visual Studio 2008 Compailer.

Mit Freundlichen Grüssen

nimda4
Namenloser324
Unregistrierter




Beitrag Namenloser324 Unregistrierter 11:00:15 19.04.2012   Titel:              Zitieren

Hallo, folgendes wäre z.B. denkbar:

Du schreibst in eine Textdatei alle Kombinationen von Waffe und Schaden und ähnlichen Informationen die du haben möchtest und trennst die Informationen mit irgendeinem Trennzeichen(etwa einem Leerzeichen oder einem Komma).
Dann liest du in deinem Programm die Datei aus und lädst die Informationen in eine Klasse, welche du dann ganz standardmäßig ausgeben kannst.

Also kleines Beispiel:

Textdatei:

Schwert 19 200
Armbrust 10 100
usw

Zuerst steht der Name dort, danach der Schaden und dann die Kosten.

Die Klassen die du dafür benötigst könnten z.B. so aussehen:

class Waffe
{
public:
Waffe(std::string C_name, int C_dmg,int C_kosten)
std::string name;
int dmg,kosten;
}
class Waffenangebot
{
public:
void getListe(void)
{
for(int i = 0; i < Waffenliste.size();i++)
{
std::cout << "Name: " << Waffenliste[i].name << "(Dmg " << Waffenliste[i].dmg << ", Kosten " << Waffenliste[i].kosten << std::endl");
}
void addWaffe(Waffe blabla);
privat:
std::vector<Waffe> Waffenliste;
}

Dann im Programm immer eine Zeile aus der Textdatei auslesen und in ein Objekt des Typs Waffe einspeichern und das in die Klasse Waffenangebot einfügen.
Fertig.

Schau dir dazu die Klasse ifstream an, sowie die Klasse vector.
Namenloser324
Unregistrierter




Beitrag Namenloser324 Unregistrierter 11:01:26 19.04.2012   Titel:              Zitieren

Oder habe ich jetzt dein Problem missverstanden? Die Auswahl ist dann eigentlich kein Problem mehr, kannst bei der Ausgabe ja noch eine Nummer davorschreiben, so dass der Nutzer weiß welche Nummer welcher Waffen entspricht.
Syntax_error
Mitglied

Benutzerprofil
Anmeldungsdatum: 15.03.2012
Beiträge: 153
Beitrag Syntax_error Mitglied 11:11:14 19.04.2012   Titel:              Zitieren

Wenn ich deine Frage richtig verstanden habe, dann willst du über 100 Waffen, aber die Waffen nicht aufschreiben.
Das funktioniert so nicht.
Aber wie mein Vorposter schon schrieb könntest du die Waffenliste in eine Datei auslagern und sie über einen fstream aus dieser datei holen.

gruß
syntax

_________________
Die Fehler bei anderen zu suchen ist leicht,
doch sich selbst zu hinterfragen,
gleicht einigen einer Prüfung.
nimda4
Unregistrierter




Beitrag nimda4 Unregistrierter 11:25:46 19.04.2012   Titel:   Auswahl            Zitieren

Zuerst mal Danke ich werde mir das alles heute und Morgen genau durch lesen und es ausprobieren :D

@Syntax_error
Doch die Waffen möchte ich aufschreiben, aber ich möchte nicht so viel Code haben, sprich irgend wo wird alles angezeigt und mit Switch die Auswahl getroffen, (das ist so gut jedoch..) dann habe ich ja einen Rückgabewert (int c)
welcher dann jede einzelne Waffe mit:
Code:
IF(c=zahl der 1.waffe, zahl der 2.waffe..., zahl der 100.waffe)
{
      waffen werte auf variabeln schreiben;
}

überprüft. Dieser Code der praktisch nur aus IF besteht möchte ich irgendwie kleiner machen ist dies überhaupt möglich?

@Namenloser324
Wenn ich deine Variante nehme habe ich ja dann nur den Code der Waffen aus dem Programm rausgenommen und in einem Textfile jedoch muss dann dies auswahl wieder (nach meiner bis jetzt verwendeten Variante) mit IF erfolgen.
Sehe ich das so richtig?

Gruss

nimda4
Namenloser324
Unregistrierter




Beitrag Namenloser324 Unregistrierter 11:31:37 19.04.2012   Titel:              Zitieren

Nee, das geht mit ein paar Zeilen und deckt alle Fälle ab.

Klasse entsprechend anpassen:

if(Waffenliste.Waffen[EINGABE].kosten <= Geld)
{
Geld = Geld-[...].kosten;
cout << "Waffe " << "Waffenliste.Waffen[EINGABE].name << " gekauft" << endl;
}
else
cout << "Zu wenig Geld" << endl;
nimda4
Unregistrierter




Beitrag nimda4 Unregistrierter 12:49:53 19.04.2012   Titel:   Frage^^            Zitieren

Danke Namenloser324

Jetzt habe ich nru das Problem das mich das ganze ziemlich verwirrt ^^-.-

Was eine Klasse ist udn ein Objekt und wie ich sie erstelle weiss ich, jedoch verstehe ich das mit der Liste und dem einlesen nicht so ganz.
Ich habe jetzt eine Liste(waffenliste.txt) die wie du gesagt ahst wie folgt aus sieht:

Schwert 19 200
Armbrust 10 100
Dolch 14 150

Ich werde mir jetzt ifstream, vector und fstream ansehen und mich noch mal melden sollte das Problem immer noch bestehen.

Vielen Dank für eure Hilfe, Ihr habt mir schon so gut geholfen in nur so kurzer Zeit :D

Gruss & Merci

nimda4
nimda4
Unregistrierter




Beitrag nimda4 Unregistrierter 13:17:42 19.04.2012   Titel:   fstream            Zitieren

So gerade eben habe ich mri fstream angeschaut und weiss nun wie ich ein text file einlesen kann, jedoch wie kann ich die Texte beim Lerzeichen trennen udn eineln auf die Klasse speichern :O?

Hab leider nix gescheites mit der sufu gefunden (villeicht bin ich einfach zu blöd -.-)
Hab erst gerade mit dem Programmieren angefangen und verzweifle langsamm^^

Gruss

nimda4
nimda4
Unregistrierter




Beitrag nimda4 Unregistrierter 13:23:00 19.04.2012   Titel:   fstream            Zitieren

Okei hab jetzt gefunden wie ich es trennen kann

getline(myfile,line,' ');

doch wie kann ich die einzelnen einträge nun speichern?
Namenloser324
Unregistrierter




Beitrag Namenloser324 Unregistrierter 14:22:51 19.04.2012   Titel:              Zitieren

Tja, denk drüber nach, du lädst jetzt ja zeilenweise in einen string.
Strins haben standardmäßig bereits funktionen zum verarbeiten bzw bearbeiten des strings, schau mal hier:

http://www.cplusplus.com/reference/string/string/

Was du brrauchen könntest ist z.B. substr, damit kannste aus einem string teile ausschneiden. Ferner wirst du http://www.cplusplus.com/reference/string/string/find/ das hier brauchen, oder eine ähnliche FUnktion. Damit kannst du nach Leerzeichen suchen und mittels substr alles bis zum ersten Leerzeichen ausschneiden. Dann löscht du am besten eben diesen substring und kannst somit die prozedur einfach weiterführen d.h. wiederholen.
Zum löschen von Teilen des Strings spielst du am besten mit http://www.cplusplus.com/reference/string/string/erase/ rum
c++.de :: C++ (auch C++0x und C++11) ::  C++ Einkaufsliste aber wie?  
Gehen Sie zu Seite 1, 2, 3, 4, 5, 6, 7  Weiter
Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info und www.c-plusplus.net enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.