Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] stworzenie planszy za pomocą tablicy

Ostatnio zmodyfikowano 2014-11-24 14:34
Autor Wiadomość
kevindurant95
Temat założony przez niniejszego użytkownika
[C++] stworzenie planszy za pomocą tablicy
» 2014-11-22 13:30:26
Witam, mam do zrobienia planszę 6x6, która wygląda tak: http://oi62.tinypic.com/2edvyw5.jpg . Jak zrobić ją za pomocą tablic, tak aby potem po wpisaniu pola przykładowo A5, tylko to konkretne pole wypełniało się jakimś symbolem?
P-121147
NopeDotAvi
» 2014-11-22 13:49:04
No offence, ale gdybyś wczoraj o tej 21 (wtedy odpisałeś w poprzednim temacie) zaczął się uczyć o tablicach jedno i wieluwymiarowych był byś w stanie to zrobić.
Pokaż kod i powiedz z czym masz problem, kod wstaw w odpowiednie znaczniki.
P-121148
kevindurant95
Temat założony przez niniejszego użytkownika
» 2014-11-22 14:08:10
C/C++
#include <cstdlib>
#include <iostream>
#include <iomanip>

using namespace std;

void rysuj_plansze()
{
    for( int i = 0; i < 6; i++ )
    {
        cout << " +-----+-----+-----+-----+-----+-----+" << endl;
        cout << " |" << setw( 6 ) << "|" << setw( 6 ) << "|" << setw( 6 ) << "|" << setw( 6 ) << "|" << setw( 6 ) << "|" << setw( 6 ) << "|" << endl;
        cout << i + 1 << "|" << setw( 6 ) << "|" << setw( 6 ) << "|" << setw( 6 ) << "|" << setw( 6 ) << "|" << setw( 6 ) << "|" << setw( 6 ) << "|" << endl;
    }
    cout << " +-----+-----+-----+-----+-----+-----+" << endl;
    for( int i = 0; i < 6; i++ )
         cout << setw( 6 ) << i + 1;
   
    cout << endl << endl;
}

void wybierz_pole()
{
    char znak;
    int numer_wiersza;
    int numer_kolumny;
    cout << "podaj wiersz: ";
    cin >> numer_wiersza;
    cout << "podaj kolumne: ";
    cin >> numer_kolumny;
    if( numer_kolumny = 1 )
    {
        znak = 'A';
    }
    if( numer_kolumny = 2 )
    {
        znak = 'B';
    }
    if( numer_kolumny = 3 )
    {
        znak = 'C';
    }
    if( numer_kolumny = 4 )
    {
        znak = 'D';
    }
    if( numer_kolumny = 5 )
    {
        znak = 'E';
    }
    if( numer_kolumny = 6 )
    {
        znak = 'F';
    }
    if( numer_wiersza >= 1 and numer_wiersza <= 6 and numer_kolumny >= 1 and numer_kolumny <= 6 )
         cout << "wybrane pole to: " << znak << numer_wiersza << endl;
    else
         cout << "takie pole nie istnieje" << endl;
   
}




int main()
{
    rysuj_plansze();
    wybierz_pole();
    system( "pause" );
    return 0;
}
P-121153
kevindurant95
Temat założony przez niniejszego użytkownika
» 2014-11-22 14:46:43
Po pierwsze jak wpisuje np. pole 14, to wyświetla mi się za każdym razem pole F1. tzn., niezależnie co wpiszę jako numer kolumny, po konwersji na znak wyświetla mi 'F'. Drugi mój problem jest tego typu, że nie wiem jak połączyć ze sobą tablicę narysowaną z wpisaniem do niej symbolu.
P-121164
NopeDotAvi
» 2014-11-22 15:36:13
operator
=
 to operator przypisania. Tym właśnie operatorem sprawdzasz warunki, a operator sprawdzania to:
==
 (dwa razy =), musisz zmienić jeden znak równości na 2 w każdym z tych ifów.

Co do wpisywania znaku to najlepiej gdybyś miał tablicę dwuwymiarową.
char plansza[ 6 ][ 6 ];
Tak się ja tworzy, tylko przy tablicach trzeba pamiętać, że są numerowane od 0.
Czyli gdy masz taką tablicę jak podałem wyżej to jej zbiorem liczb całkowitych nie jest
< 1, 6 >
 tylko
< 0, 5 >
Odwołuje się w sposób:
C/C++
plansza[ 0 ][ 0 ]; //tak na przyklad na pierwszy element
.
Najlepiej poczytaj o tablicach i spróbuj zmienić swój kod na taki z tablicami, wtedy przyjdź to Ci powiem co dalej powinieneś zrobić by po wpisaniu pola pojawiał się tam znaczek.

