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

[C++] Wypełnianie ramek tablicą dwuwymiarową.

Ostatnio zmodyfikowano 2014-11-03 14:28
Autor Wiadomość
Malina94
Temat założony przez niniejszego użytkownika
[C++] Wypełnianie ramek tablicą dwuwymiarową.
» 2014-11-03 11:11:46
Witam! W jaki sposób mogę poniższą ramkę wypełnić tablicą dwuwymiarową 9x9 (w miejsca kropek odpowiednie liczby/znaki?
Np. przy wczytaniu takiej tablicy:
 
C/C++
A1e2A3A4A
B5f6B7B8B
CaGbCcCdC
DDDDDDDDD
EEEEEEEEE
FFFFFFFFF
GGGGGGGGG
HHHHHHHHH
IIIIIIIII

chciałabym uzyskać coś takiego:
C/C++
-------------------
| A1e | 2A3 | A4A |
| B5f | 6B7 | B8B |
| CaG | bCc | CdC |
-------------------
| DDD | DDD | DDD |
| EEE | EEE | EEE |
| FFF | FFF | FFF |
-------------------
| GGG | GGG | GGG |
| HHH | HHH | HHH |
| III | III | III |
-------------------

Kombinowałam już z różnymi warunkami, ale nieskutecznie. A może źle podeszłam do problemu...


C/C++
#include <iostream>

using namespace std;

#define RAMKA 13

int main() {
    for( int i = 0; i < RAMKA; i++ ) {
        for( int j = 0; j < RAMKA; j++ ) {
            if( i == 0 && j == 0 ) {
                cout <<( char ) 218; //naroznik
            } else if(( i == 0 && j > 0 && j < RAMKA - 1 ) ||( i == RAMKA - 1 && j > 0 && j < RAMKA - 1 ) ) {
                cout <<( char ) 196; //linia gora i dol cienka
            } else if( i == 0 && j == RAMKA - 1 ) {
                cout <<( char ) 191; //naroznik
            } else if(( i > 0 && i < RAMKA - 1 && j == 0 ) ||( i > 0 && i < RAMKA - 1 && j == RAMKA - 1 ) ) { //pionowe cienkie zewnetrzne
                cout <<( char ) 179;
            } else if( i == RAMKA - 1 && j == 0 ) {
                cout <<( char ) 192; //naroznik
            } else if( i == RAMKA - 1 && j == RAMKA - 1 ) {
                cout <<( char ) 217; // naroznik
            } else if(( i == 4 && j == 4 ) ||( i == 4 && j == 8 ) ||( i == 8 && j == 4 ) ||( i == 8 && j == 8 ) ) {
                cout <<( char ) 206; //krzyzyki
            } else if(( i > 0 && i < 4 && j == 4 ) ||( i > 0 && i < 4 && j == 8 ) ||( i > 4 && i < 8 && j == 4 ) ||( i > 4 && i < 8 && j == 8 ) ||( i > 8 && i < RAMKA - 1 && j == 4 ) ||( i > 8 && i < RAMKA - 1 && j == 8 ) ) {
                cout <<( char ) 186; //pionowe wewnetrzne
            } else if(( i == 4 && j > 0 && j < 4 ) ||( i == 4 && j > 4 && j < 8 ) ||( i == 4 && j > 8 && j < RAMKA - 1 ) ||( i == 8 && j > 0 && j < 4 ) ||( i == 8 && j > 4 && j < 8 ) ||( i == 8 && j > 8 && j < RAMKA - 1 ) ) {
                cout <<( char ) 205; //poziome wewnetrzne
            } else {
               
                cout << '.';
            }
        }
        cout << endl;
    }
    return 0;
}
P-119902
Atexor
» 2014-11-03 13:54:35
O takie coś chodziło?

http://i.imgur.com/cRT9mb0.jpg

Tak, wiem że za dużo cout'ów, ale już mi się nie chciało robić pętli. Jak chcesz możesz poprawić.
Pozdrawiam

P.S. Sudoku :)?

C/C++
#include <cstdlib>
#include <iostream>

using namespace std;

