Programiranje u C++-u - pitanja i odgovori izdvojena tema

poruka: 7.285
|
čitano: 1.712.037
|
moderatori: Lazarus Long, XXX-Man, vincimus
+/- sve poruke
ravni prikaz
starije poruke gore
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
NiGHT_RiDER92 kaže...
Sa jednom zvijezdicom znam da je pointer.

To su sve pointeri.

 

Možeš imati pointer na pointer, pa i pointer na pointer na pointer na pointer ako baš želiš. Samo dodaješ zvijezdice :D

 

Ono što ne možeš samo tako saznati jest veličina onoga na što pointer pokazuje (tu jednostavno trebaš upotrijebiti logiku i razmisliti, a možda možeš nešto i zaključiti iz imena varijable).

 

Npr.

 

int *p može pokazivati na jedan komad memorije (polje), ali ne možeš znati o kolikom se komadu radi. Možda pokazivač pokazuje na samo jedan integer (pa to onda u biti i nije polje), a možda pokazuje na polje od 20 integera, ili čak 10000.

 

Isto tako, ako imaš int **p možda 'p' pokazuje na pokazivač koji pokazuje na samo jedan integer,

 

 

možda pokazuje na pokazivač koji pokazuje na više integera (polje),

 

 

možda 'p' pokazuje na polje pokazivača od kojih svaki pokazuje na jedan integer,

 

 

a možda 'p' pokazuje na polje pokazivača od kojih svaki pokazuje na polje integera.

 

Kada pogledaš dokumentaciju za D3DXCreateTextureFromFile vidiš da u opisu zadnjeg argumenta stoji:

Address of a pointer to an IDirect3DTexture9 interface, representing the created texture object.

 

Da, i pokazivači kao i sve ostale varijable imaju svoju memorijsku adresu (i oni se na kraju krajeva nalaze negdje u memoriji). Ta funkcija kao posljednji argument želi adresu pokazivača, odnosno pokazivač na pokazivač.

What Andy giveth, Bill taketh away.
Poruka je uređivana zadnji put pon 29.7.2013 3:26 (rustweaver).
11 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

Može mala pomoć!!   

može

Poruka je uređivana zadnji put pon 29.7.2013 13:53 (HA-HA-HA-HA).
 
0 0 hvala 0
13 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
HA-HA-HA-HA kaže...

Može mala pomoć!!

Čekaj samo da nađem magičnu kuglu. :)

11 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
prvi put sam na forumu i brani mi nešto da objavljivm kao u fezi s htmlom
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori

Glumiš Vidovitog Milana? :D

11 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

Može li mi tko objasniti koja je uloga i funkcija datoteka, i sam rad s datotekama(spremanje z čitanje ispisivnje na ekran itd.) jer mi profesor nije to objasnio a zahtjeva da znamo(koji glupan), a i sam bih volio da znam... imam jedan zadatak s datotekama rijesio sam ga sve do rada s tim datotekama.Zadatak glasi:

Napravi program koji definira strukturu za zapis podataka o pilotima sa članovima: prezime i ime, staž i broj letova. iz datoteke piloti.txt pročitaju se podaci o svim pohranjenim pilotima, soriraju po broju letova ili po stažu ako je broj letova isti i tako sortirani ispisuju na ekran.

 

#include <iostream>

#include<stdio.h>

include <cstring>

using namespace std;

struct piloti

{

char ime [30];

int staz;

int brletova;

};

int main()

