Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ Príspevkov: 15 ] 
AutorSpráva
Offline

Zmazaný užívateľ
Zmazaný užívateľ
Obrázok užívateľa
Príspevok NapísalOffline : 31.03.2017 16:17

Zdravím, mám maticu matica[R,S] (dvojrozmerné pole), ktorej veľkosť by som chcel zadať z klávesnice. Keďže veľkosti musia byť konštanty, tak som skúsil:

int A, B;
cin >> A, B;
const int R = A, S = B;

Ale tadiaľ cesta nevedie. :D A ešte by ma zaujímalo, prečo musia byť veľkosti R a S deklarované na samom začiatku kódu mimo akejkoľvek funkcie vrátane main(), aby sa dala matica poslať do parametrov funkcií. Vopred ďakujem za pomoc.


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 15.06.14
Prihlásený: 26.03.24
Príspevky: 17930
Témy: 142
Bydlisko: Bratislava
Príspevok NapísalOffline : 31.03.2017 16:20

http://www.cplusplus.com/forum/articles/416/







_________________
ITX >>> ATX
Offline

Zmazaný užívateľ
Zmazaný užívateľ
Obrázok užívateľa
Príspevok Napísal autor témyOffline : 31.03.2017 16:40

Bez dynamického alokovania to nepôjde?


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 15.06.14
Prihlásený: 26.03.24
Príspevky: 17930
Témy: 142
Bydlisko: Bratislava
Príspevok NapísalOffline : 31.03.2017 16:40

nie







_________________
ITX >>> ATX
Offline

Zmazaný užívateľ
Zmazaný užívateľ
Obrázok užívateľa
Príspevok Napísal autor témyOffline : 31.03.2017 18:48

Prečo?


Offline

Skúsený užívateľ
Skúsený užívateľ
C++ načítanie veľkosti matice z klávesnice

Registrovaný: 11.01.09
Prihlásený: 28.03.24
Príspevky: 1385
Témy: 9
Bydlisko: Hrinova
Príspevok NapísalOffline : 31.03.2017 20:46

Lebo konstanta je nieco, co mas dane uz v dobe kompilacie programu a ako sam pises:
Citácia:
ktorej veľkosť by som chcel zadať z klávesnice


Dynamicke polia su presne na tento ucel, ked v dobe navrhu programu nevies, kolko miesta v pamati potrebujes pre nejaku premennu.







_________________
Ak potrebujete pomoc s diagnostikou/opravou vasej elektroniky ( notebook, motherboard, GPU, a ine ), kontaktujte ma cez SS.
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 28.04.11
Prihlásený: 28.03.24
Príspevky: 296
Témy: 27
Bydlisko: Martin/Brno
Príspevok NapísalOffline : 31.03.2017 21:20

Styracoz píše:
A ešte by ma zaujímalo, prečo musia byť veľkosti R a S deklarované na samom začiatku kódu mimo akejkoľvek funkcie vrátane main(), aby sa dala matica poslať do parametrov funkcií. Vopred ďakujem za pomoc.


Suvisi to s tym, ze ked deklarujes premennu v nejakej funkcii napr main, vytvori sa len na zasobniku tej funkcie, to znamena, ze je viditelna len v ramci tej funkcie. Ak vytvoris premennu mimo funkcie vytvoris tzv. globalnu premennu, vtedy na nu vidia vsetky funkcie. Ak pouzijes dynamicke alokovanie, vtedy sa pamat alokuje na halde do ktorej maju pristup vsetky funkcie (akurat musia mat na tu premennu pointer).

// Spojený príspevok Pia 31.03.17 21:26:01

Myslim ze nemate pravdu, ze to bez dynamicke alokacie nejde. Ak si spravne spominam od standardu c99 je mozne vytvorit nieco taketo: https://en.wikipedia.org/wiki/Variable-length_array ale niesom si tym isty, neskusal som to, dufam ze netrepem blbosti.


Offline

