Post Reply 
 
Thread Rating:
  • 0 Votes - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Dinamicko alociranje struct niza
Author Message
MetalGenius Offline
Novi korisnik
*

Posts: 46
Joined: Oct 2011
Reputation: 3
Post: #1
Dinamicko alociranje struct niza
Cao raja, treba mi mala pomoc. Ustvari, zavisi kako kome xD
Radi se o tome da mi je zatrebalo da napravim niz tipa struct, ali! Mora da bude dinamicki alociran. Naravno, struct sam definisala u globalu, i sve promjenljive koje idu u taj tip (par integera i string), a ono sto se pravi na pocetku maina (nisam jos vjesta sa dinamickim, tek sam pocetnik, pa sam to zbubacila bez nekih vecih objasnjenja), mislim da se zove pokazivac na niz, i ide ovako int *ime_niza, sam stavila kao int.
I ja sam to uradila, medjutim, pretpostavljam da mi je greska bila usljed toga sto valjda ne mogu da napravim pokazivac niza kao int, a niz kao struct.
Pa sam onda i pokazivac definisala kao struct tip, sto veze nema sa zivotom.
Ako mozete da mi nesto od toga pojasnite, tj. kako se to pise, nemojte me samo razocarati da je nemoguce jer mi stvarno, stvaaarno treba xD
Evo vam parche koda da skontate He he Samo djelic. I da, ako slucajno nije nesto jasno, molim vas pitajte, sve cu da vam kazem He he Izvinjavam se zbog hrpe smajlica, stalno ih kuckam He he
Code:
#include <iostream>
using namespace std;
struct niz
{
      ... potrebne varijable (par integera i string :D
};

int main ()
{
   int ... sitne lokalne varijeble koje mi trebaju
   niz *a; ---> ovo ovdje sam morala da def. pok. kao struct,
                    tad je najmanje gresaka xD
   cin>>d;
   niz a=new int[d]; -----> !????
   for ( ... itd. itd.

P.S. nesto sam ja jos namjestala, pa evo vam otprilike sve greske koje sam dobila tokom svog tog 'namjestanja'

Greske
-conflict declaration 'niz a'
-'a' has a previous declaration as 'niz a'
-declaration of 'niz a'
-conflicts with previous declaration 'niz a'
-conversion from 'int' to non-scalar type 'niz' requested

Sad ne znam za koje je namjestanje sta, ali sam isprobala svasta nesto. Izvinjavam se ako je ovo predugacko, i... pozdrav, nadam se da ce se naci neko da procita i pomogne He he Caos He he

I can't escape myself.
26-11-2011 03:08 AM
Find all posts by this user Quote this message in a reply
schmrz Offline
____
*

Posts: 567
Joined: Feb 2007
Post: #2
RE: Dinamicko alociranje struct niza
Code:
#include <iostream>

using namespace std;

struct Vozilo
{
    int brojVrata;
    int predjenoKilometara;

    Vozilo () {
        brojVrata = 4;
        predjenoKilometara = 0;
    }
};

int main()
{
    Vozilo *mojaVozila;
    int brojVozila = 0;

    cin >> brojVozila;

    mojaVozila = new Vozilo[brojVozila];

    // ...

    return 0;
}

Pošto ne znam odakle da počnem objašnjavati najbolje bi bilo da kažeš šta ti ovdje nije jasno pa ćemo onda dalje Namigivanje

I have no drinking problems. I drink. Get drunk. Fall down. NO PROBLEM
Registered As Linux User #484215
Moj skromni blog
Savjet za buduće programere: ovdje
26-11-2011 01:51 PM
Find all posts by this user Quote this message in a reply
r0tring Offline
Redoviti posjetitelj
**

Posts: 237
Joined: Apr 2009
Reputation: 11
Post: #3
RE: Dinamicko alociranje struct niza
Kako kažu da se iz primjera najbolje uči...

Code:
#include <iostream>
using namespace std;

struct Student {
    char ime[50];
    int index;
};

int main() {
    int br_studenata;
    cout << "Koliko zelite unijeti studenata? ";
    cin >> br_studenata;
    
    // Ovo je ono sto ti treba :)
    Student *niz_studenata = new Student[br_studenata];
    
    for (int i = 0; i < br_studenata; i++) {
        cout << "\nIme: ";
        cin >> niz_studenata[i].ime;
        cout << "Index: ";
        cin >> niz_studenata[i].index;
    }
    
    cout << "\nUneseni studenti:\n";
    
    for (int i = 0; i < br_studenata; i++)
        cout << "\n" << niz_studenata[i].ime << ", " << niz_studenata[i].index;
    
    cout << endl;
    delete [] niz_studenata;
    system("pause");
    return 0;
}

Pitanje za schmrz-a:
Jel' neophodno da se oslobađa memorija prije nego se program završi?
Tj. hoće li program po završetku sam osloboditi svu memoriju koju je zauzeo?
Prilično sam uvjeren da hoće, ali eto dobro bi mi došla tvoja potvrda He he
26-11-2011 02:12 PM
Find all posts by this user Quote this message in a reply
schmrz Offline
____
*

Posts: 567
Joined: Feb 2007
Post: #4
RE: Dinamicko alociranje struct niza
(26-11-2011 02:12 PM)r0tring Wrote:  Pitanje za schmrz-a:
Jel' neophodno da se oslobađa memorija prije nego se program završi?
Tj. hoće li program po završetku sam osloboditi svu memoriju koju je zauzeo?
Prilično sam uvjeren da hoće, ali eto dobro bi mi došla tvoja potvrda He he

Naravno. Program će osloboditi svu memoriju po završetku tako da u ovom mom prvom primjeru nije potrebno eksplicitno oslobađati memoriju. Mada ako radite ispite na faksu/školi preporučujem da eksplicitno oslabađate memoriju iako nije potrebno. Čisto da ne gubite bodove radi nečijeg neznanja Namigivanje

Memoriju je potrebno eksplicitno oslobađati samo u onim slučajevima kada znate da se program neće završiti neposredno nakon oslobađanja memorije.

I have no drinking problems. I drink. Get drunk. Fall down. NO PROBLEM
Registered As Linux User #484215
Moj skromni blog
Savjet za buduće programere: ovdje
26-11-2011 03:17 PM
Find all posts by this user Quote this message in a reply
MetalGenius Offline
Novi korisnik
*

Posts: 46
Joined: Oct 2011
Reputation: 3
Post: #5
RE: Dinamicko alociranje struct niza
@r0tring Ovo je proradilo, i mislim da razumijem He he Ali me zanima samo zasto ste (si?) stavili pored char [50]. Je l' to da se ogranici ime na 50 znakova, posto mi bez toga [50] ne radi kako valja He he

@schmrz Sta je ono sto ste definisali unutar structa, poslije intova? Da znam da mogu da stavim neko parche koda na mjesto // da vidim rezultate He he A jos cu ja ovo Vase probati da prokljuvim, od r0tringa sam skontala
Hvala momci He he

I can't escape myself.
(This post was last modified: 26-11-2011 03:20 PM by MetalGenius.)
26-11-2011 03:18 PM
Find all posts by this user Quote this message in a reply
schmrz Offline
____
*

Posts: 567
Joined: Feb 2007
Post: #6
RE: Dinamicko alociranje struct niza
MetalGenius Wrote:Sta je ono sto ste definisali unutar structa, poslije intova? Da znam da mogu da stavim neko parche koda na mjesto // da vidim rezultate A jos cu ja ovo Vase probati da prokljuvim, od r0tringa sam skontala

To je konstruktor, on je zadužen da postavi neke defaultne vrijednosti atributa. Ako pratite neki program u školi/na faksu onda to jednostavno izbriši da te ne buni, neće biti grešaka :)

I have no drinking problems. I drink. Get drunk. Fall down. NO PROBLEM
Registered As Linux User #484215
Moj skromni blog
Savjet za buduće programere: ovdje
26-11-2011 09:00 PM
Find all posts by this user Quote this message in a reply
r0tring Offline
Redoviti posjetitelj
**

Posts: 237
Joined: Apr 2009
Reputation: 11
Post: #7
RE: Dinamicko alociranje struct niza
(26-11-2011 03:17 PM)schmrz Wrote:  Memoriju je potrebno eksplicitno oslobađati samo u onim slučajevima kada znate da se program neće završiti neposredno nakon oslobađanja memorije.

Da, tako sam i mislio. TY Namigivanje

MetalGenius Wrote:Ali me zanima samo zasto ste (si?) stavili pored char [50]. Je l' to da se ogranici ime na 50 znakova, posto mi bez toga [50] ne radi kako valja

Da, tako nekako. Rezervišeš u memoriji 50 bajta (1 bajt = 1 slovo). Ovo na neki način predstavlja razbacivanje resursima ako unešeno ime nema više do 5-6 slova, al' eto - primjera radi... :)
Ali ti uvijek možeš koristiti 'string' (tip podatka) pa se ne moraš brinuti o dužini imena.
Jes da će tek tada doći do bespotrebnog razbacivanja resursima...
Mah, koristi char[50] i ne brini ništa.. He he
27-11-2011 03:25 PM
Find all posts by this user Quote this message in a reply
MetalGenius Offline
Novi korisnik
*

Posts: 46
Joined: Oct 2011
Reputation: 3
Post: #8
RE: Dinamicko alociranje struct niza
Da, da, zato sto je string objekat pomocu kojeg upravljamo sa nizom znakova kao da su na jednom mjestu. To sam citala negdje He he
Hvala, hvala He he

I can't escape myself.
(This post was last modified: 27-11-2011 03:32 PM by MetalGenius.)
27-11-2011 03:32 PM
Find all posts by this user Quote this message in a reply
Post Reply 


Forum Jump:


User(s) browsing this thread: 1 Guest(s)