C++ pomoc

poruka: 65
|
čitano: 8.398
|
moderatori: Lazarus Long, XXX-Man, vincimus
+/- sve poruke
ravni prikaz
starije poruke gore
17 godina
offline
Re: C++ pomoc
Tonči kaže...

Prvo, učiti C++ u srednjoj školi može biti kontraproduktivno, pogotovo ako je prvi jezik. Drugo, nema vas što "profesor učiti", u drugom srednje bi već trebao znati engleski solidno i dovoljno da možeš surfati Internetom, a svo znanje je na Internetu i uglavnom je posve besplatno. Također, ako već učite C++, odeš i kupiš pokoju knjigu i ne čekaš profesora.

 

No, kako rekoh, C++ može biti kontraproduktivan, posebno ako već nisi "na ti" s logikom i booleovom algebrom i ako se ne predaje kako treba, a to je očito slučaj.

Zasto kontraproduktivno. Mi smo u ETŠ u Splitu najprije radili u Basicu, pa onda u Pascalu, pa onda u C-u. Maturirao sam 2002. Zar nije bilo pametnije da smo odmah išli na C++ i na OOP i to radili 4 godine nego ovako bauljali?

Rvat katolik!
16 godina
odjavljen
offline
Re: C++ pomoc

Zato što je koncept programiranja mnogo lakše naučiti na modernijem jeziku s GC-om. Svakako mislim da su C ili C++ koristni za napredno učenje, ali Java i C# su daleko prikladniji jezici za učenje.

Sve što napišem moj je osobni stav i ne odražava nužno stav Bug d.o.o.
17 godina
offline
Re: C++ pomoc
Tonči kaže...

Zato što je koncept programiranja mnogo lakše naučiti na modernijem jeziku s GC-om. Svakako mislim da su C ili C++ koristni za napredno učenje, ali Java i C# su daleko prikladniji jezici za učenje.

Problem je u tome sto se programi u nasim skolama (i fakultetima) poprilicno sporo mijenjaju. Cudim se sto nisu jos uvijek na Basicu :)

Rvat katolik!
17 godina
neaktivan
offline
Re: C++ pomoc

Python.

Ne bih Javu dao nekome tko prvi puta programira da se na njoj uci programirati pa da i sjekire padaju. Za C# ne znam, nisam dovoljno upoznat s njim, rekao bih da je cisci od Jave, ali i dalje prednost dajem Pythonu.

Perhaps today IS a good day to die. PREPARE FOR RAMMING SPEED!
17 godina
offline
Re: C++ pomoc
crolux kaže...
eTracerCPP kaže...

