C++ zweidimensionale Felder

Ich möchte folgendes Programm (Hier auf eurer Seite gefunden und minimal modifiziert) so umbasteln, daß man mehrere Tips abgeben kann und im Zweifel das Ganze auch noch für mehrere Personen. Hat jemand eine Idee?
Mit zweidimensionalen Feldern tue ich mich leider ein wenig schwer :(

Code:
#include <iostream>
#include <cstdlib>
#include <algorithm>
#include <time.h>
using namespace std;


int main()
{
	int zahl[6];
	int zufall[6];
	int treffer=0;
	int i=0, j=0, l=0;
	char menuewahl;

/* EINGABE
********************************************** */

	cout << "\n(1) Spielschein ausfuellen";
	cout << "\n(3) Ende" << endl;
  cin  >> menuewahl;

/* EINGABE ENDE
********************************************** */


switch (menuewahl)
{


    case '1':
    {
        for( i=0; i<=5; i++)
        {
		cout << "Gib die " << i+1 << ". Zahl ein: ";
		cin >> zahl[i];

/* GUELTIGKEITSPRUEFUNG
********************************************** */
		if( zahl[i] < 1 || zahl[i] > 49 )
		{
			cout << "Die Zahl muss groesser als 0 und kleiner als 50 sein!\n";
			i--;
		}

/* GUELTIGKEITSPRUEFUNG ENDE
*********************************************** */


/* UEBERPRUEFUNG AUF DOPPELTE ZAHLEN
********************************************** */
		j=0;
		for( j=0; j<=i-1; j++ )
		{
			if( zahl[j] == zahl[i] )
			{
				cout << "Zahl schon vorhanden!\n";
				i--;
			}
		}
        }

/* UEBERPRUEFUNG AUF DOPPELTE ZAHLEN ENDE
********************************************** */

  system("cls");
	cout << "\n(2) Lottozahlen ziehen";
	cout << "\n(3) Ende" << endl;
  cin  >> menuewahl;
    }


/*AUSGABE DER EINGABE *g*
********************************************** */
	/*j=0;
	for( j=0; j<=5; j++ )
	{
		cout << "Die " << j+1 << ". Zahl ist " << zahl[j] << ".\n";
	}*/

/*AUSGABE DER EINGABE ENDE
********************************************** */

    case '2':
    {

/* ERZEUGUNG VON ZUFÄLLIGEN LOTTOZAHLEN
********************************************** */
        srand( unsigned(time( NULL ) ) );
        l=0;
        for( l=0; l<=5; l++ )
        {
            zufall[l]=1+(rand()%49);
            j=0;
            for( j=1; j<=l-1; j++ )
            {
                if( zufall[j] == zufall[l] )
				        l--;
            }
        }

/* ERZEUGUNG VON ZUFÄLLIGEN LOTTOZAHLEN ENDE
********************************************** */


/* LOTTOZAHLEN AUSGEBEN
********************************************** */
        system("cls");
				cout << "\nDie Lottozahlen dieser Ziehung lauten: " << endl;
				sort(zufall, zufall + 6);
				j=0;
        for( j=0; j<=5; j++ )
        {
            cout << "\t" << zufall[j] << " ";
        }

/* LOTTOZAHLEN AUSGEBEN ENDE
********************************************** */


/* ZAHLEN VERGLEICHEN
********************************************** */
        j=0;
        for( j=0; j<=5; j++ )
        {
            l=0;
            for( l=0; l<=5; l++ )
            {
                if( zahl[j] == zufall[l] )
                treffer++;
            }
        }

/* ZAHLEN VERGLEICHEN ENDE
********************************************** */

/* ZAHLEN SORTIEREN UND AUSGEBEN
********************************************** */

    sort(zahl, zahl + 6);

    cout << "\nDeine Zahlen sortiert zum Vergleich: " << endl;
    for(int zahlaus=0; zahlaus<=5; zahlaus++ )
        {
            cout << "\t" << zahl[zahlaus] << " ";
        }

/* ZAHLEN SORTIEREN UND AUSGEBEN
********************************************** */

/* TREFFERANZAHL AUSGABE
********************************************** */

	cout << "\nDu hast " << treffer << " Richtig(e).\n";	cout << "\n";

/* TREFFERANZAHL AUSGABE ENDE
********************************************** */

	  cout << "\n(3) Ende" << endl;
    cin  >> menuewahl;
    break;
    }

    case '3':
    {
     cout << "\nEnde...";
    }

}
return 0;
}
 
Willkommen im HaBo!
Und was genau möchtest du jetzt? Eine Erklärung wie 2-dimensionale Felder verwendet werden? Ich denke wenn du mit 2D Felder zurecht kommst, sollte der Rest nicht mehr allzu schwer sein.

2D Felder kannst du dir wie eine Tabelle vorstellen. Ich bezeichne die erste Dimension immer als Zeile und die zweite als Spalte.

Deklaration:
Code:
int d2_array[2][6];  //2 Zeilen, 6 Spalten, zB 2 Spieler mit jeweils 6 Zahlen

Initialisierung:
Code:
int d2_array[2][4] = {{1,2,3,4}, {5,6,7,8}};

Verwendung:
Code:
d2_array[0][0] = 4;  //erste Zahl für Spieler 1 setzen
d2_array[0][1] = 11;  //zweite Zahl für Spieler 1 setzen
d2_array[1][0] = 23;  //erste Zahl für Spieler 2 setzen
d2_array[1][2] = 23;  //dritte Zahl für Spieler 2 setzen
usw.

Hoffe das hilft dir weiter ;)
 
Code:
int 2d_array[2][6];  //2 Zeilen, 6 Spalten, zB 2 Spieler mit jeweils 6 Zahlen

ist es nicht ungültig, das der variablennamen mit einer 2 beginnt?
d2_array bzw. _2d_array wäre doch erlaubt.

irre ich mich da Oo


habs gerade getestet, bei mir gibts nen fehler. ist das compiler abhängig?
ich glaube zu wissen das es ein allgemeiner fehler ist....
 
ist es nicht ungültig, das der variablennamen mit einer 2 beginnt?
d2_array bzw. _2d_array wäre doch erlaubt.

Da hast du recht! Ein Bezeichner muss laut C/C++ Namenskonventionen mit einem "nondigit" also mit einem '_' oder einem Buchstaben beginnen.
Hab's in meinem Beispiel korrigiert! ;)
 
ich glaube zu wissen das es ein allgemeiner fehler ist....

Da hast du recht! Ein Bezeichner muss laut C/C++ Namenskonventionen mit einem "nondigit" also mit einem '_' oder einem Buchstaben beginnen.
Hab's in meinem Beispiel korrigiert!
...und so wird aus glauben wissen :D

noch was zu 2-dimensionalen felder:
Code:
#include <iostream>

int main(){
	int a[2][2]={{1,2},{3,4}};
	int *p = a[0];
	for(int i=0;i<4;i++){
		std::cout << *p << std::endl;
		p++;
	}
return 0;
}
(ich hoffe der code is richtig *g*)
nehmen wir an, das feld würde so gespeichert:

2 4
1 3

dann zeigt p erstmal auf 1, bei p+1 zeigt p auf 2,
bei p+1 (incl. dem vorherigen +1), auf 3, und zu guter letzt auf 4.

ich hoffe das hilft noch ein kleines wenig...
was wäre nun die ausgabe? ;) wenn du das verstanden hast, ists cool.
ansonten kopier den code und schaus dir an *lol*
 
Zurück
Oben