Fehler Wichtig für Schule



  • Schiffe Versenken

    Könnt ihr mir sagen wo der Fehler liegt

    1 Versuch:

    /* Schiffe versenken*/
    #include <conio.h>
    #include <iostream.h>
    #include <iomanip.h>

    int Zeile, Spalte, x, y, c, d, z, Zeilex, Spaltey, aus;
    void Ausgabe(void);

    int main()
    {

    cout<<"Schiffe versenken!! " <<endl;
    cout<<"Geben Sie an wie viele Zeilen Sie haben wollen";
    cin>>c;
    cout<<"Geben Sie an wie viele Spalten Sie haben wollen";
    cin>>d;
    x=c-1;
    y=d-1;
    int Tabelle[x][y];
    for(Zeile = 0; Zeile <= x; Zeile++)
    {
    for(Spalte = 0; Spalte <= y; Spalte++)
    {
    Tabelle[Zeile][Spalte] = 0;
    }
    }

    for(Zeile = 0; Zeile <= x; Zeile++)
    {
    for(Spalte = 0; Spalte <= y; Spalte++)
    {
    cout << setw(8) << Tabelle[Zeile][Spalte];
    }
    cout << endl;
    }

    cout<<"Wie viele Schiffe möchten Sie einsetzen?" <<endl;
    cout<<"Sie können maximal 4 Schiffe einsetzen!!! " <<endl;
    cin>> z;

    for(Zeile = 0; Zeile <= x; Zeile++)
    {
    for(Spalte = 0; Spalte <= y; Spalte++)
    {
    Tabelle[Zeile][Spalte] = 0;
    }
    }
    for(aus = 0; aus <= z; aus++)
    {

    Ausgabe();
    }

    getch();
    return 0;
    }

    /*******************************************
    ******************************************/

    void Ausgabe(void)
    {
    int Tabelle[Zeile][Spalte];
    cout<<"Geben Sie den Schiffskordinaten ein : " <<endl;
    cout<<"Geben Sie eine Zahl fuer X ein: ";
    cin>> Zeilex;
    cout<<"Geben Sie eine Zahl fuer Y ein: ";
    cin>> Spaltey;
    Zeile=Zeilex-1;
    Spalte=Spaltey-1;
    Tabelle[Zeile][Spalte] = 1;
    for(Zeile = 0; Zeile <= x; Zeile++)
    {
    for(Spalte = 0; Spalte <= y; Spalte++)
    {

    cout << setw(8) << Tabelle[Zeile][Spalte];
    }
    cout << endl;
    }
    }

    2. Versuch

    /* Schiffe versenken*/
    #include <conio.h>
    #include <iostream.h>
    #include <iomanip.h>

    void Ausgabe(void);
    int Zeile, Spalte, x, y, c, d, z, Zeilex, Spaltey;
    int main()
    {

    cout<<"Schiffe versenken!! " <<endl;
    cout<<"Geben Sie an wie viele Zeilen Sie haben wollen";
    cin>>c;
    cout<<"Geben Sie an wie viele Spalten Sie haben wollen";
    cin>>d;
    x=c-1;
    y=d-1;
    int Tabelle[x][y];
    for(Zeile = 0; Zeile <= x; Zeile++)
    {
    for(Spalte = 0; Spalte <= y; Spalte++)
    {
    Tabelle[Zeile][Spalte] = 0;
    }
    }

    for(Zeile = 0; Zeile <= x; Zeile++)
    {
    for(Spalte = 0; Spalte <= y; Spalte++)
    {
    cout << setw(8) << Tabelle[Zeile][Spalte];
    }
    cout << endl;
    }

    cout<<"Wie viele Schiffe möchten Sie einsetzen?" <<endl;
    cout<<"Sie können maximal 4 Schiffe einsetzen!!! " <<endl;
    cin>> z;

    switch(z)
    {
    case 1:
    cout<<"Geben Sie den Schiffskordinaten ein : " <<endl;
    cout<<"Geben Sie eine Zahl fuer X ein: ";
    cin>> Zeilex;
    cout<<"Geben Sie eine Zahl fuer Y ein: ";
    cin>> Spaltey;
    Ausgabe();
    /*Zeile=Zeilex-1;
    Spalte=Spaltey-1;
    Tabelle[Zeile][Spalte] = 1;
    //Ausgabe();

    for(Zeile = 0; Zeile <= x; Zeile++)
    {
    for(Spalte = 0; Spalte <= y; Spalte++)
    {
    cout << setw(8) << Tabelle[Zeile][Spalte];
    }
    cout << endl;
    }*/

    break;
    default:
    cout << "Sie könne nicht so viele Schiffe einsetzen!!!";
    }

    getch();
    return 0;
    }

    /*******************************************
    ******************************************/

    void Ausgabe(void)
    {
    Zeile=Zeilex-1;
    Spalte=Spaltey-1;
    Tabelle[Zeile][Spalte] = 1;

    for(Zeile = 0; Zeile <= x; Zeile++)
    {
    for(Spalte = 0; Spalte <= y; Spalte++)
    {
    cout << setw(8) << Tabelle[Zeile][Spalte];
    }
    cout << endl;
    }

    }



  • Uaargh...
    1. Code-tags
    2. Fehlerbeschreibung
    3.

    std::cout
    

    oder

    using namespace std;
    


  • ein böser fehler ist, dass du auf dem stack die arraygrößen nicht dynamisch eingeben kannst.
    mach konstanten und einen festen wert für die größe des spielfelds.

    im standard ist es so vereinbart (auch wenn manche compiler es anders halten)

    so long



  • Sieht OK aus.

    Gruß,

    Simon2.



  • elise schrieb:

    ein böser fehler ist, dass du auf dem stack die arraygrößen nicht dynamisch eingeben kannst.
    mach konstanten und einen festen wert für die größe des spielfelds.

    Alternativ könntest du dein Spielfeld per new[] anfordern (dann ist es wichtig, daß du es am Ende wieder sauber freigibst) oder einen (verschachtelten) vector verwenden.

    Außerdem sieht das Programm auch inhaltlich unfertig aus - die gesetzten Schiffe werden nicht im Spielfeld eingetragen, das eigentliche Spiel (gegenseitig Schiffe suchen und abschießen) und die Verteilung der gegnerischen Schiffe ist noch nicht eingebaut,...



  • Du solltest Deine For-Schleifen überdenken.
    Wenn ein Array n Elemente hat, dann ist das letzte Element n-1, da das erste Element bei 0 beginnt.


Anmelden zum Antworten