Chcę zrobić tablicę [15][15]. Jednak nie wiem jak się za to zabrać, ponieważ chcę aby każde wyrażenie było w "ramce", by powstała tabela. Zbiór wartości tej tablicy wynosi od 0 do 224. Bardzo proszę o pomoc.
ale jak zrobić by powstała tabela?
Jaka tabela? Narysuj o co ci chodzi bo trudno sobie to wyobrazić.
https://github.com/spartanPAGE/spartan-snake-implementation/blob/master/include/matrix.hpp
int main(){
Matrix<int> m(15, 15);
iota(begin(m), end(m), 0);
for(size_t y = 0; y < m.height(); ++y){
for(size_t x = 0; x < m.width(); ++x){
cout << m[y][x] << '\t';
}
cout << '\n';
}
}
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
90 91 92 93 94 95 96 97 98 99 100 101 102 103 104
105 106 107 108 109 110 111 112 113 114 115 116 117 118 119
120 121 122 123 124 125 126 127 128 129 130 131 132 133 134
135 136 137 138 139 140 141 142 143 144 145 146 147 148 149
150 151 152 153 154 155 156 157 158 159 160 161 162 163 164
165 166 167 168 169 170 171 172 173 174 175 176 177 178 179
180 181 182 183 184 185 186 187 188 189 190 191 192 193 194
195 196 197 198 199 200 201 202 203 204 205 206 207 208 209
210 211 212 213 214 215 216 217 218 219 220 221 222 223 224
lub
int main(){
Matrix<int> m(15, 15);
iota(begin(m), end(m), 0);
for(size_t y = 0; y < m.height(); ++y){
for(size_t x = 0; x < m.width(); ++x){
cout << m[x][y] << '\t';
}
cout << '\n';
}
}
0 15 30 45 60 75 90 105 120 135 150 165 180 195 210
1 16 31 46 61 76 91 106 121 136 151 166 181 196 211
2 17 32 47 62 77 92 107 122 137 152 167 182 197 212
3 18 33 48 63 78 93 108 123 138 153 168 183 198 213
4 19 34 49 64 79 94 109 124 139 154 169 184 199 214
5 20 35 50 65 80 95 110 125 140 155 170 185 200 215
6 21 36 51 66 81 96 111 126 141 156 171 186 201 216
7 22 37 52 67 82 97 112 127 142 157 172 187 202 217
8 23 38 53 68 83 98 113 128 143 158 173 188 203 218
9 24 39 54 69 84 99 114 129 144 159 174 189 204 219
10 25 40 55 70 85 100 115 130 145 160 175 190 205 220
11 26 41 56 71 86 101 116 131 146 161 176 191 206 221
12 27 42 57 72 87 102 117 132 147 162 177 192 207 222
13 28 43 58 73 88 103 118 133 148 163 178 193 208 223
14 29 44 59 74 89 104 119 134 149 164 179 194 209 224
Takie coś, niestety coś mi nie wychodzi. W tym programie chodzi o to, zeby w poleceniu wpisać wartoścć(np.54) i wtedy zamiast 54 wyskakuje "X" lub "O". Niestety zamiast tego wyskakuje 79 lub 88 a cały rząd przesuwa się w lewo bądź w prawo.
C++
masz tablicę intów? bo jak tak to wpisujesz to komórki kod ascii X i O i potem ten kod wyświetlasz... na tablicy intów w taki sposób tego nie zrobisz...
Moim zdaniem robisz to źle. Jakbym ja miał to napisać to trzymałbym tablicę nie intów, nie charow. Ale tablicę struktur np takich:
struct Pole {
int Numer;
char Gracz;
};
Wtedy podczas wyświetlania tablicy na ekranie musisz sprawdzać czy Gracz jest ustawiony i wyświetlać gracza. W przeciwnym razie numer pola.
Wydaje mi się że zrozumiałem o co ci biega:
#include <cstdio>
using namespace std;
enum WhatInCell {wicEmpty,wicX,wicO};
const char *WhatInCellNames[]={"%3d "," X "," O "};
const char Choice[]="Wybor: ";
const char ErrChoice[]="Niepoprawny wybor. 0-koniec; 1..255-zmiana;\n\n%s";
constexpr unsigned size=15;
int main()
{
WhatInCell tb[size*size]={wicEmpty};
for(WhatInCell now=wicX;;now=(WhatInCell)(wicX+wicO-now))
{
printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nRuch:%s\n",WhatInCellNames[now]);
for(unsigned i=0,y=0;y<size;++y,printf("\n")) for(unsigned x=0;x<size;++x,++i) printf(WhatInCellNames[tb[i]],i+1);
unsigned ch;
printf(Choice);
while((scanf("%u",&ch)!=1)||(ch>size*size)||((ch)&&(tb[ch]!=wicEmpty))) printf(ErrChoice,Choice);
if(!ch) return 0;
tb[ch-1]=now;
}
}