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

poruka: 7.285
|
čitano: 1.713.459
|
moderatori: Lazarus Long, XXX-Man, vincimus
+/- sve poruke
ravni prikaz
starije poruke gore
16 godina
offline
Re: Programiranje u C++-u - pitanja i odgovori

Ali kako da oslobodim polje unutar funkcije?

AC Milan - IL CLUB PIU' TITOLATO AL MONDO
13 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
TracerCPP kaže...
emerik kaže...

Krivo smo se razumjeli.Alociram memoriju koristeći funkciju malloc.

U C++u malloc svakako treba zamjeniti s new. Malloc se može koristiti kod primitivnih tipova podataka (int, char, float...) ali u C++u može uzrokovati grešku jer malloc ne poziva konstruktor prilikom kreiranja objekta dok free ne poziva destruktor, a operatori new i delete to rade.

 

Koliko vidim momak rješava problem na C-ovski način, a ti na C++ način. Zbog toga te i ne razumije.

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

Ovo je C++ topic.

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

Da,nisam napomenuo da radim u C-u.Može pomoć svejedno?

AC Milan - IL CLUB PIU' TITOLATO AL MONDO
17 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

Izuzevsi par sitnih razlika C++ je superset C.

ako hoces raditi C za vjezbu to je ok, ali osom ako ces biti low lvl developer  neces C koristiti...

a sto se tice C++ u modern cpp se ne koriste new i delete, no za vjezbu ti je korisno da se mali igras sa new/delete, malloc/realloc/free da naucis kako stvari rade...

 
0 0 hvala 0
16 godina
offline
Re: Programiranje u C++-u - pitanja i odgovori

Razumijem,ali prvu godinu na faksu radim u C-u i moram koristiti te funkcije.

AC Milan - IL CLUB PIU' TITOLATO AL MONDO
17 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

prekrasni kanal za one koji zele nauciti cpp:https://www.youtube.com/user/BoQianTheProgrammer

moguce je da su neki videii losi ali sve sto sam pogledao je dobro...

 

 

emerik budi sretan sto ces potrositi malo vremena na to, ne znas kako je tuzno vidjeti prof programere koji su krenuli programirati sa Javom ili C# pa nemaju pojma sta je to stack ili heap ili malloc. :D

Poruka je uređivana zadnji put sub 22.3.2014 15:02 (Zoidberg).
 
0 0 hvala 0
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori

.

Poruka je uređivana zadnji put sub 22.3.2014 15:06 (iMoljac).
16 godina
offline
Re: Programiranje u C++-u - pitanja i odgovori
Zoidberg kaže...

prekrasni kanal za one koji zele nauciti cpp:https://www.youtube.com/user/BoQianTheProgrammer

moguce je da su neki videii losi ali sve sto sam pogledao je dobro...

 

 

emerik budi sretan sto ces potrositi malo vremena na to, ne znas kako je tuzno vidjeti prof programere koji su krenuli programirati sa Javom ili C# pa nemaju pojma sta je to stack ili heap ili malloc. :D

OK,da li se onda ta memorija koja je unutar funkcije dinamički alocirana oslobađa nakon završetka poziva funkcije?Alocira se na heapu,a lokalne varijable se spremaju na stacku pa bi prema nekoj logici ta dinamički alocirana memorija trebala ostati očuvana,no pokazivač na taj dio memorije se izbriše nakon završetka funkcije i ne znam kako da ju oslobodim kasnije.

AC Milan - IL CLUB PIU' TITOLATO AL MONDO
14 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori

Pa već sam ti dao primjer za to na prošloj stranici. Vratiš alociranu memoriju preko pokazivača i onda ju dealociraš u npr. mainu.

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

Alocira se na heapu,a lokalne varijable se spremaju na stacku pa bi prema nekoj logici ta dinamički alocirana memorija trebala ostati očuvana,no pokazivač na taj dio memorije se izbriše nakon završetka funkcije i ne znam kako da ju oslobodim kasnije.

