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

Uniwersalna tablica [x] [y] - potrzebuję pomocy.

0 głosów
389 wizyt
pytanie zadane 23 stycznia 2018 w C i C++ przez Szczurk3y Nowicjusz (200 p.)
edycja 23 stycznia 2018

Witam, potrzebuję pomocy - potrzebuję do mojego programu, który piszę, zrobić uniwersalną tablicę 2 wymiarową. Nie wiem co nie działa i nie wiem dlaczego, po podaniu wartości dla kolumny program się zawiesza i wyłącza. Z góry dziękuję za wyjaśnienie problemu :)
 

#include <iostream>
#include <Windows.h>
using namespace std;
int wiersz, kolumny;
int wspolzednaXweza, wspolzednaYweza;
int wspolzednaXjedzenia, wspolzednaYjedzenia;
int x,y;
int main() {
    cout << "Podaj dla wiersz: " << endl;
    cin >> wiersz;
    cout << "Podaj dla kolumny: " << endl;
    cin >> kolumny;
    char plansza [x] [y]; // gdy deklaruje char plansza  [x][y] na początku wyskakuje [Error] 'plansza' was not declared in this scope.
    for (int x=wiersz; x>=0; x--) {
        for (int y=kolumny; y>=0; y--) {
            plansza [x] [y] = 'p';  // p = pole puste
        }
    }
}

 

komentarz 23 stycznia 2018 przez niezalogowany

Na przyszłość: kod wrzucamy w przeznaczony do tego bloczek {...} code

komentarz 23 stycznia 2018 przez Szczurk3y Nowicjusz (200 p.)
okey
komentarz 24 stycznia 2018 przez j23 Mędrzec (195,220 p.)

Po co ten <windows.h>?

komentarz 24 stycznia 2018 przez Szczurk3y Nowicjusz (200 p.)
Usunąłem część kodu, gdzie potrzebowałem tej biblioteki. Zapomniałem jej samej usunąć :P Oczywiście, w tym pokazanym kodzie nic nie robi ;)

2 odpowiedzi

0 głosów
odpowiedź 23 stycznia 2018 przez Paweł Nąckiewicz Nałogowiec (48,990 p.)
wybrane 26 stycznia 2018 przez Szczurk3y
 
Najlepsza
Wydaje mi się, że problem może być w tym ze zmienna x i y nie posiada wartości.

Ty pewnie chciałeś napisać coś w takim stylu:

char plansza [wiersz] [kolumny]
0 głosów
odpowiedź 23 stycznia 2018 przez niezalogowany

Z tego co się orientuję, to ten zapis nie jest do końca legalny wg standardu. W pełni poprawnie powinieneś zaalokować pamięć dynamicznie:

// <-wczytane x,y
char **plansza = new char*[x];
for(int i=0; i<x; ++i) {
  plansza[i] = new char[y];
}

// robisz z nią co chcesz
...

// usuwasz z pamięci
for(int i=0; i<x; ++i) {
  delete[] plansza[i];
}
delete[] plansza;

 

komentarz 24 stycznia 2018 przez Szczurk3y Nowicjusz (200 p.)
dzięki za pomoc :)

Podobne pytania

0 głosów
2 odpowiedzi 270 wizyt
pytanie zadane 28 marca 2020 w C i C++ przez dominik195k Obywatel (1,030 p.)
0 głosów
1 odpowiedź 3,040 wizyt
0 głosów
2 odpowiedzi 533 wizyt

93,733 zapytań

142,669 odpowiedzi

323,287 komentarzy

63,294 pasjonatów

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

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...