» »

[Vsi jeziki / C++] preprost logičen problem

[Vsi jeziki / C++] preprost logičen problem

c0dehunter ::

Zdravo,
imam za naredit eno preprosto nalogo, vendar mi dela težava definiranje polj.

Se pravi, uporabnik vpiše koliko polj želi imet. Nato zgeneriraš toliko polj, pri čemer morš pazit, saj niso vsa enako dolga - za vsako polje posebej vprašaš, kako dolgo bo.
Tako da zanke odpadejo, ker v zanki ne moreš definirat nekaj in potem uporabit to izven zanke.

Na začetku sem razmišljal o dvodimenzionalnem polju, vendar tam je potem vsaka vrstica isto dolga.

Kaj bi še lahko naredil? Mora pa biti z polji.

P.s: irelevantno, pa vseeno - delam v C++ če bo kdo kodo lepil
I do not agree with what you have to say,
but I'll defend to the death your right to say it.

Mavrik ::

Tale problem je čist rešljiv, samo pa je odvisen od jezika, tako da neke skupne rešitve ni.

V C/C++ se to reši s kazalci in dinamično alokacijo, v ostalih jezikih s kakimi generičnimi strukturami.
The truth is rarely pure and never simple.

c0dehunter ::

Aha, hvala za usmeritev.
Kakorkoli, še vedno me tare :P

Recimo v programu lahko sedaj dinamično definiram
int * prvo_polje;


...in potem nekje v eni zanki povem
prvo_polje=new int[n];


Problem pa je, ker ne vem že na začetku koliko dinamičnih polj naj definiram? 100, 1000? kaj če jih uporabnik hoče met 1001? Ok, na začetku jih lahk definiram 1000000 - pa se bo spet našel mazohist, ki jih bo hotu pa 1000001 :))

Al narobe razmišljam?
I do not agree with what you have to say,
but I'll defend to the death your right to say it.

Ktj ::

Če delaš v C maš malloc potem pa lahko povečuješ z realloc.

Mavrik ::

Narobe razmišljaš: ti moraš stvari alocirati PO tistem ko veš koliko in kako velika polja rabiš.

Tako najprej uporabnika vprašaš koliko polj hoče in zatem alociraš tabelo kazalcev na polja, ki je velika toliko kot jih hoče met.

Zatem za vsako polje še vprašaš kako veliko naj bo in ga alociraš v taki velikosti, kazalec pa vstaviš v zgoraj omenjeno tabelo.
The truth is rarely pure and never simple.

c0dehunter ::

Aha, hvala! Nism še delali s kazalci in dinamičnim alociranjem v Javi pa tega nikol nism srečo v SŠ.

Me pa zanima še, če se tole da:
int * polje;
cout<<"Vpisi velikost:";
polje=new int [cin>>];


Gre se za to, da velikost ne bi shranjeval posebej v novo spremenljivko, pač pa bi kar direkt vnesu not.


Edit:


Sem mislil da mi bo uspelo but obviously I am missing something.

Tole sem naredil:
    int main(){
    int st_m;
    int * kazalci;
    
    cout<<"Koliko polj zelite imeti?";
    cin>>st_m;
    kazalci=new int[st_m];
    
    for(int i=0; i<st_m; i++){
            kazalci[i]=

Tukaj pa se mi ustavi. V vsako celico polja kazalci bi zdaj moral dat recimo *a, pa potem *b...
Ampak to ne morem v for zanki naredit.
Prosim za popravljeno kodo, ker bom tak najlažje zaštekal.
Hvala!
I do not agree with what you have to say,
but I'll defend to the death your right to say it.

Zgodovina sprememb…

win64 ::

če prav razumem nalogo

int main()
{
size_t st_m;
size_t st_m2;
int ** kazalci;

cout<<"Koliko polj zelite imeti?";
cin>>st_m;

kazalci=new int*[st_m];

for(int i=0; i<st_m; i++)
{
 cout << "Kako veliko naj bo polje st.: " << i << "?";
 cin >> st_m2;       
 kazalci[i]=new int[st_m2];
}

Zgodovina sprememb…

  • spremenil: win64 ()


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[C++] Kako vrniti NULL če je polje prazno

Oddelek: Programiranje
271767 (1284) Matic1911
»

[C] Seznam s poljem

Oddelek: Programiranje
232462 (1942) aceton
»

[C++]Polje neznane velikost

Oddelek: Programiranje
71088 (981) Senitel
»

[C] struct in int[] (strani: 1 2 )

Oddelek: Programiranje
657338 (6411) MrBrdo
»

[C++] dinamično 2d polje

Oddelek: Programiranje
143260 (3097) bozjak

Več podobnih tem