Wtf, cos sie chyba popsulo na forum.
P-121168
kevindurant95
Temat założony przez niniejszego użytkownika
» 2014-11-22 23:02:22
Mam teraz coś takiego:
C/C++
#include <cstdlib>
#include <iostream>
#include <iomanip>

using namespace std;
const int MAX_WIERSZ = 6;
const int MAX_KOLUMNA = 6;
char board[ MAX_WIERSZ ][ MAX_KOLUMNA ];
int numer_wiersza;
int numer_kolumny;
/*
void rysuj_plansze()
{
     for (int i=0;i<6;i++)
     {
     cout << " +-----+-----+-----+-----+-----+-----+"<<endl;
     cout << " |"<< setw(6) <<"|" << setw(6) <<"|" << setw(6) <<"|"<< setw(6) <<"|"<< setw(6) <<"|"<< setw(6) <<"|"<<endl;
     cout << i+1 <<"|"<< setw(6) <<"|" << setw(6) <<"|" << setw(6) <<"|"<< setw(6) <<"|"<< setw(6) <<"|"<< setw(6) <<"|"<<endl;
     }
     cout << " +-----+-----+-----+-----+-----+-----+"<<endl;
     cout << "    A     B     C     D     E     F   "<<endl;
     cout << endl << endl;
}
*/
void inicjuj_plansze()
{ for( int i = 0; i < MAX_WIERSZ; i++ ) {
        for( int j = 0; j < MAX_KOLUMNA; j++ )
             board[ i ][ j ] = ' ';
       
    }
}
void rysuj_plansze()
{
    for( int i = 0; i < MAX_WIERSZ; i++ )
    { cout << " +-----+-----+-----+-----+-----+-----+" << endl;
        cout << " |";
        for( int j = 0; j < MAX_KOLUMNA; j++ )
             cout << "  " << board[ i ][ j ] << "  |";
       
        cout << endl;
        cout << i + 1 << "|" << setw( 6 ) << "|" << setw( 6 ) << "|" << setw( 6 ) << "|" << setw( 6 ) << "|" << setw( 6 ) << "|" << setw( 6 ) << "|" << endl;
    }
    cout << " +-----+-----+-----+-----+-----+-----+" << endl;
    cout << "    A     B     C     D     E     F   " << endl;
    cout << endl << endl;
}


void wybierz_pole()
{
    char znak;
    //int numer_wiersza;
    //int numer_kolumny;
    cout << "podaj wiersz: ";
    cin >> numer_wiersza;
    cout << "podaj kolumne (A=1, B=2, C=3, D=4, E=5, F=6): ";
    cin >> numer_kolumny;
    if( numer_kolumny == 1 )
    {
        znak = 'A';
    }
    if( numer_kolumny == 2 )
    {
        znak = 'B';
    }
    if( numer_kolumny == 3 )
    {
        znak = 'C';
    }
    if( numer_kolumny == 4 )
    {
        znak = 'D';
    }
    if( numer_kolumny == 5 )
    {
        znak = 'E';
    }
    if( numer_kolumny == 6 )
    {
        znak = 'F';
    }
   
    if( numer_wiersza >= 1 and numer_wiersza <= 6 and numer_kolumny >= 1 and numer_kolumny <= 6 )
         cout << "wybrane pole to: " << znak << numer_wiersza << endl;
    else
         cout << "takie pole nie istnieje" << endl;
   
}

void rysuj_kamien()
{
    board[ numer_wiersza - 1 ][ numer_kolumny - 1 ] = '#';
    cout << board[ MAX_WIERSZ ][ MAX_KOLUMNA ];
}






int main()
{
    inicjuj_plansze();
    rysuj_plansze();
    wybierz_pole();
    rysuj_kamien();
    system( "pause" );
    return 0;
}

Plansza jest wypisywana poprawnie, tablica jest stworzona, nadal natomiast nie wiem, jak umieścić w niej '#'. Jakieś sugestie?
P-121200
Tomek_z_W11
» 2014-11-24 14:34:39
W funkcji rysuj_kamien piszesz
cout << board[ max ][ max ]
, czyli board[6][6], a takie pole nie istnieje, jeżeli masz na myśli pole "ostatnie" zarówno w pionie i poziomie, to napisz
board[ 5 ][ 5 ]
, co do wpisywania wartości, napisz na przykład
board[ 2 ][ 3 ] = 'A'
, pamiętaj, żeby ta linijka znajdowała się za funkcją inicjuj_plansze, bo z tego co widze, to w tej funkcji pod każdą komórkę tablicy przypisujesz spację.

Na przykład:

C/C++
int main()
{
    inicjuj_plansze();
   
    board[ 0 ][ 0 ] = 'Z';
    board[ 0 ][ 1 ] = 'A';
   
    rysuj_plansze();
    wybierz_pole();
    rysuj_kamien();
    system( "pause" );
    return 0;
}
P-121270
« 1 »
  Strona 1 z 1