Pa to je upravo to. Nemoj izgubiti taj pokazivač jer onda više nećeš moći osloboditi taj komad memorije i imat ćeš memory leak. To ti je sva mudrost oko toga...

To understand what recursion is, you must first understand recursion.
13 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

Kako uz pomoć for natjerat program da se nakon svakih pet brojeva prebaci u novi red? To bi trebalo izgledati ovako:

1 2 3 4 5

6 7 8 9 10

11 12 13 14 15

Nebo je granica.
Moj PC  
0 0 hvala 0
13 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

ako je brojac % 5 == 0

prebaci u novi red

 
0 0 hvala 0
13 godina
offline
Re: Programiranje u C++-u - pitanja i odgovori
SuperWarrior kaže...

Kako uz pomoć for natjerat program da se nakon svakih pet brojeva prebaci u novi red? To bi trebalo izgledati ovako:

1 2 3 4 5

6 7 8 9 10

11 12 13 14 15

#include <iostream>

using namespace std;

int main()
{
    // pretpostavljam da se radi o nizu brojeva
    int num_array[] = {1 ,2 ,3 ,4, 5,
                       6, 7, 8, 9, 10,
                       11, 12, 13, 14, 15};
    int cnt = 0;
    for (int i = 0; i < (sizeof(num_array)/sizeof(*num_array)); ++i)
    {
       cout << num_array[i] << " ";
       if(++cnt == 5)
       {
          cout << endl;
          cnt = 0;
       }
    }
}

0100011001000001010100000010000000110100001000000100110001001001010001100100010100100001
Poruka je uređivana zadnji put ned 23.3.2014 19:10 (pr0n_addict).
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
SuperWarrior kaže...

Kako uz pomoć for natjerat program da se nakon svakih pet brojeva prebaci u novi red? To bi trebalo izgledati ovako:

1 2 3 4 5

6 7 8 9 10

11 12 13 14 15

    int broj = 0, n = 1;

    for (int red = 1; red <= 3; red++)
    {
        broj += 5;

        for ( ; n <= broj; n++)
        {
            cout << n << " ";
        }

        cout << endl;
    }

 

    for (int n = 1; n <= 15; n++)
    {
        cout << n << " ";

        if (n % 5 == 0)
        {
            cout << endl;
        }
    }

 

    for (int red = 1; red <= 3; red++)
    {
        for (int n = 5 * (red - 1) + 1, broj = 5 * red; n <= broj; n++)
        {
            cout << n << " ";
        }

        cout << endl;
    }

 

Čisto da vidiš koliko načina ima (i vjerojatno još par kojih se nisam sjetio)... biraj.

To understand what recursion is, you must first understand recursion.
Poruka je uređivana zadnji put ned 23.3.2014 19:46 (rustweaver).
13 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

Uspio sam ga riješiti,ali sam krivo napisao šta želim.

Želim da mi broj redova i znamenaka u redu bude isti.

 

Nebo je granica.
Moj PC  
0 0 hvala 0
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori

Objasni

To understand what recursion is, you must first understand recursion.
13 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

Ako upisem da je n=3, onda ću program napisati

1 2 3

4 5 6

7 8 9

a ako napisem da je n=2,onda će pisati

1 2

3 4.

Ovako riješenim zadatkom manipulacijom uvjeta u drugoj for petlji mogu dobiti rješenje zadatka kako sam ga prvo postavio.

Nebo je granica.
Poruka je uređivana zadnji put ned 23.3.2014 19:50 (SuperWarrior).
Moj PC  
0 0 hvala 0
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
SuperWarrior kaže...

Ako upisem da je n=3, onda ću program napisati

1 2 3

4 5 6

7 8 9

a ako napisem da je n=2,onda će pisati

1 2

3 4.

    int stupci = 3;

    for (int n = 1; n <= stupci * stupci; n++)
    {
        cout << n << " ";

        if (n % stupci == 0)
        {
            cout << endl;
        }
    }