{

piloti P[4],k;

cout<<"Unos pilota: "<<endl;

for(int i=0;i<4;i++){

cout<<"Unos "i+1<<". pilota"<<endl;

cout<<"Unesi ime: ";

fflush(stdin);

cin.getline(P[i].ime,30);

cout<<endl;

cout<<"Unesi staz u godinama: ";

cin>>P[i].staz;

cout<<endl;

cout<<"Unesi broj letova: ";

cin>>P[i].brletova;

cout<<endl;

}

for(int i=0;i<3;i++){

for(int j=i+1;j<4;j++){

if(p[j].brletova>P[i].brletova ||

(P[j].brletov==P[i].brletova &&

P[j].staz>P[i].staz))

k=P[i];

P[i]=P[j];

P[j]=k;

}

}

cout<<"Ispis pilota sortiranih po letovima(ili stazu): "<<endl;

for(int i=0;i<4;i++){

cout<<i+1<<"."<<P[i].ime<<" "<<P[i].brletova<<endl;

}

return 0;

}

 

 

 

 

Poruka je uređivana zadnji put pon 29.7.2013 14:17 (HA-HA-HA-HA).
 
0 0 hvala 0
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori

Pa trebao si ga pitati da ti objasni, a ne čekati objašnjenje :)

 

Evo ti: http://web1.ss-amkaramaneo-vis.skole.hr/informatika/Cpp_school/Datoteke%20u%20C++.htm

 

Inače ako planiraš učiti C++ imaš dobru knjigu: C++ Analiza i Primjena od Željka Kovačevića (TracerCPP), imaš unutra i rad s datotekama.

Slobodno malo i proučiš po netu (bar nije teško naći, napišeš c++ datoteke u google) prije nego pitaš ovdje, a ako ne razumiješ onda pitaj.

 

 

 

Poruka je uređivana zadnji put pon 29.7.2013 14:06 (NiGHT_RiDER92).
11 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
bio bih samo zadovoljan da mi se ubaci u ovaj program što treba.. poslije bih uz ovaj link sve skuzio!!!
11 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
txt na savjetu!!
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
HA-HA-HA-HA kaže...

Može li mi tko objasniti koja je uloga i funkcija datoteka, i sam rad s datotekama(spremanje z čitanje ispisivnje na ekran itd.) jer mi profesor nije to objasnio a zahtjeva da znamo(koji glupan), a i sam bih volio da znam...

Ovo je jako neobično pitanje. Datoteke služe kako bi nešto mogao spremiti "za kasnije" na neku trajnu memoriju (tvrdi disk recimo) da ne izgubiš sve kada ugasiš računalo ili nestane struje.

 

HA-HA-HA-HA kaže...

Napravi program koji definira strukturu za zapis podataka o pilotima sa članovima: prezime i ime, staž i broj letova. iz datoteke piloti.txt pročitaju se podaci o svim pohranjenim pilotima, soriraju po broju letova ili po stažu ako je broj letova isti i tako sortirani ispisuju na ekran.

Sve pet, samo... kako su formatirani podatci u datoteci piloti.txt? Jedna vrijednost po liniji? Sve vrijednosti za jednog pilota u istoj liniji odvojene zarezima (bez zareza?)? Nalaze li se prazne linije između zapisa o pilotima?

What Andy giveth, Bill taketh away.
11 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
Takav mi je zadatak dan...rijesio sam ja sve normalno strukturu i to... samo treba ubaciti da se pročitaju podaci o tim svim pohranjenim pilotima i ipsisivanje sortiranih na ekran... vise nisam dobio informacija..... a vjeruj mi da mi profesor nista nije reko o datotekama...stoga sam pito cemu sluze.. a i pokusati cu si nabaviti ovu knjigu... jer nismo stigli a trazio je da znamo ovaj zadatak..
13 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
HA-HA-HA-HA kaže...
Takav mi je zadatak dan...rijesio sam ja sve normalno strukturu i to... samo treba ubaciti da se pročitaju podaci o tim svim pohranjenim pilotima i ipsisivanje sortiranih na ekran... vise nisam dobio informacija..... a vjeruj mi da mi profesor nista nije reko o datotekama...stoga sam pito cemu sluze.. a i pokusati cu si nabaviti ovu knjigu... jer nismo stigli a trazio je da znamo ovaj zadatak..

