#10 tomino
noo, na to je nejlepší si udělat pattern, který to bude řídit
int main()
{
int arr[5][5]; // matice 5x5
// aktuální indexy (x,y) u kterých se má změnit znak
const int pattern[][2] =
{
{0,0}, {1,0}, {2,0}, {3,0}, {4,0},
{4,1}, {4,2}, {4,3}, {4,4},
{3,4}, {2,4}, {1,4}, {0,4},
{0,3}, {0,2}, {0,1}, {0,0}
};
// délka pattern
const int patternLength = sizeof(pattern) / sizeof(int) / 2;
// projde všechny prvky v patternu
for (int n = 0; n < patternLength; ++n)
{
system("cls"); // smaže konzoli (bylo by lepší řešit jinak než přes system(..))
for (int i = 0; i < 5; ++i)
{
for (int j = 0; j < 5; ++j)
{
*(*(arr + i) + j) = ' ';
if (i == 0 || j == 0 || i == 4 || j == 4)
{
*(*(arr + i) + j) = '.'; // po obvodu budou tečky
// pokud se bude schodovat pattern s aktuálním indexem, tak změní tečku na "x"
if (*(*(pattern + n) + 0) == j && *(*(pattern + n) + 1) == i)
*(*(arr + i) + j) = 'x';
}
cout << ' ' << (char)*(*(arr + i) + j);
}
cout << endl;
}
_sleep(100); // uspí vlákno na 100ms při každém průchodu v patternu
}
return EXIT_SUCCESS;
}
nijak jsem to neoptimalizoval, tohle řešení je jen na ukázku, lepší by bylo použít klasický pole a vytvořit si funkce pro jednotlivé operace, ale to už je na tobě