• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Problem z błędem kodu.

0 głosów
230 wizyt
pytanie zadane 21 listopada 2020 w C i C++ przez Leśny Naleśnik Nowicjusz (120 p.)

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;
}

 

1 odpowiedź

0 głosów
odpowiedź 21 listopada 2020 przez overcq Pasjonat (22,630 p.)

Nie sprawdzałem wszystkiego, ale wychodzisz poza zakres tablicy.

Po zmianie na:

    char tab_a[h1][3];     //deklaracje tablic
    char tab_b[h1][h1];
    char tab_c[h1][h1];
    char tab_d[h1][h1];
    char tab_e[h1][h1];

oraz linii 43. na

    for(i = 0; i <=h; i++)      //macierz c

działa.

komentarz 21 listopada 2020 przez Leśny Naleśnik Nowicjusz (120 p.)
Faktycznie to był problem. Wielkie dzięki!

Podobne pytania

–3 głosów
1 odpowiedź 558 wizyt
pytanie zadane 6 października 2020 w C i C++ przez Jakub495 Nowicjusz (120 p.)
0 głosów
3 odpowiedzi 821 wizyt
pytanie zadane 11 listopada 2016 w PHP przez Q_Nick Mądrala (5,010 p.)
0 głosów
3 odpowiedzi 633 wizyt
pytanie zadane 30 września 2021 w Offtop przez xPUSTYx Użytkownik (740 p.)

93,631 zapytań

142,553 odpowiedzi

323,056 komentarzy

63,137 pasjonatów

Advent of Code 2025

Top 15 użytkowników

  1. 2658p. - dia-Chann
  2. 2630p. - DziarnowskiJ
  3. 2478p. - rucin93
  4. 2361p. - Łukasz Piwowar
  5. 2340p. - CC PL
  6. 2317p. - raydeal
  7. 2300p. - Adrian Wieprzkowicz
  8. 2117p. - Łukasz Eckert
  9. 2082p. - Michal Drewniak
  10. 1957p. - Maurycy W
  11. 1885p. - robwarsz
  12. 1811p. - rafalszastok
  13. 1600p. - Rafał Trójniak
  14. 1588p. - Tomasz Bielak
  15. 1494p. - ssynowiec
Szczegóły i pełne wyniki

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...