Pa pronađi na google-u kako se radi sa datotekama u C++u. Možeš koristiti modul fstream (ofstream i ifstream) ili stdio modul gdje se nalaze funkcije poput fscanf ili fprintf. Rad sa datotekama nije nimalo težak. Sve što si ti uradio je dobro (valjda :)), ali sada umjesto da vršiš upis/ispis sa RAM memorijom, to radi sa tekstualnim datotekama. 

 

Evo pogledaj ovdje jednostavne prijmere:
http://www.cplusplus.com/doc/tutorial/files/
Onda to prebaci u tvoj program. Također pazi da imaš neformatirane i formatirane datoteke.

15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
HA-HA-HA-HA kaže...
Takav mi je zadatak dan...rijesio sam ja sve normalno strukturu i to... samo treba ubaciti da se pročitaju podaci o tim svim pohranjenim pilotima i ipsisivanje sortiranih na ekran... vise nisam dobio informacija.....

Reci profesoru da se to tako ne radi i da ne možeš pisati program nagađajući kako su podatci u datoteci poslagani. Ili neka ti da datoteku kako bi ju mogao analizirati i napisati program ili neka ti objasni točno format datoteke.

 

Mislim stvarno, kakve su to fore?

What Andy giveth, Bill taketh away.
11 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
pa rijec je o textulnom tipu datoteke...
13 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
HA-HA-HA-HA kaže...
pa rijec je o textulnom tipu datoteke...

Da, i? Je li vam rekao kako da radite sa njima, binarno ili formatirano, ako formatirano koji je format, kako će se predstavljati zapis jednog pilota, kako će se odvajati ime od staža... Ili sve vama na volju?

15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
HA-HA-HA-HA kaže...
pa rijec je o textulnom tipu datoteke...

Da, ali ne kužiš da trebaš znati što se i gdje nalazi u toj datoteci kako bi mogao podatke stavljati tamo gdje im je i mjesto?

 

Evo recimo da imaš datoteku piloti.txt u ovom formatu:

ime prezime staž broj_letova
ime prezime staž broj_letova
ime prezime staž broj_letova
...
ime prezime staž broj_letova

 

Onda bi čitanje podataka iz takve datoteke koristeći C++ streamove ja izveo ovako:

#include <iostream>
#include <fstream>
#include <cstring>

using namespace std;

#define BROJ_PILOTA 4

struct piloti
{
    char ime[30];
    int staz;
    int brletova;
};

int main()
{
    piloti p[BROJ_PILOTA]={0};
    ifstream datoteka;

    datoteka.open("piloti.txt");

    for (int n=0; n<BROJ_PILOTA; n++)
    {
        datoteka >> p[n].ime;
        datoteka >> p[n].ime + strlen(p[n].ime) + 1;
        datoteka >> p[n].staz;
        datoteka >> p[n].brletova;

        p[n].ime[strlen(p[n].ime)]=' ';
    }

    datoteka.close();

    for (int n=0; n<BROJ_PILOTA; n++)
        cout << p[n].ime << " " << p[n].staz << " " << p[n].brletova << endl;

    return 0;
}

 

Da se razumijemo ovo tu ti je samo čitanje i ispis pročitanog, nema nikakvog sortiranja ili ručnog unosa...

 

I bilo bi jednostavnije npr. da imaš posebno polje za ime a posebno za prezime, ili da je svaki podatak u datoteci u zasebnoj liniji...

 

EDIT: sad sam se sjetio i još nečega. Imaš li naveden broj pilota ili se od tebe traži da samo čitaš datoteku "dokle ide"?

What Andy giveth, Bill taketh away.
Poruka je uređivana zadnji put pon 29.7.2013 18:26 (rustweaver).
11 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
a ne.... to sam ja ograničio na 4... nema neke stroge granice...traži se da nakon učitanih pilota čitaju podatci...a nakon sortiranja ispisuju na ekran!!!!
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
HA-HA-HA-HA kaže...
traži se da nakon učitanih pilota čitaju podatci...a nakon sortiranja ispisuju na ekran!!!!

