otazka ohladom C++ - viacrozmerne pole

Programovacie jazyky, rady, poradňa...
neppo
Light Professional
Light Professional
Používateľov profilový obrázok
Príspevky: 774
Registrovaný: 09 jún 2005, 15:33

otazka ohladom C++ - viacrozmerne pole

Príspevok od používateľa neppo »

ked sem zadam napr. za x=3 a y=5 a do pola [0][0] dam namiesto cisla znak + alebo - dostanem vypis ako je vidiet v prilohe... preco nevyhodilo error ale zadalo hodnoty ak dalo ?

Kód: Vybrať všetko

#include <iostream>

using namespace std;

int main()
{
    unsigned short int x,y;
    cout << "Zadajte rozmery pola: ";
    cin >> x;
    cin >> y;

    int pole[x][y];
    
    for (int i=0; i<x; i++)
    {
        for (int j=0; j<y; j++)
        {
            cout << "pole[" << i << "][" << j << "]:";
            cin >> pole[i][j];
        }
    }
    
    cout << "\n\n";
    
    for (int i=0; i<x; i++)
    {
        for (int j=0; j<y; j++)
        {
            cout << "pole[" << i << "][" << j << "]: " << pole[i][j] << "\n";
        }
    }
    cout << endl;
    system("PAUSE");
    return EXIT_SUCCESS;
}
Prílohy
vypis.PNG
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

1) loool int pole[x][y]; to je čo za debilinu? :D
2) pole sa vytvára pri kompilácii nie za behu programu, preto musíš vedieť presne aké to pole bude. Tým pádom, sa pri kompilácii vytvorí pole veľkosti x,y (sú tam nejaké hodnoty alebo nula). Vytvorí ti také pole. Potom čítaš hodnoty z toho pola, ale keďže to pole je možno menšie (zrejme 0x0) tak čítaš nejakého hodnoty z pamäte. C++ nekontroluje či je to pamäť ktorú si alokoval alebo nie. Ak to chceš dynamicky, musíš to dať ako int **pole = new int[x][y]; (asi)
neppo
Light Professional
Light Professional
Používateľov profilový obrázok
Príspevky: 774
Registrovaný: 09 jún 2005, 15:33

Príspevok od používateľa neppo »

audiotrack napísal:1) loool int pole[x][y]; to je čo za debilinu? :D
2) pole sa vytvára pri kompilácii nie za behu programu, preto musíš vedieť presne aké to pole bude. Tým pádom, sa pri kompilácii vytvorí pole veľkosti x,y (sú tam nejaké hodnoty alebo nula). Vytvorí ti také pole. Potom čítaš hodnoty z toho pola, ale keďže to pole je možno menšie (zrejme 0x0) tak čítaš nejakého hodnoty z pamäte. C++ nekontroluje či je to pamäť ktorú si alokoval alebo nie. Ak to chceš dynamicky, musíš to dať ako int **pole = new int[x][y]; (asi)
s C++ len zacinam... 1) takto to maje v knihe z ktorej sa ucim... ja sa do toho este dobre nerozumiem
2) dik za odpoved... len ma to zaujimalo
mozete :lock:
delpietro
Novice
Novice
Príspevky: 3
Registrovaný: 29 dec 2007, 19:01

Príspevok od používateľa delpietro »

:D ta kniha musi byt riadny brak ... zober si C-eckarsku bibliu od P. Herouta a hned budes mat pekny zaklad do jazyka C :wink:
... a k tomu polu. Ak chces mat pole, ktore setri miesto v pamati, tak si nastuduj tvorbu dynamickeho pola.
Napísať odpoveď