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

poruka: 7.285
|
čitano: 1.712.401
|
moderatori: Lazarus Long, XXX-Man, vincimus
+/- sve poruke
ravni prikaz
starije poruke gore
14 godina
odjavljen
offline
Re: Programiranje u C++-u - pitanja i odgovori
Floki kaže...
Dex.pwn kaže...
Jesam, provjera dobro radi

 Ne treba ti namespace std, koristiš C a ne standardnu biblioteku C++.

 

Ispis char niza možeš napraviti i ovako.

Dekadska vrijednost char znaka za prekid niza je 0, a u C i C++ bool vrijednost od 0 je false, za različito od 0 je true.

 

char n[12] = "12345";
   int i = 0;
   while (n[i])
      printf("%c", n[i++]);

 

Hvala. Nisam ni vidio da mogu i tako napisati while petlju.

16 godina
offline
Programiranje u C++-u - pitanja i odgovori

izvukao sam znamenke broja ,zamjenio sto treba i kako da ih vratim sad u cijeli broj opet ,napraviti to pomocu polja ili ima bolje rjesenje? ako ispisujem znamenku za znamenkom dobijem obrnuti broj

Poruka je uređivana zadnji put uto 12.4.2016 20:02 (loky4i4).
Moj PC  
0 0 hvala 0
17 godina
offline
Programiranje u C++-u - pitanja i odgovori

Ne znam zašto si izbrisao ali pitanje itekako ima smisla.

Kako iz zadanog redosljeda znamenki napraviti broj obrnutog redosljeda znamenki od zadanog.

 

 

int broj = 0, potencija = 1;
   vector<int> znamenke = { 3,2,1 };
   for (int znamenka : znamenke)
   {
      broj += potencija * znamenka;
      potencija *= 10;
   }
   cout << broj << endl;

 
0 0 hvala 0
14 godina
odjavljen
offline
Programiranje u C++-u - pitanja i odgovori

Hmm, da vas pitam nešto. Kakva je to for petlja, tj. njen oblik. for(int i : var)

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

Hmm, da vas pitam nešto. Kakva je to for petlja, tj. njen oblik. for(int i : var)

 Koristi se za neke kontejnere iz STL, kao npr. vector kontejner.

Sa iteratoima iterira element po element kontejnera.

Ovo je tipičan primjer upotrebe, niti mi treba index operator vectora, niti namjeravam mijenjati elemente vectora, nego jedino trebam elemete po redosljedu.

Uz to mi je bilo i lakše napisati.

Poruka je uređivana zadnji put sri 13.4.2016 15:05 (Floki).
14 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

Pozdrav

Na faksu smo dobili u blic testu ovaj programcic i morali smo odgovoriti sta se ispisuje.

 

#include<iostream>
#include<cstdlib>
using namespace std;

int main()
{
int a = 100, b = 0;
do
b = a;
while(a--);
cout << b << endl;

system("pause");
return 0;
}

 

Odgovor je naravno 0, ali mene zanima moze li mi netko pojasniti kako funkcionira do while petlja ako je "a--" zadan kao uvjet.

Kuzim da bi se trebala provjeravati istinitost zadanog uvjeta ali ne kuzim kako se kod "a--" moze provjeriti istinitost i zasto se vrti do nule.

 

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

Pozdrav

Na faksu smo dobili u blic testu ovaj programcic i morali smo odgovoriti sta se ispisuje.

 

#include<iostream>
#include<cstdlib>
using namespace std;

int main()
{
int a = 100, b = 0;
do
b = a;
while(a--);
cout << b << endl;

system("pause");
return 0;
}

 

Odgovor je naravno 0, ali mene zanima moze li mi netko pojasniti kako funkcionira do while petlja ako je "a--" zadan kao uvjet.

Kuzim da bi se trebala provjeravati istinitost zadanog uvjeta ali ne kuzim kako se kod "a--" moze provjeriti istinitost i zasto se vrti do nule.

 

 Provjerio 100 pa smanjio na 99 tek kad je prošao tu liniju, odnosno semicolon iza te linije gdje je while.

Što da je bilo while(--a), koliki bi bio b?

Poruka je uređivana zadnji put sri 13.4.2016 15:16 (Floki).
14 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori

da je --a bio bi 1 logicno :D .. znam ja kako radi a-- i --a.. ali ne razumijem kako while petlja moze u zagradama imati naredbu kao sto je a-- ili slicno... jer koliko ja kuzim while petlja radi tako dugo dok je uvjet istinit..ne kuzim sta kod a-- ima biti istinito ili ne

