Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Übergabe von Arrays vom Unterprogramm ans main

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
24.03.2010, 10:55 Uhr
Tjelfe



Moin, wollte mal fragen ob mir jemand weiterhelfen kann?

Ich will ein Kniffelspiel programieren, welches mit der funktion srand mit 5 Würfeln arbeitet, und diese dann jeweils an unterprogrammen weitergibt und dort weiter gewürfelt würd.
Ich habe alles erstmal auf den ersten Würfel ausgelegt, und wollte nach dem der dritte Wurf vollbracht ist, die Würfel an main zurück geben.

nur bei der Rückgabe, geht er den zweiten und dritten wurf noch ein paar mal mehr durch als er soll, habe auch schon versucht mit Zeigern zu arbeiten, aber irgendwie bekomm ich es nicht hin, kann mir jemand weiterhelfen?

hier mal mein Quellcode:


C++:
#include "stdafx.h"
#include "iostream"
#include "conio.h"
#include "time.h"
#include "windows.h"

using namespace std;


int einzel(int f_würfel1)

{
    int i,f_würfel[5],f_anzahl_wurf,f_wahl;

    
    
    system("cls");
    cout<<"Behalten:"<<f_würfel1;
    cout<<endl;
    
    
        srand( time(NULL));
    for(i=1; i<5; i++)
    {
        f_würfel[i]=(rand()%6)+1;
        cout <<i<<". Wuerfel: " << f_würfel[i] << endl; //2. Wurf mit 4 Würfel
    }
    do
    {

        cout<<"\nWieviel Wuerfel wollen sie behalten?   eingabe:";
        cin>>f_anzahl_wurf;            //Abfrage wieviel würfel man behalten möchte

        if(f_anzahl_wurf>4)        
        {
        cout<<"\nEingabe nur zwischen 0-4 moeglich!";
        }
    }
    while(f_anzahl_wurf>4); //Anzahl darf nicht größer als 5 sein

    switch(f_anzahl_wurf)    //switch in Anzahl der würfe
    {
        case 0: ;break;
        case 1: do
                {
                cout<<"\nWelchen Weurfel wollen sie behalten?    eingabe:";
                cin>>f_wahl;
                
                if(f_wahl>4)
                {
                    cout<<"Eingabe nur zwischen 1-4 möglich";
                }
                } //ende der do Schleife wenn wahl zwischen 1-4
                while(f_wahl>4);

system("cls");

                switch(f_wahl)
                {
                
                case 1:
                    cout<<"Behalten: "<<f_würfel1;
                    cout<<"\nBehalten: "<<f_würfel[1];
                    cout<<endl;
                    
                    for(i=1; i<4; i++) //3. Wurf mit 3 Würfel
                    {
                    f_würfel[i]=(rand()%6)+1;
                    cout <<i<<". Wuerfel: " << f_würfel[i] << endl;
                    }
                    do
                    {
                        cout<<"\nWieviel Wuerfel wollen sie behalten?   eingabe:";
                        cin>>f_anzahl_wurf;            //Abfrage wieviel würfel man behalten möchte

                        if(f_anzahl_wurf>3)
                        {
                            cout<<"\nEingabe nur zwischen 0-3 moeglich!";
                        }
                    }

                while(f_anzahl_wurf>3); //Anzahl darf nicht größer als 3 sein
                }
                
                switch(f_anzahl_wurf)    //switch in Anzahl der würfel
                {
                    case 0: ;break;
                    case 1:
                        
                    do
                        {
                            cout<<"\nWelchen Weurfel wollen sie behalten?    eingabe:";
                            cin>>f_wahl;
                
                            if(f_wahl>3)
                {
                    cout<<"Eingabe nur zwischen 1-3 möglich";
                }
                } //ende der do Schleife wenn wahl zwischen 1-3
                while(f_wahl>3);
                }
                switch(f_wahl) // 3. Würfel
                {
                    case 1:return(f_würfel1,f_würfel[1],f_würfel[2]);break;
                }
    break;}//erste case Abfrage
}//Ende unterprogramm einzel