Zmazaný užívateľ
Zmazaný užívateľ
Obrázok užívateľa
Príspevok Napísal autor témyOffline : 01.04.2017 11:46

mitko píše:
Suvisi to s tym, ze ked deklarujes premennu v nejakej funkcii napr main, vytvori sa len na zasobniku tej funkcie, to znamena, ze je viditelna len v ramci tej funkcie. Ak vytvoris premennu mimo funkcie vytvoris tzv. globalnu premennu, vtedy na nu vidia vsetky funkcie.

Myslel som si to, ale zaujímavé, že pri jednorozmernom poli to nevyžaduje const a je viditeľné pre všetky funkcie aj keď jeho dĺžka je deklarovaná v main(). V čom je tam rozdiel oproti dvojrozmernému polu?


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 28.04.11
Prihlásený: 28.03.24
Príspevky: 296
Témy: 27
Bydlisko: Martin/Brno
Príspevok NapísalOffline : 01.04.2017 21:00

Asi nerozumiem úplne čo myslíš. Ak máš niečo deklarované v main nemôžeš to použiť v iných funkciách a const s tým nič nezmení. Môžeš dať nejaký priklad?


Offline

Zmazaný užívateľ
Zmazaný užívateľ
Obrázok užívateľa
Príspevok Napísal autor témyOffline : 02.04.2017 18:28

Spoiler: zobraziť
void nacitaj(int pole[], int dlzka)
{
for (int i = 0; i < dlzka; i++)
cin >> pole[i];
}

int main()
{
const int dl = 5;
int pole[dl];

nacitaj(pole, dl);

system("pause");
return 0;
}

S tými konštantami som sa pomýlil, musia byť všade. Ale tento kód vyššie sa dá skompilovať aj keď je dĺžka pola deklarovaná v main().

Spoiler: zobraziť
void generujMaticu(int matica[][], int m, int n)
{
for (int i = 0; i < m; i++)
for (int j = 0; j < n; j++)
matica[i][j] = rand();
}

int main()
{
const int M = 8, N = 5;
int matica[M][N];
generujMaticu(matica, M, N);
return 0;
}

Toto sa neskompiluje. Ani keď dám do parametrov procedúry matica[M][N].

A ja neviem, v čom je rozdiel, že jedno sa dá skompilovať a druhé nie.


Offline

Užívateľ
Užívateľ
C++ načítanie veľkosti matice z klávesnice

Registrovaný: 27.06.09
Prihlásený: 04.03.23
Príspevky: 332
Témy: 3
Bydlisko: Košice - ok...
Príspevok NapísalOffline : 02.04.2017 18:31

prvy rozmer pri viacrozmernom poli mozes vynechat, viac nie, na toto je vhodne pouzit template
Kód:
template <size_t M, size_t N>
void generujMaticu(int matica[M][N], int m, int n)
{
    for (int i = 0; i < m; i++)
        for (int j = 0; j < n; j++)
            matica[i][j] = rand();
}


toto je tiez spravne:
Kód:
template <size_t N>
void generujMaticu(int matica[][N], int m, int n)
{
    for (int i = 0; i < m; i++)
        for (int j = 0; j < n; j++)
            matica[i][j] = rand();
}







_________________
GitHub: mfocko | mfocko.xyz
OSs: archLinux + fedora (+ Windows 10 Pro Insider Preview, only if needed)
Server: archLinux [nginx + Docker (GitLab) + SSH/SFTP + local mirror (FTP/rsync - archLinux, Fedora) + samba + transmission]
Offline

Zmazaný užívateľ
Zmazaný užívateľ
Obrázok užívateľa
Príspevok Napísal autor témyOffline : 02.04.2017 18:38

Ďakujem, len si musím osviežiť ako fungujú šablóny. :D


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 28.04.11
Prihlásený: 28.03.24
Príspevky: 296
Témy: 27
Bydlisko: Martin/Brno
Príspevok NapísalOffline : 02.04.2017 18:56

Fuha riesit to templatami je dost overkill. Nefunguje nieco ako:

