Windows Azure Cloud Storage ermöglicht es Ihnen bereits ab 0,10€ pro GB/Monat die Vorteile der Cloud zu nutzen.
Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.de  
   
Advanced Developers Conference     
Bücher-Shop mit Amazon (Buchkategorien)C++ : Referenzen zu C++ : C++ Builder : Visual C++ : C# : Java : Spieleprogrammierung : Systemprogrammierung Linux : Software-Entwicklung : .NET : Compilertechnik : Algorithmen & Datenstrukturen : Objektorientierung : Entwurfsmuster : UML : eXtreme Programming : Scrum : Projektmanagement : Software-Testing : Datenbanken : Tom DeMarco : Dilbert : User Friendly
C/C++ Forum :: C++ (auch C++0x und C++11) ::  Probleme beim Arbeiten mit Objekt     Zeige alle Beiträge auf einer Seite Auf Beitrag antworten
Autor Nachricht
Wyki
Unregistrierter




Beitrag Wyki Unregistrierter 11:31:51 11.03.2010   Titel:   Probleme beim Arbeiten mit Objekt            Zitieren

Ich hab zur Übung mit C++ diesen Code geschrieben:


C/C++ 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
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
using namespace std;

class figure {
private:
public:
int werte[] = {0,3,3,3,3,3,1,3,1,7,5,0};

};

double chance(figure a, figure b)
{
int punkte[] = {0,4,4,b.werte[10],b.werte[11]};
(a.werte[2]>b.werte[2])?(punkte[1]-=1):();
((a.werte[2]*2)<b.werte)?(punkte[1]+=1):();
(a.werte[4]>b.werte[5])?(punkte[2]-=1):();
((a.werte[4]-1)>b.werte[5])?(punkte-=1):();
(a.werte[4]<b.werte[5])?(punkte[2]+=1):();
((a.werte[4]+1)<b.werte[5])?(punkte+=1):();
(a.werte[4]>3)?(punkte[3]+=(a.werte[4]-3)):();
(punkte[3]<2)?(punkte[3]=2):();
(punkte[3]>7)?(punkte[3]=7):();
// da ein wurf von 5+ eine Wahrscheinlichkeit von 4/6 hat zu versagen
double x = 1;
double chance;
punkte[1]--;
x*=6;
punkte[2]--;
x*=6;
punkte[3]--;
x*=6;
punkte[4]--;
x*=6;
chance = (double)(punkte[1]*punkte[2]*punkte[3]*punkte[4])/x;
return(chance);}
C/C++ 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
using namespace std;

class figure {
private:
public:
int werte[] = {0,3,3,3,3,3,1,3,1,7,5,0};

};

double chance(figure a, figure b)
{
int punkte[] = {0,4,4,b.werte[10],b.werte[11]};
(a.werte[2]>b.werte[2])?(punkte[1]-=1):();
((a.werte[2]*2)<b.werte)?(punkte[1]+=1):();
(a.werte[4]>b.werte[5])?(punkte[2]-=1):();
((a.werte[4]-1)>b.werte[5])?(punkte-=1):();
(a.werte[4]<b.werte[5])?(punkte[2]+=1):();
((a.werte[4]+1)<b.werte[5])?(punkte+=1):();
(a.werte[4]>3)?(punkte[3]+=(a.werte[4]-3)):();
(punkte[3]<2)?(punkte[3]=2):();
(punkte[3]>7)?(punkte[3]=7):();
// da ein wurf von 5+ eine Wahrscheinlichkeit von 4/6 hat zu versagen
double x = 1;
double chance;
punkte[1]--;
x*=6;
punkte[2]--;
x*=6;
punkte[3]--;
x*=6;
punkte[4]--;
x*=6;
chance = (double)(punkte[1]*punkte[2]*punkte[3]*punkte[4])/x;
return(chance);}
C/C++ 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
using namespace std;

class figure {
private:
public:
int werte[] = {0,3,3,3,3,3,1,3,1,7,5,0};

};

double chance(figure a, figure b)
{
int punkte[] = {0,4,4,b.werte[10],b.werte[11]};
(a.werte[2]>b.werte[2])?(punkte[1]-=1):();
((a.werte[2]*2)<b.werte)?(punkte[1]+=1):();
(a.werte[4]>b.werte[5])?(punkte[2]-=1):();
((a.werte[4]-1)>b.werte[5])?(punkte-=1):();
(a.werte[4]<b.werte[5])?(punkte[2]+=1):();
((a.werte[4]+1)<b.werte[5])?(punkte+=1):();
(a.werte[4]>3)?(punkte[3]+=(a.werte[4]-3)):();
(punkte[3]<2)?(punkte[3]=2):();
(punkte[3]>7)?(punkte[3]=7):();
// da ein wurf von 5+ eine Wahrscheinlichkeit von 4/6 hat zu versagen
double x = 1;
double chance;
punkte[1]--;
x*=6;
punkte[2]--;
x*=6;
punkte[3]--;
x*=6;
punkte[4]--;
x*=6;
chance = (double)(punkte[1]*punkte[2]*punkte[3]*punkte[4])/x;
return(chance);}



