Post Reply 
 
Thread Rating:
  • 0 Votes - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Generisanje niza u C++
Author Message
MetalGenius Offline
Novi korisnik
*

Posts: 46
Joined: Oct 2011
Reputation: 3
Post: #1
Generisanje niza u C++
Pozdravcic! He he
Nova sam na forumu, pa bi mi trebala mala pomoc. Prvi programski jezik bio mi je QBasic, tu rasturam poprilicno dosta stvari osim grafike. A sada ucim krace vrijeme C++, ali znam osnove sintakse, pa bih zamolila za pomoc. Zasto se prilikom generisanja nizova mora odmah navesti tacno koliko ce clanova da ima taj niz (npr. int a[10])? Objasnjavali su mi to, skontala sam , ali mi strasno treba da korisnik prvo upise koliko clanova zeli, pa da onda automatski napravim niz sa tacno toliko clanova. Pokazivali su mi nesto sa new int* ili kako vec, pa ako moze neko to da mi objasni. Hvala puno He he

I can't escape myself.
24-10-2011 11:05 PM
Find all posts by this user Quote this message in a reply
danielvast Offline
Forumaš
***

Posts: 432
Joined: Dec 2009
Reputation: 22
Post: #2
RE: Generisanje niza u C++
Dakle pozdrav MetalGenius, Welcome :)
Haha i ja sam od basica poceo XD, ovo o cemu ti govoris je alociranje memorije. Dakle statičko alociranje memorije je ovo sto si navela sa
(int a[10]) kod ovako alocirane memorije velicina polja se ne moze mijenjati tjekom izvršavanja programa, također ovako alocirano polje se alocira na staku pa se brise nakon izvršavanja funkcije u kojoj je i alocirana. Sa druge strane je dinamički alocirana memorja, čija se veličina može mijenjati prilikom izvršavanja, ovako alocirana memorija se alocira na heap-u i brise ju sam korisnik. Dakle sve sto imamo u memoriji ima svoju neku lokaciju, tzv pokazivačima mi i možemo i pristupati odgovarajućim lokacijama. Upravo sa pokazivačima mi možemo i dodjeliti odgovarajući prostor tjekom izvršavanja programa, a to je upravo ono sto tebi treba. To nam omogućava naredba new koji alocira polje određene veličine na stacku u vraća pokazivač na to polje. To bi u c++ bilo nekako ovako:

Code:
#include <iostream>
using namespace std;

int main () {
  int *p, n, i;
  cout << "Koliko zelite polje ";
  cin >>n;
  p = new int[n];
  for (i = 0;i<n;i++) {
        cout << "Unesite " << i+1 << " broj: ";
        cin >> *(p+i); //ili alternativno p[i] samo sam htio demonstrirati operator * koji sa lokacije čita vrijednost
  }
  
  for (i = 0;i<n;i++) {
        cout << "Broj : " << p[i] << endl;
  }
  delete [] p; // na kraju najbitije od svega je pobrisati alocirano polje uvijek !!!
  system("pause");
}

Dakle razlika između ova dva nacina alociranja je u scope-u (zivotnom vijeku) varijable koja je alocirana ono sto smo staticki alocirali brise se tek nakon sto se program zavrsi, a kod dinamički alociranog polja brisemo ga mi tijekom izvođenja samog programa pozivanjem operatora delete. ;D

"When all else fails, read the manual."
25-10-2011 12:17 AM
Find all posts by this user Quote this message in a reply
MetalGenius Offline
Novi korisnik
*

Posts: 46
Joined: Oct 2011
Reputation: 3
Post: #3
RE: Generisanje niza u C++
Hvl, hvl He he Ma sto se tice teorije i slicnih gluposti, ja sam ti mentolcic i po He he Ali hvala , sad otprilike kontam He he
Ma znas kako je, kaze mi ucitaj varijablu n, napravi niz od n clanova pa radi nesto. I ja ti fino napisem int niz[n], compile, nece. I onda mi instruktor kaze da to sto ima u Basicu ne postoji u C++-u, dakle, prije izvrsenja programa kompajler treba da zna tacnu velicinu niza. Meni malo bezveze. A ovo sa dinamickim alociranjem... rekao je isto da obavezno obrisem, citat: 'Jedan radnik u Americi je zaboravio da ovo odradi i ubio je deset ljudi He he ' .
Uglavnom, hvala. tacno cu da svracam ovdje, super ste mi ^__________^
A sto se tice pokazivaca, to ne znaju najbolje ni ovi stariji. Drzim se svoga i ubijam lagano He he

I can't escape myself.
25-10-2011 12:59 AM
Find all posts by this user Quote this message in a reply
danielvast Offline
Forumaš
***

Posts: 432
Joined: Dec 2009
Reputation: 22
Post: #4
RE: Generisanje niza u C++
np Namigivanje ako igdje zapne ovdje ima puno većih stručnjaka od mene tako da... Namigivanje i btw new alocira na heapu tek sad vidio lapsus :)

"When all else fails, read the manual."
(This post was last modified: 25-10-2011 05:25 PM by danielvast.)
25-10-2011 04:46 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)