int _tmain(int argc, _TCHAR* argv[])
{
    int anzahl_wurf,i,Würfel[7],chache[6],wahl;

    char weiter;

    
    srand( time(NULL) );
    
    for(i=1; i<6; i++)
    {
        
        chache[i]=(rand()%6)+1;
        cout <<i<<". Wuerfel: " <<chache[i]<< endl;
    }        //5 Würfel werden gewürfelt
    do
    {

        cout<<"\nWieviel Wuerfel wollen sie behalten?   eingabe:";
        cin>>anzahl_wurf;            //Abfrage wieviel würfel man behalten möchte

        if(anzahl_wurf>5)
        {
        cout<<"\nEingabe nur zwischen 0-5 moeglich!";
        }
    }
    while(anzahl_wurf>5); //Anzahl darf nicht größer als 5 sein

    switch(anzahl_wurf)    //switch in Anzahl der würfe
    {
        case 0: ;break;
        case 1: do
                {
                cout<<"\nWelchen Würfel wollen sie behalten?    eingabe:";
                cin>>wahl;
                if(wahl<5)
                {
                    cout<<"Eingabe nur zwischen 1-5 möglich";
                }
                } //ende der do Schleife wenn wahl zwischen 1-5
                while(wahl>5);

                switch(wahl)            //switch für einen Würfel
                {
                    case 1: einzel(chache[1]);break; //übergibt Würfel1 an Unterprogramm einzel
                    case 2: einzel(chache[2]);break; //übergibt Würfel2 an Unterprogramm einzel
                    case 3: einzel(chache[3]);break; //übergibt Würfel3 an Unterprogramm einzel
                    case 4: einzel(chache[4]);break; //übergibt Würfel4 an Unterprogramm einzel
                    case 5: einzel(chache[5]);break; //übergibt Würfel5 an Unterprogramm einzel

                } // ende Anzahl der Würfe
    } //ende der Switch case Abfrage


Würfel[1]=einzel(chache[1]);
Würfel[2]=einzel(chache[1]);
Würfel[3]=einzel(chache[1]);

system("cls");

cout<<endl;
cout<<Würfel[1];
cout<<Würfel[2];
cout<<Würfel[3];


    getch();
    return 0;
}



edit ao: CPP-Tags eingefügt. Bitte nächstes Mal selber machen.

Dieser Post wurde am 24.03.2010 um 11:20 Uhr von ao editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
24.03.2010, 11:46 Uhr
ao

(Operator)


Moin, kurze Anmerkungen zu dem Code:

Sei so nett und verwende keine Variablennamen mit Umlauten (z.B. f_würfel). Der Microsoft-Compiler stört sich nicht dran, aber andere schon.

Die Funktion einzel() gibt nicht auf allen Pfaden einen Wert zurück. Da du am Programmende den Rückgabewert verwendest, solltest du sicherstellen, dass auf jeden Fall einer kommt.

Ich finde die Struktur des Programms total wirr. Ich glaube dir sofort, dass du die Abläufe nicht im Griff hast. Schreib das ganze um und strukturiere es neu. Es ist eigentlich ganz einfach:


1. Welche Information gibt es über einen Würfel zu speichern? Die Augenzahl und, ob er behalten oder neu geworfen werden soll. Diese Daten anlegen und initialisieren (für alle Würfel: "Behalten" auf false).

2. Schleife über alle Würfel: Wenn für einen Würfel Behalten == false ist, dann diesen Würfel neu werfen und Augenzahl speichern.

3. Abfrage, welche Würfel behalten werden sollen. Für diese Würfel Behalten auf true setzen.

4. Weiter bei 2.

Damit das Spiel auch mal zum Ende kommt: Eine passende Ausstiegsbedingung ist, wenn für alle Würfel Behalten == true ist oder wenn die Maximalzahl der Würfe erreicht ist (je nach Regel 3 oder 5).

Dieser Post wurde am 24.03.2010 um 11:46 Uhr von ao editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
24.03.2010, 14:46 Uhr
Tjelfe



Danke, werde es wohl nochmal neu umschreiben, ist wohl auch das beste, so wie du es geschrieben hast^^ habe erst seit kurzem angefangen und demnach denke ich wohl noch zu kompliziert^^
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: