Witam,
jestem nowym adeptem sztuki programowania i można powiedzieć, że dopiero bawię się programowaniem, poznając możliwości i metody jakie posiadam. Zmagam się z zadaniem polegającym stworzeniu programu, który po wprowadzeniu do niego wysokości h stworzy taką tabelę w wierszu poleceń o danej ilości wierszy h, najwyżej równej 10.
Przykład dla h=3:
a |
b |
c |
d |
e |
XXX |
X |
XXX |
X |
XXXXX |
XXX |
XX |
XX |
XX |
XXX |
XXX |
XXX |
X |
XXX |
X |
Postanowiłem zrobić to za pomocą tworzenia odpowiednich tablic i wypisywania ich wierszami z odpowiednimi odstępami i udało mi się. Jedyny problem, którego przyczyny nie potrafię zidentyfikować związany jest z kolumną "b". Otóż przy niektórych wartościach wysokości h program jakby pomija przy wypisywaniu niektóre wiersze. Przy tym pusty wiersz czasem jest w odpowiadającym miejscu, a czasem nie.
Dla h=4 pomija pierwszy wiersz w kolumnie b
Dla h=6 pierwszy i drugi wiersz w kolumnie b
Dla h= 7 drugi wiersz w kolumnie b
Dla h=8 pierwszy wiersz w kolumnie b
Dla h=9 drugi wiersz w kolumnie b
Dla h=10 pierwszy i drugi wiersz w kolumnie b
Nie widzę tu żadnej zależności, tym bardziej, że po "wyizolowaniu" części kodu odpowiedzialnych tylko za kolumnę b, kolumna wypisuje się prawidłowo dla każdego b. Przypuszczam więc, że jest to problem związany z częścią wypisującą program? Będę bardzo wdzięczny za każdą pomoc :)
Oto mój kod:
#include <cstdio>
int h1, h, i, j, k, o, p;
char x;
char sp;
int main()
{
char x = 88; //88 w ACII to "X"
char sp = 0;
printf("wprowadz wysokosc: \t");
scanf("%d", &h1);
h = h1 - 1;
char tab_a[h][3]; //deklaracje tablic
char tab_b[h][h1];
char tab_c[h][h1];
char tab_d[h][h1];
char tab_e[h][h1];
//========================================================================////modul tworzenia tablic
for(i = 0; i <=h; i++) //macierz a
{
for(j = 0; j <=3; j++)
{
tab_a[i][j] = (x);
}
}
//========================================================================//
for(i = 0; i <=h; i++) //macierz b
{
for(j = 0; j <= i; j++)
{
tab_b[i][j] = (x);
}
for(j = i+1; j <= h; j++)
{
tab_b[i][j] = (sp);
}
}
//========================================================================//
for(i = 0; i <=h1; i++) //macierz c
{
for(j = 0; j < (h1-i); j++)
{
tab_c[i][j] = (x);
}
for(j = (h1-i); j < h1; j++)
{
tab_c[i][j] = (sp);
}
}
//========================================================================//
for(i = 0; i <=h; i++) //macierz d
{
for(j = 0; j < (h-i); j++)
{
tab_d[i][j] = (sp);
}
for(j = (h-i); j < h1; j++)
{
tab_d[i][j] = (x);
}
}
//========================================================================//
for(i = 0; i <=h; i++) //macierz e
{
for(j = 0; j <= i; j++)
{
tab_e[i][j] = (sp);
}
for(j = i+1; j <= h; j++)
{
tab_e[i][j] = (x);
}
}
//========================================================================////modul wyjscia
printf("\t a \t\t\t b \t\t\t c \t\t\t d \t\t\t e \n\n");
for(i = 0; i <=h; i++)
{
printf("\n \t");
//========================================================================// a
for(j = 0; j <=3; j++)
{
printf("%c", tab_a[i][j]);
}
//========================================================================// b
printf("\t\t\t");
for(j = 0; j <=h; j++)
{
printf("%c", tab_b[i][j]);
}
//========================================================================//c
printf("\t\t\t");
for(j = 0; j <=h; j++)
{
printf("%c", tab_c[i][j]);
}
//========================================================================//d
printf("\t\t\t");
for(j = 0; j <=h; j++)
{
printf("%c", tab_d[i][j]);
}
//========================================================================//e
printf("\t\t\t");
for(j = 0; j <=h; j++)
{
printf("%c", tab_e[i][j]);
}
for(j = 0; j <=h; j++)
{
printf("%c", tab_c[i][j]);
}
}
return 0;
}