To understand what recursion is, you must first understand recursion.
13 godina
offline
Re: Programiranje u C++-u - pitanja i odgovori
SuperWarrior kaže...

Ako upisem da je n=3, onda ću program napisati

1 2 3

4 5 6

7 8 9

a ako napisem da je n=2,onda će pisati

1 2

3 4.

Ovako riješenim zadatkom manipulacijom uvjeta u drugoj for petlji mogu dobiti rješenje zadatka kako sam ga prvo postavio.

Samo omogućiš da broj redova definira korisnik (inače je hardkodiran na 5 u mom primjeru rješenja) i to radi očekivano, nema potrebe za ugnježđivanjem petlji.

0100011001000001010100000010000000110100001000000100110001001001010001100100010100100001
Poruka je uređivana zadnji put ned 23.3.2014 19:57 (pr0n_addict).
15 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

#include <iostream>

#include <string>

#include <math.h>

 

using namespace std;

 

 

 int main()

{

char * znak = new char();

cout << "Upis: "; cin >> znak;

cout << "Ispis: " << znak << endl;

free(znak);

system("PAUSE");

return 0;

}

 

 

Što se točno događa u ovom primjeru? Primjetio sam da mogu upisati više znakova (char je jedan znak inače koliko ja znam).

Da li se u ovom slučaju za svaki znak alocira dodatna memorija? Molio bih nekoga da mi objasni

Poruka je uređivana zadnji put ned 23.3.2014 22:28 (NiGHT_RiDER92).
Moj PC  
0 0 hvala 0
16 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
NiGHT_RiDER92 kaže...

#include <iostream>

#include <string>

#include <math.h>

 

using namespace std;

 

 

 int main()

{

char * znak = new char();

cout << "Upis: "; cin >> znak;

cout << "Ispis: " << znak << endl;

free(znak);

system("PAUSE");

return 0;

}

 

 

Što se točno događa u ovom primjeru? Primjetio sam da mogu upisati više znakova (char je jedan znak inače koliko ja znam).

Da li se u ovom slučaju za svaki znak alocira dodatna memorija? Molio bih nekoga da mi objasni

 

http:/https://play.google.com/store/apps/details?id=org.kde.necessitas.example.SMASHHH
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori

Hvala, kuzim, ovo je bio samo primjer gdje me zanimalo što se događa, ali sad je moje pitanje: kako onda alocirati memoriju za char (nesto tipa string gdje ne definiram velicinu), znaci "neograničeno"

(znam da nije neograničeno, karikiram).

15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
NiGHT_RiDER92 kaže...

Hvala, kuzim, ovo je bio samo primjer gdje me zanimalo što se događa, ali sad je moje pitanje: kako onda alocirati memoriju za char (nesto tipa string gdje ne definiram velicinu), znaci "neograničeno"

(znam da nije neograničeno, karikiram).

Nikako, memorija se neće sama po sebi alocirati/dealocirati sukladno tvojim potrebama. Svaki puta kada alociraš memoriju moraš odrediti koliko točno memorije želiš. npr:

 

char *polje = new char[100];

to će ti dati pokazivač na komad memorije velik 100 charova (100 bajta)

 

char *znak = new char;

ovo će ti dati pokazivač na jedan char

 

I to je to, koliko si tražio toliko si i dobio (osim ako nisi iscrpio svu memoriju), ako želiš još moraš ponovno zatražiti.

 

Sve ostalo moraš implementirati sam (ako nećeš koristiti STL containere). Samo zato što ti pokušavaš upisati 200 bajta u polje koje je 100 bajta dugo ne znači da će se tvoj alocirani komad memorije rastegnuti za još 100 bajta. Jednostavno ćeš izletjeti izvan granica polja što može dovesti do page faulta, korupcije stacka, korupcije nekih drugih varijabli, a može i ne izazvati ikakve posljedice ako imaš sreće pa nisi overwriteao nešto esencijalno. Moraš sam implementirati logiku koja pokriva takve slučajeve i upravlja memorijom.

 