int main()
{;
    int m = 0;
    char tab[ 81 ] = { 'A', '1', 'e', '2', 'A', '3', 'A', '4', 'A', 'B', '5', 'f', '6', 'B', '7', 'B', '8', 'B', 'C', 'a', 'G',
        'b', 'C', 'c', 'C', 'd', 'C', 'D', 'D', 'D', 'D', 'D', 'D', 'D', 'D', 'D', 'E', 'E', 'E', 'E', 'E', 'E', 'E', 'E', 'E', 'F', 'F', 'F',
        'F', 'F', 'F', 'F', 'F', 'F', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'I', 'I', 'I', 'I', 'I', 'I', 'I', 'I', 'I' };
   
    cout << endl << endl;
   
    cout <<( char ) 218; cout <<( char ) 196; cout <<( char ) 196; cout <<( char ) 196; cout <<( char ) 196; cout <<( char ) 196; cout <<( char ) 196;
    cout <<( char ) 196; cout <<( char ) 196; cout <<( char ) 196; cout <<( char ) 196; cout <<( char ) 196; cout <<( char ) 196;
    cout <<( char ) 196; cout <<( char ) 196; cout <<( char ) 196; cout <<( char ) 196; cout <<( char ) 196; cout <<( char ) 196;
    cout <<( char ) 196; cout <<( char ) 196; cout <<( char ) 196; cout <<( char ) 196; cout <<( char ) 196;
    cout <<( char ) 191 << endl;
   
   
    for( int i = 1; i <= 9; i++ )
    {
        if( i == 4 || i == 7 )
        {
            cout <<( char ) 179; cout <<( char ) 205; cout <<( char ) 205; cout <<( char ) 205;
            cout <<( char ) 205; cout <<( char ) 205; cout <<( char ) 205; cout <<( char ) 205;
            cout <<( char ) 206; cout <<( char ) 205; cout <<( char ) 205; cout <<( char ) 205;
            cout <<( char ) 205; cout <<( char ) 205; cout <<( char ) 205; cout <<( char ) 205;
            cout <<( char ) 206; cout <<( char ) 205; cout <<( char ) 205; cout <<( char ) 205;
            cout <<( char ) 205; cout <<( char ) 205; cout <<( char ) 205; cout <<( char ) 205; cout <<( char ) 179 << endl;
        }
       
        cout <<( char ) 179;
       
        for( int j = 1; j <= 9; j++ )
        {
            if( j == 3 || j == 6 )
                 cout << " " << tab[ m ] << " " <<( char ) 186;
            else if( j == 9 )
                 cout << " " << tab[ m ] << " ";
            else
                 cout << " " << tab[ m ];
           
            m++;
        }
        cout <<( char ) 179 << endl;
    }
   
    cout <<( char ) 192; cout <<( char ) 196; cout <<( char ) 196; cout <<( char ) 196; cout <<( char ) 196; cout <<( char ) 196;
    cout <<( char ) 196; cout <<( char ) 196; cout <<( char ) 196; cout <<( char ) 196; cout <<( char ) 196; cout <<( char ) 196;
    cout <<( char ) 196; cout <<( char ) 196; cout <<( char ) 196; cout <<( char ) 196; cout <<( char ) 196; cout <<( char ) 196;
    cout <<( char ) 196; cout <<( char ) 196; cout <<( char ) 196; cout <<( char ) 196; cout <<( char ) 196; cout <<( char ) 196;
    cout <<( char ) 217 << endl << endl << endl << endl << endl;
   
    system( "PAUSE" );
    return 0;
}
P-119908
Malina94
Temat założony przez niniejszego użytkownika
» 2014-11-03 14:02:37
Dokładnie! Tak, sudoku, a dokładniej początki projektu na zaliczenie. :)
Hmm... jakoś nie myślałam o użyciu tablicy jednowymiarowej.
P-119909
Atexor
» 2014-11-03 14:22:59
W sumie to te dane co podałaś, przekształciłem na tablicę jednowymiarową, aby wiedzieć "jakie wymiary ma mieć" ramka zapełniając ją danymi.

Tablice (ew. vector'y) są do tego najlepsze, aby określać że np. w pionowej kolumnie 3 są dwie takie same cyfry (czyli błąd). Operowanie na 81 zmiennych to masa roboty ;)

Najlepiej użyj dwuwymiarowych tablic tab[ x ][ y ]

Powodzenia.
P-119913
Malina94
Temat założony przez niniejszego użytkownika
» 2014-11-03 14:28:16
No, postaram się to przekształcić na dwuwymiarową.
Niestety, nie ma tak łatwo, nie mogę używać biblioteki STL :) A z tego co widziałam, to w niej są dostępne vectory
P-119915
« 1 »
  Strona 1 z 1