Taj sam dio skužio, ali ću prepustiti tebi da malo razmišljaš o sortiranju (pogledaj si bubble sort algoritam na netu).

What Andy giveth, Bill taketh away.
12 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

Pozz, možete li mi reći čemu služi dinamička i statička alokacija memorije, radi čega je to bitno?

 
0 0 hvala 0
17 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
Xyloto kaže...

Pozz, možete li mi reći čemu služi dinamička i statička alokacija memorije, radi čega je to bitno?

Staticka alokacija memorije vrsi se u compile-timeu, dinamicka u run-timeu.

Kod staticke unaprijed znas (dok pises kod) koliko ti memorije treba, dinamicku koristis kad ne znas koliko ce ti memorije trebati. Npr., zelis napisati program koji ce u polje spremati integere. No koliko njih? Mozes unaprijed odrediti recimo 10 i to je to. No sto ako korisnik sam zeli odrediti koliko ih zeli unijeti? Tada dinamicki alociras memoriju.

Perhaps today IS a good day to die. PREPARE FOR RAMMING SPEED!
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
Xyloto kaže...

Pozz, možete li mi reći čemu služi dinamička i statička alokacija memorije, radi čega je to bitno?

Za statičku alokaciju memorije koristi se stack memorija. Statička alokacija memorije se događa za vrijeme kompajliranja programa i koristi se za deklaraciju svake varijable u tvom programu. Količinu memorije unaprijed određuje programer i ona se za vrijeme izvršavanja programa ne može dinamički povećati po potrebi. Ako si deklarirao polje od 200 članova i programu ne treba više od toga sve je ok, ali što ako mu zatreba više? Npr. čitaš iz neke datoteke i ne znaš unaprijed koliko je ona velika?

 

Npr:

int a;      // varijabla 'a' je smještena na stack memoriju
int b[200]; // polje 'b' je smješteno na stack memoriju

 

Koristiš ju kada unaprijed znaš točno koliko ti memorije treba za nešto, i kada količina memorije koja je potrebna za "to nešto" nije prevelika jer je stack ograničen svojom veličinom i mnogo je manji od heap memorije. Statički alociranu memoriju ne možeš osloboditi, ona se oslobodi sama kada varijabla izađe iz scopea (osim ako nije riječ o statičkoj varijabli).

 

 

Za dinamičku alokaciju memorije koristi se heap memorija. Koristi se kada veličina nečega što treba staviti u memoriju nije unaprijed poznata, ili kada je veličina toga nečega poprilična pa nam treba više memorije nego što stack može pružiti.

 

Npr.

// dinamički alociran blok memorije od 1 MB
char *a = malloc(1048576);   // C način, koristeći funkciju malloc
char *a = new char[1048576]; // C++ način, koristeći operator new

 

Dinamički alociranu memoriju se može osloboditi usred izvršavanja programa kada ona više nije potrebna kako bi se oslobodila memorija za neke druge podatke.

 

Npr.

// oslobađanje dinamički alocirane memorije
free(a);    // C način, koristeći funkciju free
delete[] a; // C++ način, koristeći operator delete

 

 

Imaš zapravo dobar primjer u ovom postu. Ako pogledaš definiciju strukture 'piloti' vidjet ćeš da je njen član 'ime' statički alociran na 30 znakova (bajtova). Autor programa je pretpostavio da ime i prezime nikada neće biti dulje od 30 znakova (uključujući znak za razmak između njih), ali što ako se iz datoteke ipak pročita ime koje je dulje od toga? To je prilično dobar kandidat za dinamičku alokaciju memorije umjesto statičke koja se trenutno koristi, jer kada bi se koristila dinamička alokacija za član 'ime' bi se moglo zauzeti točno onoliko memorije koliko je ime dugačko. Time bi nam program zauzimao manje memorije ako je ime kraće od 30 znakova (ne bi bilo rasipavanja memorije jer bi bilo alocirano točno onoliko koliko je potrebno), a ako je ime dulje od 30 znakova program bi alocirao više memorije i ime bi uvijek stalo u memoriju.

