Zdravím,
ve škole jsem měl za úkol napsat podmínku (zbytek programu byl předepsaný), která do dvourozměrného pole znaků o N*N prvcích vepíše hvězdičky na řádky, jejichž index je dělitelný třemi nebo pěti, ale není dělitelný třemi i pěti zároveň. Přišel jsem na 3 způsoby řešení, které vedou ke správnému výsledku, možná i víc, ale teď si vzpomínám jenom na ty 3. Každé z těch řešení bylo označeno za špatné a dostal jsem 0 bodů z 20 možných. Co je na tom špatně a jak byste to napsali vy?
#include <iostream>
using namespace std;
const int N = 8;
char Grid[N][N];
void ClearGrid()
{
for(int i = 0; i < N; i++)
for(int j = 0; j < N; j++)
Grid[i][j] = ' ';
}
void Star(const int Row, const int Column)
{
if (0 <= Row && Row < N && 0 <= Column && Column < N)
Grid[Row][Column] = '*';
else
cout << "Row or column is out of valid range!" << endl;
}
void PrintGrid()
{
for(int i = 0; i < N; i++)
{
for(int j = 0; j < N; j++)
cout << Grid[i][j];
cout << endl;
}
cout << endl;
}
void main()
{
ClearGrid();
for(int i=0; i<N; i++)
{
for(int j=0; j<N; j++)
{
if ((i % 3 == 0 || i % 5 == 0) && (i % 3 != 0 || i % 5 != 0)) // moje 1. reseni
// moje 2. reseni: if ((i % 3 == 0 && i % 5 != 0) || (i % 5 == 0 && i % 3 != 0))
// moje 3. reseni: if ((i % 3 == 0 || i % 5 == 0) && i % 15 != 0)
Star(i, j);
}
}
PrintGrid();
}