Klasa string za tebe iza kulisa upravlja memorijom, alocira i dealocira memoriju po potrebi tako da se ti ne moraš o tome brinuti. Isto tako vector klasa ti daje generička "rastezljiva" polja.

 

Odgovor na tvoje pitanje: koristi vector koji će to sve raditi za tebe.

To understand what recursion is, you must first understand recursion.
Poruka je uređivana zadnji put pon 24.3.2014 16:47 (rustweaver).
14 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
NiGHT_RiDER92 kaže...

Hvala, kuzim, ovo je bio samo primjer gdje me zanimalo što se događa, ali sad je moje pitanje: kako onda alocirati memoriju za char (nesto tipa string gdje ne definiram velicinu), znaci "neograničeno"

(znam da nije neograničeno, karikiram).

Što fali UnicodeString-u ili običnoj string klasi? Npr. UnicodeString se dinamički interno proširuje i može maksimalno iznositi koliko je RAM memorije dostupno u sustavu.

Kada lajavci laju onda završe ovako: http://i471.photobucket.com/albums/rr77/toropreto/2012-07-0813_30_07.gif
12 godina
offline
Re: Programiranje u C++-u - pitanja i odgovori
nik_02 kaže...

pointer na char ti dize 8byte mem i tu lupas sto hoces
iza 8bytea riskiras jer pises po nepoznatom

Ovaj dio komentara nije tocan: pointer na char ima 8 bytea, ali tu ne lupas nista - tu je adresa memorije na koju pokazivac pokazuje. Pointer na bilo sto ima velicinu 8 byteova u 64-bitnim aplikacijama, a 4 bytea u 32-bitnim.
U njegovom slucaju rizik je nakon prvog znaka.

16 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
NiGHT_RiDER92 kaže...

Hvala, kuzim, ovo je bio samo primjer gdje me zanimalo što se događa, ali sad je moje pitanje: kako onda alocirati memoriju za char (nesto tipa string gdje ne definiram velicinu), znaci "neograničeno"

(znam da nije neograničeno, karikiram).

 

Kompajler mora znati čime barata tako da ovo šta veliš ne prolazi.

Koristi kako su ti rekli , vektor , list ... ili sami string.

Time imaš ono što želiš iako i navedene klase polažu račune kompajleru 

alokacijom , dealokacijom no ti si kao krajnji korisnik spomenutih oslobođen

u danom trenutku misliti o tome.

 

http:/https://play.google.com/store/apps/details?id=org.kde.necessitas.example.SMASHHH
15 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

imam pitanje. 

koliko vam je trebalo da sve to naučite i budete dobri programeri, da znate dobro to radit?? Mislim da me to zanima al kad vidim to sve mi se čini da je užasno teško. I još ću upisati informatiku ove godine a nisam puno programirao, samo nešto malo u 2. razredu uglavnom osnove i neke prejednostavne funcije.

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

koliko vam je trebalo da sve to naučite i budete dobri programeri, da znate dobro to radit?? Mislim da me to zanima al kad vidim to sve mi se čini da je užasno teško.

Ako misliš da te zanima onda te vjerojatno ne zanima. Stvar je jednostavna, ako kuckaš kod zato jer ti je to zanimljivo a ne zato jer ti je to netko rekao (zadaća?) onda možeš reći da te to zanima.

 

Jako je nezahvalno davati nekakve vremenske procjene jer je previše faktora upleteno. Recimo samo da se vrijeme potrebno za stjecanje iskustva u programiranju mjeri u godinama a ne u danima ili mjesecima. Sad znaš o kojoj otprilike vremenskoj skali pričamo... ali ako te to doista zanima te će godine brzo proletjeti.

To understand what recursion is, you must first understand recursion.
11 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

Dobar dan ljudi,

 

Zanima me da li ima tko kakve zadatke za programiranje u c-u za poslati, i mozda i ako ima kakva podjela od pocetnika do ono naprednog? 

 

Zahvaljujem se!

Lp.

 
0 0 hvala 0
E-mail:
Lozinka:
 
vrh stranice