Odem na kavu i evo koliko propustim {#}

 

Moje mišljenje je da dotični uopće ne radi u C++u već u C-u. Code koji je priložio ne slijedi nikakva pravila C++ jezika tj. u codu koristi C headere, deklarira varijable van petlje, koristi printf i scanf itd.. Tako da, prije bih rekao da dotični koristi nekakav C++ IDE u kojemu radi C a ne C++ aplikacije. S obzirom na dio coda koji je on napravio logično je da mu je jednostavnije shvatiti rješenje napisano u C jeziku nego li u C++u, iako i sa time ima previše problema, a kamoli još s kontejnerima, C++11 itd..

 

Zapravo, volio bih da se sam autor ovdje javi i kaže što on točno uči. C ili C++? Ili C pomoću C++ IDE-a?

Evo koliko me je dotični profesor Nadarević naućio, mi po njemu radimo "C++", ovako kao što sam ja riješio zadatak (iako je netočan), tako bi zadatak trebao izgledati. Znaći #include<stdio.h><math.h><string.h>, printf,scanf/gets,for,if,while,return 0....sve to smo radili.
I ne, neizvlačim se s "to nismo učili", imam sve u bilježnici, svaku riječ koju je izdiktirao ili zadatak koji je izrekao. Naučio sam sve iz nje, svako slovo! I ako nešto neznam to znaći da nismo učili tj. da nas profesor nije naučio.
Svaki dan zadnja 2 tjedna sam proveo ispisivajući zadatke na kompu i u bilježnicu (svaki dan 3 sata, dosada sam ispunio oko 100 papira i 2 bilježnice xD), voljan sam naučiti ali moj profesor očito  nije voljan predavati jer je uvijek mrzovoljan i ako mu kažeš da nešto nerazumiješ pošalje te na ploču da riješiš zadatak koji nisi znao riješiti te ti naravno da 1 u imenik jer ga nisi znao riješiti.
Čovjek je zadnji ološ i nebi trebao raditi kao profesor ako se stalno dere na nas i neuči nas ničemu a traži znanje kao da si na FER-u.
Već smo se žaliti bezbroj puta na njega (mislim na nas učenike i njihove roditelje) no bezuspješno. Razrednica uvijek opravdava profesora i kaže da je naša krivica što svi imamo tako loše ocjene kod njega :/
Nakraju roditelji odustanu jer ih razrednica uvjeri da smo mi krivi a ne profesor, i profesor opet nastavlja po svome.
Jedne je godine srušio 20 njih iz istog razreda i nije imao nikakvih problema zbog toga. Po tome zaključite dali sam ja kriv što nemam znanja iz "C++-a" ili profesor.

Pa jesi li sad shvatio koncept kako se takav zadatak rješava, ne smiješ to učiti napamet, nego shvatiti koncept.

Najprije razmisliš što se traži u zadatku. Ovdje trebaš filtrirati niz od 5 članova i staviti filtrirane članove u drugi niz, a pošto filtriranih članova može biti 5 ili manje, deklariraš još jedan b niz veličine 5 članova i tu stavljaš filtrirane članove.

Pošto imamo dva niza koja ćemo prošetati kroz petlju, znači da trebamo deklarirati i brojač petlje i. Provjeru članova niza a vršimo u petlji, a filtrirane članove dodajemo u drugi niz b. Pošto taj drugi niz prima članove prvog niza, ali ne sve niti po redu, nego npr. tek treći, pa više nijedan, mora biti nekakva varijabla brojac koja počinje od 0, kao i index niza, i koja će se nakon što pridružimo element nizu b povećati za 1, da bi u pridruživanju sljedećeg elementa nizu b pridružio element na sljedeći index niza. Tako deklariramo varijablu brojac koja će se povećavati za 1 nakon što pridružimo element nizu b. 

 

Filtriranje izvršiš preko if uvjeta, tako da u prvi uvjet staviš izraz a[i] != (int)a[i] - to u stvari znači ako imaš broj 4.23 da ispituješ relaciju 4.23 != 4 - pošto je izraz istinit, ulazimo u if blok, odnosno sa tim smo filtrirali decimalne brojeve

Još moramo filtrirati od onih brojeva koji su ušli u prvi if uvjet one kojima je dekadski dio paran, a to radimo sa drugim if uvjetom u kojeg stavimo izraz (int)a[i]]%2 == 0 , u stvari ako imamo broj 4.23, nakon casta u int ostaje 4%2, a to je 0.

To znaš da modulo 2 od int broja ispituje parnost, i kad je broj paran da je rezultat 0. Dakle, pošto smo ispunili i drugi uvjet za broj 4.23, slijedi nam pridruživanje elementa u niz b.

 

b[brojac++] = sqrt((int)a[i]);

 

Inkrement na varijablu brojac sam ti objasnio u postu prije, a sad ću još jednom. Pošto smo deklarirali varaijablu brojac na 0, a ovo nam je prvo pridruživanje, to znači da pridružujemo korijen iz dekadskog dijela broja 4.23, odnosno korijen iz 4 na indeks b[0] od niza b. Pitao si prije zašto imamo cast int u funkciji sqrt, jednostavno jer trebamo korijen iz 4, a ne korijen iz 4.23. Kad je pridruživanje, odnosno ona linija koda završena i program pošao na sljedeću liniju koda, aktivira se inkrement, odnosno izraz brojac++, koji povećava varijablu brojac za 1 jer u stvari znači brojac = brojac + 1. To znači da kad sljedeći put budemo vršili pridruživanje da ćemo ga vršiti na indeksu b[1], a onda nakon pridruživanja će se varijabla brojac ponovno povećati, i tako dok ne završi petlja, kad petlja završi, mi smo formirali niz b kojeg još trebamo ispisati.

 

Niz b ćemo ispisati u drugoj petlji, ali imamo problem, ne znamo koliko on ima članova, maksimalno može 5, ali može i manje. Sad nam varijabla brojac uskače u pomoć, ona se povećala za 1 taman toliko puta koliko smo puta vršili pridruživanje elemenata nizu b, npr. kad smo pridružili nizu b prvi element na index b[0], nakon toga je varijabla brojac postala 1. Dakle ako imamo tri elementa u nizu b koja trebamo ispisati, varijabla brojac iznosi 3, i možemo prekinuti petlju za ispis sa varijablom brojac, pošto ćemo ispisati elemente na indexima 0, 1, 2, a to je ono što nam treba.

 

for(i = 0; i < brojac; i++)

   printf("%f ", b[i]);           // ovo ti je ispis u jednom redu sa razmakom između brojeva

Poruka je uređivana zadnji put sri 7.8.2013 19:34 (Floki).
Nova poruka
E-mail:
Lozinka:
 
vrh stranice