17 godina
offline
Re: Programiranje u C++-u - pitanja i odgovori
popay4 kaže...

da je --a bio bi 1 logicno :D .. znam ja kako radi a-- i --a.. ali ne razumijem kako while petlja moze u zagradama imati naredbu kao sto je a-- ili slicno... jer koliko ja kuzim while petlja radi tako dugo dok je uvjet istinit..ne kuzim sta kod a-- ima biti istinito ili ne

 Postavi pitanje drukčije.

Što kod int varijable a ima biti istinito ili ne.

Kod C izvorno int od 0 je false a različito od 0 je true. C++ je naslijedio tu osobinu bez obzira što C++ ima tip varijable bool, što C nema, pa je to i bio razlog zašto je int kod C predstavljao bool tip podataka.

 

Stavi inkremente ili dekremente nastranu, oni samo povećavaju ili smanjivaju varijablu, prije ili poslije izvršenja linije u kojoj se nalaze.

Poruka je uređivana zadnji put sri 13.4.2016 16:24 (Floki).
14 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori

dobro skuzio sam kada sam pisao prethodnu poruku ali sam se samo htio uvjeriti dali sam u pravu... nisam shvacao da je 0 false a sve razlicito od nule true.. 

17 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
Dex.pwn kaže...

Hmm, da vas pitam nešto. Kakva je to for petlja, tj. njen oblik. for(int i : var)

To se zove foreach petlja i kao sto je receno, "posebna" je samo po tome sto iterira po redu od prvog do zadnjeg elementa neke kolekcije. Najlakse ti je zamisliti si da se element iz var kopira u i, i onda ti dalje unutar petlje radis s tim i-jem.

 

Recimo, Python ti ima samo takvu for petlju, nema one klasicne s brojacem.

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

Znači s njome mogu prolaziti kroz arraye (int array[5];)?

 
0 0 hvala 0
14 godina
odjavljen
offline
Re: Programiranje u C++-u - pitanja i odgovori
Zanima me šta je heap a šta stack? Koja je razlika? Gledam ove pripreme za MTA i ne kužim zašto spremaju spol kao char(M ili F). Zar nije bolje utjerat to u jednobitnu varijablu?
 
0 0 hvala 0
17 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
Dex.pwn kaže...

Znači s njome mogu prolaziti kroz arraye (int array[5];)?

Da,