Und kriege eine ganze Armee von Fehlermeldungen. Die Meisten davon sagen das die funktion chance die Variable Werte nicht lesen kann bzw das diese nicht existiere. Ich hab vermutlich nur n kleinen Fehler irgendwo aber ich finde ihn nicht. Im Internet hab ich sonst auch nichts gefunden was mir weiterhilft...

Vielen Dank schonmal im v******
CptC
Unregistrierter




Beitrag CptC Unregistrierter 11:39:45 11.03.2010   Titel:              Zitieren

Rück deinen Code erst einmal vernünftig ein! So ist es kein wunder, dass du da nicht mehr durchblickst! :mad:

Zeile6 geht so schon mal gar nicht und eine Variable wie eine Funktion zu benennen (Zeile10 vs Zeile25) geht auch nicht...

Und dann solltest du mal den Unterschied zwischen ?: und if anschauen :mad: So wie du ?: verwendest ist es falsch und unleserlich :mad:
Wyki
Unregistrierter




Beitrag Wyki Unregistrierter 12:23:32 11.03.2010   Titel:              Zitieren

ok dann werd ich das mit dem ?: erstmal lassen , aber was is denn an Zeile 6 Falsch ? Ich Deklariere ein Array und Initialisier das gleich , hab ich da was falsch verstanden ? Das Zeile 25 nicht geht seh ich im nachhinein ein aber was ist an Zeile 10 falsch ?

Und ich dachte ich hätte die Theorie verstanden ....
CptC
Unregistrierter




Beitrag CptC Unregistrierter 12:37:39 11.03.2010   Titel:              Zitieren

Du kannst Member so direkt nicht intialisieren (außer ganzzahlige konstanten) und bei Arrays ist das derzeit leider sowieso noch komplizierter.

du könntest das zB so machen
C/C++ Code:
1
2
3
4
5
6
7
8
9
10
11
12
1
2
3
4
5
6
7
8
9
10
11
12
#include <algorithm>
#include
<cassert>

struct figure {
  int werte[12];

  figure() {
    int const c[] = {0,3,3,3,3,3,1,3,1,7,5,0};
    assert(sizeof(c) == sizeof(werte));
    std::copy(c, c+sizeof(c), werte);
  }
};
C/C++ Code:
1
2
3
4
5
6
7
8
9
10
11
12
#include <algorithm>
#include
<cassert>

struct figure {
int werte[12];

figure() {
int const c[] = {0,3,3,3,3,3,1,3,1,7,5,0};
assert(sizeof(c) == sizeof(werte));
std::copy(c, c+sizeof(c), werte);
}
};
C/C++ Code:
1
2
3
4
5
6
7
8
9
10
11
12
#include <algorithm>
#include
<cassert>

struct figure {
  int werte[12];

  figure() {
    int const c[] = {0,3,3,3,3,3,1,3,1,7,5,0};
    assert(sizeof(c) == sizeof(werte));
    std::copy(c, c+sizeof(c), werte);
  }
};


wobei die "coolen :cool: Kids von heute(tm)" wohl eher

C/C++ Code:
struct figure {
  std::array<int, 12> werte;

  figure()
    : werte(boost::assign::list_of(0)(3)(3)...)
  { }
};
C/C++ Code:
struct figure {
std::array<int, 12> werte;

figure()
: werte(boost::assign::list_of(0)(3)(3)...)
{ }
};
C/C++ Code:
struct figure {
  std::array<int, 12> werte;

  figure()
    : werte(boost::assign::list_of(0)(3)(3)...)
  { }
};


schreiben würden (dafür musst du aber boost installieren bzw. dir list_of() selbst bauen...)
CptC
Unregistrierter




Beitrag CptC Unregistrierter 12:39:05 11.03.2010   Titel:              Zitieren

Bemerke übrigens die erhöhte Lesbarkeits meines Codes, durch _richtige_ Codeeinrückung. Das solltest du (wie gesagt) als erstes üben.
Wyki
Unregistrierter




Beitrag Wyki Unregistrierter 13:32:46 11.03.2010   Titel:              Zitieren

Ok, vielen dank. Werde veruchen meinen Code lesbarer zu gestalten ^^
C/C++ Forum :: C++ (auch C++0x und C++11) ::  Probleme beim Arbeiten mit Objekt   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, www.c-sar.de, www.c-plusplus.net und www.baeckmann.de 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.