Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Teiby

Frischling

  • »Teiby« ist der Autor dieses Themas

Beiträge: 42

Beruf: Ausbildung

  • Private Nachricht senden

1

17.04.2011, 08:04

IF Abfrage in Parameterübergabe

Ich mach da gerade selber etwas in C++ und hab da en blödes Problem.

Also ich brauch ne IF Abfrage in deiner Parameterübergabe. Das soll ungefähr so aussehen:

C-/C++-Quelltext

1
blabla(Wert1, if(WertXY==1){Wert2}, Wert3);


Hab schon alles mögliche ausgetestet, aber das Erstellungsprogramm meckert dauernt rum das der IF Befehl einen Syntaxfehler ausweist.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

2

17.04.2011, 09:00

Ein IF liefert keinen Wert zurück. Sieh Dir mal den ternären Operator "?:" an, das könnte sein, was Du brauchst.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

BurningWave

Alter Hase

Beiträge: 1 106

Wohnort: Filderstadt/Konstanz

Beruf: Student

  • Private Nachricht senden

3

17.04.2011, 09:16

if führt einen Block aus, wenn eine Bedingung erfüllt ist:
if(xyz) //wenn xyz true ist, wird ... ausgeführt
{
...
}

?: ist so aufgebaut: (Bedingung) ? (x) : (y)
Wenn Bedingung true ist, wird x, sonst y zurückgeliefert. Also:
blabla(Wert1, (WertXY == 1) ? Wert2 : Wert3);

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

4

17.04.2011, 12:33

Ich glaube, er will lediglich den Wert2 übergeben, wenn WertXY True ist. Dies ist im Funktionskopf jedoch nicht möglich mit einer If. Was du machen könntest, wäre einen default Parameter für den Wert2 anzulegen und Wert2 und Wert3 zu tauschen.
Das würde dann so etwa gehen:

C-/C++-Quelltext

1
2
3
4
5
if (WertXY) {
    blablub(Wert1, Wert3, Wert2);
} else {
    blablub(Wert1, Wert3);
}

Hab jetzt mal bewusst die Namen so gelassen, damit du den Tausch siehst.

Wenn ich es falsch verstanden habe, einfach nicht beachten ;)
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

Teiby

Frischling

  • »Teiby« ist der Autor dieses Themas

Beiträge: 42

Beruf: Ausbildung

  • Private Nachricht senden

5

17.04.2011, 14:02

Es soll auch fälle geben in der alle 3 vorkommen. Und bei mir sind sind das 6 werte die übergeben werden und 4 davon sollen nur dann übergeben werden wenn etwas erfüllt wurde. das von achitekt wäre glaub da die einzigste lösung...auch wenn das bissel viel text wird

Das ganze soll so aussehen:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
uint32 Gold = 0;
uint32 Silber = 50;
uint32 Eisen = 10;
uint32 Kohle = 20;

std::string Funktionstext = += "Du hast %u Eisen und ";
if(Gold>0) Funktionstext += "%u Gold und ";
if(Silber>0)Funktionstext += " %u Silber und ";
if(Kohle>0)Funktionstext += " %u Kohle";

Ausgabe(Funktionstext.c_str(), Eisen,Gold,Silber,Kohle);


Da wäre die Ausgabe nun so: Du hast 10 Eisen und 0 Silber und 50 Kohle.
Wie ich es will: Du hast 10 Eisen und 50 Silber und 20 Kohle.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Teiby« (17.04.2011, 14:08)


NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

6

17.04.2011, 14:10

was spricht dagegen es gleich zusammen zu führen?

zum beispiel so:

C-/C++-Quelltext

1
2
3
4
5
6
std::stringstream funktionstext = "Du hast " << Eisen << " Eisen";
if(Gold>0) funktionstext << " und " << Gold << " Gold";
if(Silber>0)funktionstext << " und " << Silber << " Silber";
funktionstext << ".";

ausgabe (funktionstext.str().c_str());
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

7

17.04.2011, 14:10

Warum baust du dann den String nicht vorher schon korrekt zusammen?

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <sstream>

int main ()
{
    int Eisen = 0;
    int Gold = 10;
    int Silber = 20;

    std::stringstream s;
    s << "Du hast " << Eisen << " Eisen";
    if(Gold > 0)
        s << ", " << Gold << " Gold";
    if(Silber > 0)
        s << ", " << Eisen << " Silber";

    std::cout << s.str() << std::endl;
}


//edit
hehe, ein wenig zu langsam.. ^^

Teiby

Frischling

  • »Teiby« ist der Autor dieses Themas

Beiträge: 42

Beruf: Ausbildung

  • Private Nachricht senden

8

17.04.2011, 14:25

edit: funktioniert ^^

stringstream anstatt string ^^

danke für die antworten. macht das ganze schon viel einfacher ^^


Edit: Okay nicht ganz perfekt: Was mach ich wenn der Text als ID übergeben wird und dieser Text dann später ein Text aus der SQL Datenbank holt (andere Sprachen)? Da muss ich wohl doch mit meiner Methode machen

Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von »Teiby« (17.04.2011, 14:41)


9

18.04.2011, 09:31

Na, dann baust du den String zu dem Zeitpunkt zusammen, zu dem du alle benötigten Daten hast. Also in der Funktion, die du dann aufrufst.
Es ist eigentlich viel schöner und sauberer wenn du eine Funktion hast, die nur den String zusammenbaut und eine Funktion, die sich nur darum kümmert, einen fertigen String anzuzeigen.
Lieber dumm fragen, als dumm bleiben!

Werbeanzeige