Kód:
void generujMaticu(int** matica, int m, int n)
.
.


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 15.06.14
Prihlásený: 26.03.24
Príspevky: 17930
Témy: 142
Bydlisko: Bratislava
Príspevok NapísalOffline : 02.04.2017 18:57

ano funguje to aj takym stylom







_________________
ITX >>> ATX
Offline

Užívateľ
Užívateľ
C++ načítanie veľkosti matice z klávesnice

Registrovaný: 27.06.09
Prihlásený: 04.03.23
Príspevky: 332
Témy: 3
Bydlisko: Košice - ok...
Príspevok NapísalOffline : 02.04.2017 19:02

Prave som to chcel napisat, cez ten pointer :DDD







_________________
GitHub: mfocko | mfocko.xyz
OSs: archLinux + fedora (+ Windows 10 Pro Insider Preview, only if needed)
Server: archLinux [nginx + Docker (GitLab) + SSH/SFTP + local mirror (FTP/rsync - archLinux, Fedora) + samba + transmission]
Odpovedať na tému [ Príspevkov: 15 ] 


Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy. Nacitanie z klavesnice v C-cku

v Assembler, C, C++, Pascal, Java

4

1320

06.11.2006 15:47

junior848 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. nacitanie matice a nasledny vypis

v Assembler, C, C++, Pascal, Java

3

635

04.01.2015 23:48

nBXXL Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Porovnanie stlpcov matice v C++

v Assembler, C, C++, Pascal, Java

3

414

21.03.2015 12:18

focko Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. [C++] Párne čísla v stĺpci matice

v Assembler, C, C++, Pascal, Java

2

1110

24.03.2015 18:07

sanji Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Suma členov matice pomocou smerníkov ( v C-ečku )

v Assembler, C, C++, Pascal, Java

1

1143

28.03.2009 10:05

neutronmind Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. C++ nacitanie

v Assembler, C, C++, Pascal, Java

6

912

10.01.2010 10:24

ado21 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. C - načítanie stringu

v Assembler, C, C++, Pascal, Java

14

1889

17.10.2010 21:33

remus Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Zmena velkosti C na viste

v Pevné disky a radiče

10

592

25.08.2008 19:13

al Mualim Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Acronis Disc Director 10 - Zmena velkosti C-cka

v Ostatné programy

9

1091

05.12.2009 16:31

girus Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. [C]funkcie, nacitanie a porovnanie zo suboru

v Assembler, C, C++, Pascal, Java

6

1235

31.03.2015 17:47

dany2281995 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. nacitanie obsahu suboru do pola v C

v Assembler, C, C++, Pascal, Java

5

2076

28.04.2011 10:39

Fico Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. efektivne nacitanie suboru do pamati v c

v Assembler, C, C++, Pascal, Java

4

2281

05.07.2011 14:53

v.tkac Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. C, problem s osetrenim vstupu z klavesnice - char

v Assembler, C, C++, Pascal, Java

5

520

05.12.2011 14:07

t-pack25 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. [C# - Help] Načítanie + vypísanie so súboru text do textbox

v Assembler, C, C++, Pascal, Java

8

797

14.11.2013 15:57

erik518 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. pascal matice

v Assembler, C, C++, Pascal, Java

2

561

02.04.2012 21:25

F3RY Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Matice v Jave

v Assembler, C, C++, Pascal, Java

1

477

27.11.2013 8:19

BX Zobrazenie posledných príspevkov


Nemôžete zakladať nové témy v tomto fóre
Nemôžete odpovedať na témy v tomto fóre
Nemôžete upravovať svoje príspevky v tomto fóre
Nemôžete mazať svoje príspevky v tomto fóre

Skočiť na:  

Powered by phpBB Jarvis © 2005 - 2024 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF
Ako väčšina webových stránok aj my používame cookies. Zotrvaním na webovej stránke súhlasíte, že ich môžeme používať.
Všeobecné podmienky, spracovanie osobných údajov a pravidlá fóra