What Andy giveth, Bill taketh away.
Poruka je uređivana zadnji put uto 30.7.2013 15:04 (rustweaver).
12 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

Ovdje kod dinamičke da si za char stavio char *a=new char[20] znači kada bih ja upisao nešto što mi premaši 20 znakova ta će se memorija proširiti za još dodatni 20 mjesta?

Je li ima neko ograničenje koliko se memorije može alocirati?

 
0 0 hvala 0
17 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
Xyloto kaže...

1)Ovdje kod dinamičke da si za char stavio char *a=new char[20] znači kada bih ja upisao nešto što mi premaši 20 znakova ta će se memorija proširiti za još dodatni 20 mjesta?

2)Je li ima neko ograničenje koliko se memorije može alocirati?

1) Ne, za to koristi vektore.

2) Koliko ti OS dopusti.

Perhaps today IS a good day to die. PREPARE FOR RAMMING SPEED!
15 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

Imam jedno pitanje, konkretno vezano za C++ Builder XE2.

 

Dosta često mi se događa da mi izbacuje grešku (u privitku je slika).

Npr. napravim novi projekt (za primjer konzolna aplikacija) bez ikakvog koda (osim main funkcije) i kad probam kompajlirati se ta greska javlja. 

Nekad nakon restarta racunala nestane ali se ponovno vrati i ne mogu kompajlirati kod. Gledao sam po netu ali nisam rješenje nikakvo našao.

 

 

Moj PC  
0 0 hvala 0
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
NiGHT_RiDER92 kaže...
Gledao sam po netu ali nisam rješenje nikakvo našao.

Slabo tražiš

 

https://forums.embarcadero.com/thread.jspa?messageID=188244

Čitajući tu temu čini se da je uzrok pronađen, a postoji i zaobilazno rješenje. Više od toga ti ne mogu pomoći ne koristim C++ Builder. Čekaj tracera :)

What Andy giveth, Bill taketh away.
14 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

Nikad takav error nisam dobio. Koliko vidim po netu to je već ispravljeno u jednom od update-a tako da probaj ih nekako nabaviti. Meni se automatski instaliraju pošto je riječ o legalnoj verziji.

Kada lajavci laju onda završe ovako: http://i471.photobucket.com/albums/rr77/toropreto/2012-07-0813_30_07.gif
Moj PC  
0 0 hvala 0
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori

Za XE2 imam update 3 , mozda da probam update 4 instalirati (cini mi se da sam vidio da i četvorka postoji) !?

14 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori

Iskreno, nemam pojma. Kažem - sami mi se automatski instaliraju.

 

Edit: popis ispravljenih bugova u update 4. S obzirom koliko ima ispravaka i taj bi mogao biti tu.

Kada lajavci laju onda završe ovako: http://i471.photobucket.com/albums/rr77/toropreto/2012-07-0813_30_07.gif
Poruka je uređivana zadnji put uto 30.7.2013 22:55 (TracerCPP).
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori

Aha, hvala. 


Imam samo jedno pitanje u vezi pointera ako može:

 

 

int * p, polje[3] = {2,4,6};

p = &polje[0];

cout <<*p<<endl;

 

Zanima me (ovo je primjer s neta), čemu sad to točno služi i što se dobiva takvom uporabom pointera ako se može 

jednostavno ispisati cout <<polje[0] << endl; umjesto rada s pointerom ?


Kakva je točno sad tu korist od pointera, ne kužim baš.

Poruka je uređivana zadnji put uto 30.7.2013 23:04 (NiGHT_RiDER92).
17 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori

Pa u ovom konkretnom slucaju je svejedno, vjerojatno je to samo neki skolski primjer za pokazati kako se radi s pokazivacima.

Perhaps today IS a good day to die. PREPARE FOR RAMMING SPEED!
E-mail:
Lozinka:
 
vrh stranice