for (int element : array) { // bla bla nesto s element }

ce raditi. (samo u C++11 standardu, naravno)

Dex.pwn kaže...
Zanima me šta je heap a šta stack? Koja je razlika? Gledam ove pripreme za MTA i ne kužim zašto spremaju spol kao char(M ili F). Zar nije bolje utjerat to u jednobitnu varijablu?

Ovo za heap i stack ti sad ne stignem odgovoriti jer sam na odlasku, bude vec netko drugi.

Sto se tice drugog dijela, ne postoji jednobitna varijabla. Najmanja moguca vrijednost koju mozes pohraniti u C/C++-u je char. Koliko to iznosi ovisi o arhitekturi, ali u principu je to osam bitova, tj. oktet (ili bajt, mada bajt ne mora nuzno znaciti osam bitova).

Perhaps today IS a good day to die. PREPARE FOR RAMMING SPEED!
Poruka je uređivana zadnji put sri 13.4.2016 18:38 (1domagoj1).
16 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
Dex.pwn kaže...
Zanima me šta je heap a šta stack? Koja je razlika? Gledam ove pripreme za MTA i ne kužim zašto spremaju spol kao char(M ili F). Zar nije bolje utjerat to u jednobitnu varijablu?

 

Kada god pokrenes nekakav program, on dobije svoj dijelic memorije. Gledaj paralelno ovu sliku dok citas nastavak.

Dakle svaki program se sastoji od slicne strukture kao na slici. Recimo, ovaj program je dobio memoriju od adresa 0x804800 pa do 0xBFFFFFFF. Ta memorija se podijeli na dijelove :

TEXT - ucitani source programa 

DATA – inicijalizirane globalne i statičke lokalne varijable

BSS - neinicijalizirane globalne i statičke lokalne varijable

 

Ono sto ostaje su heap i stack. Stack je dio memorije na koji idu sve lokalne varijable, pozivi funkcija itd. Na heapu zivi dinamicki alocirana memorija ( ovo je slika za c pa stoji malloc(), u c++ je to pretpostavljam sve sto stvoris sa new). Na heap opcenito idu "teške" stvari tj. sve ono sto zauzima gomilu memorije. Ovo je nekakvo povrsno objasnjenje cisto da steknes sliku kako to radi, najbolje ti je googlat konkretne stvari.

 

 

 

16 godina
offline
Programiranje u C++-u - pitanja i odgovori

jel netko isao na drzavno (honi) zanima me kako se pripremiti za takve ispite , nije da ja planiram jer sam malo prestar ali me ovak zanima jer mi se zadaci cine onak teski pomalo ,prva tri se moze al ostale zadatke tesko 

Moj PC  
0 0 hvala 0
14 godina
odjavljen
offline
Re: Programiranje u C++-u - pitanja i odgovori
Zar se ne može spremiti samo nula i jedan(jedan bit - bool?). 0 muško, 1 žensko
14 godina
odjavljen
offline
Re: Programiranje u C++-u - pitanja i odgovori
Zar se ne može spremiti samo nula i jedan(jedan bit - bool?). 0 muško, 1 žensko
14 godina
odjavljen
offline
Re: Programiranje u C++-u - pitanja i odgovori
Hvala ti. Pogledat ću kasnije jer sam trenutno na mobitelu
17 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
Dex.pwn kaže...
Zar se ne može spremiti samo nula i jedan(jedan bit - bool?). 0 muško, 1 žensko

Ne. Nemoj mijesati dva stanja (true - 1 i false - 0) s velicinom tog podatka u racunalu. U pravu si, kod bool tipa varijable imas samo true (1) i false (0) kao moguce vrijednosti, ali u memoriji to i dalje zauzima najcesce jedan oktet (bajt). Ako ne vjerujes, pogledaj sto ce ti vratiti sizeof(bool) (vraca velicinu u bajtovima).

 

Jedno prakticno pitanje, kako bi ti u memoriji racunala adresirao odredeni pojedinacni bit?

EDIT: Postoji nesto sto se zove bitovno polje, ali i dalje ti treba prostora vise od jednog bita. ;)

Perhaps today IS a good day to die. PREPARE FOR RAMMING SPEED!
Poruka je uređivana zadnji put čet 14.4.2016 21:54 (1domagoj1).
12 godina
offline
Re: Programiranje u C++-u - pitanja i odgovori
1domagoj1 kaže...
Jedno prakticno pitanje, kako bi ti u memoriji racunala adresirao odredeni pojedinacni bit?

EDIT: Postoji nesto sto se zove bitovno polje, ali i dalje ti treba prostora vise od jednog bita. ;)

Bit maskom :)
I dalje je barem byte ali ako imas vise takvih binarnih varijabli, mozes efektivno dobit 1 bit po varijabli. No zrtvuju se performanse, pa osim ako nije neki embedded slucaj gdje si jako u stici s memorijom, ne preporucuje se.

14 godina
odjavljen
offline
Re: Programiranje u C++-u - pitanja i odgovori
1domagoj1 kaže...
Dex.pwn kaže...
Zar se ne može spremiti samo nula i jedan(jedan bit - bool?). 0 muško, 1 žensko

Ne. Nemoj mijesati dva stanja (true - 1 i false - 0) s velicinom tog podatka u racunalu. U pravu si, kod bool tipa varijable imas samo true (1) i false (0) kao moguce vrijednosti, ali u memoriji to i dalje zauzima najcesce jedan oktet (bajt). Ako ne vjerujes, pogledaj sto ce ti vratiti sizeof(bool) (vraca velicinu u bajtovima).

 

Jedno prakticno pitanje, kako bi ti u memoriji racunala adresirao odredeni pojedinacni bit?

EDIT: Postoji nesto sto se zove bitovno polje, ali i dalje ti treba prostora vise od jednog bita. ;)

 

De pročitaj onda ovo. Kako je lik mogao natjerati da on to bilježi kao 1bit?

Nije C++ ali je i dalje na računalu.

http://forum.sa-mp.com/showthread.php?t=275142

12 godina
offline
Re: Programiranje u C++-u - pitanja i odgovori
Dex.pwn kaže...

 

De pročitaj onda ovo. Kako je lik mogao natjerati da on to bilježi kao 1bit?

Nije C++ ali je i dalje na računalu.

http://forum.sa-mp.com/showthread.php?t=275142

Koristi bitfields (bitovna polja spomenuta gore). I dalje ne moze imat jednu varijablu da koristi samo jedan bit. Ali ako ih ima 8, mozes ih strpat sve u jedan byte i onda bit-maskom pristupat pojedinoj varijabli, dakle svih 8 zauzima jedan byte, iliti bit po varijabli. I kako rekoh gore, sve te bit-manipulacije kostaju CPU cikluse, a ima i drugih nedostataka, pa se rijetko kad isplati, vidi npr. https://blogs.msdn.microsoft.com/oldnewthing/20081126-00/?p=20073

17 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
Dex.pwn kaže...

 

De pročitaj onda ovo. Kako je lik mogao natjerati da on to bilježi kao 1bit?

Nije C++ ali je i dalje na računalu.

http://forum.sa-mp.com/showthread.php?t=275142

Eto, sve ti je objasnjeno. Stavio sam poveznicu u EDIT-u, ali mozda nisi vidio odmah taj EDIT. Bitovna polja i dalje zahtijevaju neki "okrugli" broj zauzete memorije (8, 16, 32... bita) zbog adresiranja u memoriji. Fizicki je nemoguce adresirati pojedinacni bit jer memorija nije gradena od pojedinacnih bitova vec od skupina bitova, da se tako izrazim, koji cine vece jedinice. Tako da ako imas 8 true/false varijabli, slobodno iskoristis bitovno polje s maskom. Ako imas jednu, i zbog nje ides raditi bitovno polje, ono ce opet zauzeti bajt (ili vise). Vidi ovaj kod s Wikipedije:

// bit field box properties
struct box_props
{
     unsigned int opaque       : 1;
     unsigned int fill_color   : 3;
    unsigned int              : 4; // fill to 8 bits
     unsigned int show_border  : 1;
     unsigned int border_color : 3;
     unsigned int border_style : 2;
    unsigned int              : 0; // fill to nearest byte (16 bits)
     unsigned char width       : 4, // Split a byte into 2 fields of 4 bits
                   height      : 4;
};

Primjeti ovo podebljano kako nadopunjavaju do okteta (bajta) pa 2 okteta (bajta).

 

Mozes koristiti bitovno polje, ali u principu to danas nije potrebno. Bar ne sto se tice klasicnih stolnih racunala gdje danas imamo prakticki minimalno po 4 GB memorije. Ako programiras nesto za mikrokontrolere i sl. to je onda druga prica.

Inace, jednostavno koristi bool i olaksaj si.

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

Hteo bih da napravim graficki program ali ne znam zbog ceka nece da se pokrene, da li neko zna u cemu je greska? 

Miki.Zecevic
Moj PC  
0 0 hvala 0
17 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
Miki_Zecevic kaže...

Hteo bih da napravim graficki program ali ne znam zbog ceka nece da se pokrene, da li neko zna u cemu je greska? 

Pa da napises koju gresku izbaci mozda bi i znali u cemu je greska. Ovako vidim samo crveno oznaceno jednu liniju koda i znam isto koliko i ti.

Perhaps today IS a good day to die. PREPARE FOR RAMMING SPEED!
14 godina
odjavljen
offline
Re: Programiranje u C++-u - pitanja i odgovori
1domagoj1 kaže...
Miki_Zecevic kaže...

Hteo bih da napravim graficki program ali ne znam zbog ceka nece da se pokrene, da li neko zna u cemu je greska? 

Pa da napises koju gresku izbaci mozda bi i znali u cemu je greska. Ovako vidim samo crveno oznaceno jednu liniju koda i znam isto koliko i ti.

 

Vjerojatno ne postoji include, čim je error na linij gdje se ubacuje include.

17 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
Dex.pwn kaže...

Vjerojatno ne postoji include, čim je error na linij gdje se ubacuje include.

To se da zakljuciti, ali svejedno uvijek treba pogledati gresku i onda na temelju toga rjesavati problem.

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

Koja je razlika između while i do while petlje, osim u izgledu? Kada ću koju koristiti?

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

While prvo provjeri uvjet pa izvrši tijelo, do while prvo izvrši tijelo, a tek onda provjeri uvjet. Do while će uvijek barem jednom izvršiti tijelo. Koristi ih ovisno kakvo ponašanje ti treba.

E-mail:
Lozinka:
 
vrh stranice