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

poruka: 7.285
|
čitano: 1.701.328
|
moderatori: Lazarus Long, XXX-Man, vincimus
+/- sve poruke
ravni prikaz
starije poruke gore
16 godina
offline
Re: Programiranje u c++-u- pitanja i odgovori
Niti j nije inicijaliziran.Koju to knjigu imaš?
HTC Desire Android
16 godina
neaktivan
offline
Re: Programiranje u c++-u- pitanja i odgovori
unknown kaže...

 

zbunjuje me jedna linija koda pa ako bi mi ju netko mogao pojasniti kako radi ili to nije potrebno?

 

 

for(j = i; j>=1  && polje[j-1] > pom; j--)

za ( j = i; ako je "j" manje ili jednako 1 i element polja na poziciji "j-1" veci od vrijednosti varijable pom; umanji "j" za 1)

 

jasno, petlja ce se izvrsavati sve dok je uvjet zadovoljen

All religions are the same: religion is basically guilt, with different holidays.
14 godina
neaktivan
offline
Programiranje u c++-u- pitanja i odgovori

@emerik

Sve je ispravno. Očito ne poznaješ insertion sort algoritam.

 

for(j = i; j>=1  && polje[j-1] > pom; j--)

 

Ovo je dio algoritma koji služi umetanju elementa na odgovarajuće mjesto u polju. Znači, kreće se od i-te pozicije u polju te se ide u lijevo (j--) sve dok je element koji se umeće manji od onog u polju (polje[j-1] > pom) ili dok se ne dođe do 1. elementa u polju (ispred nultnog nije moguće umetnuti element).

Moj PC  
1 0 hvala 2
16 godina
neaktivan
offline
Programiranje u c++-u- pitanja i odgovori

I meni se knjiga ne cini nesto dobra jer kad se vec koriste c++ objekte bilo bi dobro drzati se preporucenog nacina deklariranja varijabli

neposredno prije sto se koriste pogotovo za petlje jer se tako umanjuje njihov scope i smanji mogucnost greske, za for petlju npr.:

 

for( int index = 0; index < MAX; index--)

sto u ovom slucaju i nebi bilo zgodno jer je program napisan tako da koristi varijablu "i" na vise mjesta.

 

Takoder nije dobra praksa izostavljati viticaste zagrade pri koristenju petlji i koristenje imena varijabli koji nemaju veze sa njihovom funkcijom

ili sadrzajem, itd..

All religions are the same: religion is basically guilt, with different holidays.
 
2 0 hvala 0
17 godina
offline
Re: Programiranje u c++-u- pitanja i odgovori
drnde kaže...

 

I meni se knjiga ne cini nesto dobra jer kad se vec koriste c++ objekte bilo bi dobro drzati se preporucenog nacina deklariranja varijabli

neposredno prije sto se koriste pogotovo za petlje jer se tako umanjuje njihov scope i smanji mogucnost greske, za for petlju npr.:

 

for( int index = 0; index < MAX; index--)

sto u ovom slucaju i nebi bilo zgodno jer je program napisan tako da koristi varijablu "i" na vise mjesta.

 

Takoder nije dobra praksa izostavljati viticaste zagrade pri koristenju petlji i koristenje imena varijabli koji nemaju veze sa njihovom funkcijom

ili sadrzajem, itd..

 

knjiga je dobra. Za viticaste zagrade sam ja kriv nisam ih prepisao.

It's hard to believe That there's nobody out there It's hard to believe That I'm all alone...
16 godina
neaktivan
offline
Re: Programiranje u c++-u- pitanja i odgovori
unknown kaže...
drnde kaže...

 

...

 

knjiga je dobra. Za viticaste zagrade sam ja kriv nisam ih prepisao.

Hahaha, pa nemoj to raditi čovjeće, stičeš loše navike i prije nego što se naučis programirati kako spada {#}

All religions are the same: religion is basically guilt, with different holidays.
Poruka je uređivana zadnji put uto 23.8.2011 20:09 (drnde).
17 godina
offline
Re: Programiranje u c++-u- pitanja i odgovori
drnde kaže...
unknown kaže...
drnde kaže...

 

...

 

knjiga je dobra. Za viticaste zagrade sam ja kriv nisam ih prepisao.

Hahaha, pa nemoj to raditi čovjeće, stičeš loše navike i prije nego što se naučis programirati kako spada {#}

hahaha nije mi se dalo xD bilo mi je vaznoa da saznam nacin funkcioniranja xD 

 

It's hard to believe That there's nobody out there It's hard to believe That I'm all alone...
14 godina
neaktivan
offline
Re: Programiranje u c++-u- pitanja i odgovori

Zna se čemu služe vitičaste zagrade i one nisu pravilo ako je riječ o jednoj naredbi. Eventualno, tek preporuka na početničkom nivou. Mislim da je uvijek sve u redu ako programer uredno piše code. Npr.

 

for(.......)

    naredba;

 

for(......)

{

    naredba1;   

    naredba2;

}

 

Znači, jasnim uvlačenjem coda korištenjem tab-a i sl. se uvijek dobije brz pregled. Zna se koji blok naredbi je ispod čega i kada se izvršava, bez obzira na vitičaste zagrade. Štoviše, ako se ovako piše code (uvlačenjem) onda se vrlo lako i detektira greška s vitičastim zagradama.

 

Poruka je uređivana zadnji put uto 23.8.2011 20:28 (TracerCPP).
16 godina
neaktivan
offline
Programiranje u c++-u- pitanja i odgovori

@Tracer,

 

Nisam ni rekao da je pravilo, nego dobra praksa. Ništa se ne gubi korištenjem zagrada kod petlji i uvjeta i kada je

samo jedna naredba ali ako mene pitas dobijes na jasnoci i konzistentnosti koda.

 

Na kraju krajeva svako pise kako njemu pase, nije nista oko cega se vrijedi prepirati {#}

All religions are the same: religion is basically guilt, with different holidays.
Poruka je uređivana zadnji put uto 23.8.2011 20:37 (drnde).
 
3 0 hvala 0
13 godina
neaktivan
offline
Programiranje u c++-u- pitanja i odgovori

Ovako,program mi ispisuje prosječnu vrijednost kao cijeli broj,ako dolje kod izračunavanja prosječne vrijednosti ne stavim static_cast.Postoji neki drugi način kako dobiti float broj?Hvala.Trebate napraviti neku datoteku s brojevima pa probajte.

 

 #include<iostream>#include<fstream>using namespace std;int main() {    ifstream ulazniTok("brojevi.txt");    cout<<"Sadrzaj datoteke:"<<endl<<endl;    float broj;    int suma = 0;    int BrojBrojeva = 0;    while ((ulazniTok >> broj) != 0){       suma+=broj;       BrojBrojeva++;         cout<<broj<<endl;       }    float ProsjecnaVrijednost = static_cast<float>(suma)/static_cast<float>(BrojBrojeva);    cout<<"U datoteci je bilo "<<BrojBrojeva<<" brojeva."<<endl;    cout<<"Njihova prosjecna vrijednost je "<<ProsjecnaVrijednost<<endl;      system("Pause");    return 0;      }

Ivan_99C++
 
0 0 hvala 0
14 godina
neaktivan
offline
Re: Programiranje u c++-u- pitanja i odgovori

Možeš castati samo jednog od njih:

 

float ProsjecnaVrijednost = static_cast<float>(suma)/BrojBrojeva;

 

ili u ovom slučaju možeš upotrijebiti i C casting:

 

float ProsjecnaVrijednost = (float)suma/BrojBrojeva;

17 godina
offline
Programiranje u c++-u- pitanja i odgovori

Ima još jedna fora - pošto se radi o castovanju brojeva - jedan int u varijabli pomnožiš sa float brojnim tipom, naravno sa 1:

 

 

float prosjecnaVrijednost = (suma * 1.f)/(brojBrojeva);

 

p.s.

ovdje se radi o varijablama - dakle nazive bi trebalo počinjati sa malim slovom - dakle prosjecnaVrijednost ili brojBrojeva,

nije nikakva obveza, ali nekakva konvencija u c obitelji jezika jest:

camelCasing - ovaj način pisanja naziva se koristi za nazive varijabli i podatkovnih članova klasa,

a PascalCasing - dakle način gdje ime počinje velikim slovom - ProsjecnaVrijednst, BrojBrojeva se koristi kod pisanja naziva funkcija, metoda, svojstava i klasa.

nije obveza - ali je konvencija (sa ciljem jasnoće i preglednosti koda).

Poruka je uređivana zadnji put ned 28.8.2011 12:55 (Floki).
 
1 0 hvala 1
14 godina
neaktivan
offline
Programiranje u c++-u- pitanja i odgovori

Može i ovako:

 

float prosjecnaVrijednost = (suma * 1.)/(brojBrojeva);

Moj PC  
0 0 hvala 0
17 godina
offline
Re: Programiranje u c++-u- pitanja i odgovori
TracerCPP kaže...

Može i ovako:

 

float prosjecnaVrijednost = (suma * 1.)/(brojBrojeva);

Naravno , cast sa double vrijednošću

međutim, manje bitno, onaj način koji si naveo je i najpraktičniji i najviše se koristi:

float prosjecnaVrijednost = (float)suma/brojBrojeva;

 

a ovo ostalo , sam naveo btw. ako već ima statički brojčani član.

Poruka je uređivana zadnji put ned 28.8.2011 14:54 (Floki).
14 godina
neaktivan
offline
Re: Programiranje u c++-u- pitanja i odgovori
Floki kaže...

a ovo ostalo , sam naveo btw. ako već ima statički brojčani član.

Kako misliš "statički"? Statičke varijable su nešto drugo..

Poruka je uređivana zadnji put ned 28.8.2011 15:02 (TracerCPP).
17 godina
offline
Re: Programiranje u c++-u- pitanja i odgovori
TracerCPP kaže...
Floki kaže...

a ovo ostalo , sam naveo btw. ako već ima statički brojčani član.

Kako misliš "statički"? Statičke varijable su nešto drugo..

Lapsus - sorry - kako god bilo const, static ili definirano kao define - varijabla ima ime

mislio sam na korištenje brojeva: 

double rezultat = 5./nekiIntBroj;

ovdje ne dolazi do gubitka vrijednosti jer sam broj 5 odredio da je double broj, jer sam ga prikazao kao decimalnog.

my mistake

Poruka je uređivana zadnji put ned 28.8.2011 15:11 (Floki).
15 godina
offline
Programiranje u c++-u- pitanja i odgovori

moram i ja nešto pitat, evo sinoć sam ponavlja kolekcije po predavanju sa DUMP-a pa sam rješava jedan zadatak,ugl upisuje se n brojeva,program mora nać najmanji i najveci u nizu brojeva i zamijenit im pozicije, dakle: ulaz-  5

                                                                           26149

                                                                 izlaz- 26941

znaći treba im zamijenit pozicije,ako je najveći bio prvi u nizu a najmanji zadnji to treba obrnut,sve sam ja to nakodirao i onda sam zapeo na zamjeni pozicija,pa sam se pomogao riješenim primjerom i dovršio zadatak,evo ovako izgleda:

 

#include<iostream>
#include<string>
#include<vector>

using namespace std;

int main()
{
int temp,pozicijanajveceg,pozicijanajmanjeg;
int n;
int broj;
int min;
int max;
cout << "upisite koliko brojeva zelite unijeti" << endl;
cin >> n;
cout << "unesite brojeve" << endl;
vector <int> brojevi;
 //petlja koja upisuje brojeve u vraća ih u vector
for (int i = 0; i < n; i++)
   {
    cin >> broj;
    brojevi.push_back(broj);
   }
min = brojevi[0];
// petlja koja traži minimum
for (int j=0; j<n; j++)
    {
    if(brojevi[j] < min)
    {
    min = brojevi[j];
    pozicijanajmanjeg =j;
    }
    }
// petlja koja traži maximum
max = brojevi[0];
for (int k=0; k<n; k++)
    {
    if (brojevi[k] > max)
       {
        max = brojevi[k];
       pozicijanajveceg = k;
       }  
    }
//zamjena
temp = brojevi[pozicijanajveceg];
brojevi[pozicijanajveceg] = brojevi[pozicijanajmanjeg];
brojevi[pozicijanajmanjeg] = temp;

for (int e=0; e<n; e++)
   {
    cout << brojevi[e] << endl;
   }


}

 

e sad ovaj dio koji je zacrnjen me zanima,dakle zamjena pozicija,naime zar ne bi bilo dovoljno napisat brojevi[pozicijanajveceg] = brojevi[pozicijanajmanjeg] i on ih zamijeni?? nego je napisan i ovaj dio gdje se pozicijanajveceg stavlja u privremenu varijablu i onda se pozicijanajmanjeg zamjenjuje tom varijablom,zar nije dovoljno samo jedno od to dvoje?? mislim ako ne shvaćam zašto je to tako mogu samo napamet naućit a to ne zelim.

Nikad te necemo zaboraviti. RIP EnlightenedPhoenix 24.6.2011.
Moj PC  
0 0 hvala 0
14 godina
neaktivan
offline
Programiranje u c++-u- pitanja i odgovori

hajmo ovak, imaš 2 varijable i moraš im zamjeniti mjesta

 

a = 10;

b= 50;

 

operator '=' postavlja vrijednost onoga što je desno njemu onom elementu koji je lijevo od njega, ako napišeš a=10;, operator '=' pridodaje vrijednost 10 varijabli a

 

znači kad bi išao zamjenjivati vrijednosti variable a i b, prema tvome bi ispalo a=b; što bi dalo rezultat da se vrijednost koja ima varijabla b postavi kao vrijednost varijable a, i dobio bi da je a=50; i b=50; što očito nije zamjenjeno

 

nego, trećom, privremenom varijablom, spremamo vrijednost a (a=10) u varijablu c, napravimo a=b; (a=50, b=50), i sada postavimo orginalnu vrijednost varijable a, koju smo spremili u privremenu varijablu c, na varijablu b, radeći b=c; i dobivamo rezultat a=50, b=10

 

slobodno sam probaj

24.6.2011 || One Who Rides Lightning Bolts
 
1 0 hvala 2
14 godina
neaktivan
offline
Programiranje u c++-u- pitanja i odgovori

Ovo gore je gotovo pa implementacija Selection sort algoritma. Tek male izmjene su potrebne...

Moj PC  
0 0 hvala 0
15 godina
offline
Re: Programiranje u c++-u- pitanja i odgovori
munjovoz kaže...

hajmo ovak, imaš 2 varijable i moraš im zamjeniti mjesta

 

a = 10;

b= 50;

 

operator '=' postavlja vrijednost onoga što je desno njemu onom elementu koji je lijevo od njega, ako napišeš a=10;, operator '=' pridodaje vrijednost 10 varijabli a

 

znači kad bi išao zamjenjivati vrijednosti variable a i b, prema tvome bi ispalo a=b; što bi dalo rezultat da se vrijednost koja ima varijabla b postavi kao vrijednost varijable a, i dobio bi da je a=50; i b=50; što očito nije zamjenjeno

 

nego, trećom, privremenom varijablom, spremamo vrijednost a (a=10) u varijablu c, napravimo a=b; (a=50, b=50), i sada postavimo orginalnu vrijednost varijable a, koju smo spremili u privremenu varijablu c, na varijablu b, radeći b=c; i dobivamo rezultat a=50, b=10

 

slobodno sam probaj

pa da,logićno je ,hvala na objašnjenju ;)

Nikad te necemo zaboraviti. RIP EnlightenedPhoenix 24.6.2011.
13 godina
neaktivan
offline
Programiranje u c++-u- pitanja i odgovori

Može pomoć? hitno, bitno {#}ovako glasi zadatak:

Unesi recenicu od najvise 50 znakova. Ako se unese nešto osim velikih i malih slova te interpunkcijski znakova potrebno je ispisati grešku, inače ispiši rečenicu obrnutim redoslijedom.

 

 
0 0 hvala 0
14 godina
neaktivan
offline
Programiranje u c++-u- pitanja i odgovori

Pomoć može, no rješenje ne. Pokaži koliko si napravio i gdje si zapeo.

Moj PC  
1 0 hvala 0
13 godina
neaktivan
offline
Programiranje u c++-u- pitanja i odgovori

void prvi(){

   char tekst[50];

   cout<<"Unesite recenicu:";

   cin.getline(tekst,50);

   int k=strlen(tekst);

 

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

       bool test=false;

       if((int)tekst[i]>=65&&(int)tekst[i]<=90||(int)tekst[i]>=97&&(int)tekst[i]<=122){test=true;}

       if(!test) cout<<"Greska"<<endl;

       else goto ispis;}

       ispis:for(int i=k-1;i>=0;i--) {

                cout<<tekst[i];}

                cout<<endl;

 

                 }

 

 

pokusavam zasad samo s uvijetom za slova pa ako je nesto drugo da izbaci grešku pa cu kasnije dodat za znakove al ovo ispisuje kao uvijek obrnuto, bez obzira koje znakove unesem

 
0 0 hvala 0
14 godina
neaktivan
offline
Re: Programiranje u c++-u- pitanja i odgovori
Delilah kaže...

Može pomoć? hitno, bitno {#}ovako glasi zadatak:

Unesi recenicu od najvise 50 znakova. Ako se unese nešto osim velikih i malih slova te interpunkcijski znakova potrebno je ispisati grešku, inače ispiši rečenicu obrnutim redoslijedom.

pomoći ću ti samo funkcijama koje trebaš ubaciti u if, ispunct > provjerava interpunkcije, isalpha > provjerava da li je alfabetic, ostalo možeš sam/a

 

izvor

 

edit: uf oprostite, zaboravio sam napomenuti da treba i ctype.h

24.6.2011 || One Who Rides Lightning Bolts
Poruka je uređivana zadnji put uto 30.8.2011 22:21 (munjovoz).
14 godina
neaktivan
offline
Programiranje u c++-u- pitanja i odgovori

Izbaci goto. Napravi zastavicu (varijablu) koju ćeš u petlji postaviti na 1 (true) ako naiđe na zabranjen znak, a na početku provjere ju postaviš na 0 (false). Nakon petlje provjeriš stanje zastavice (true ili false) te ispišeš što treba.

Moj PC  
0 0 hvala 2
17 godina
moderator
offline
Re: Programiranje u c++-u- pitanja i odgovori
Delilah kaže...

 

pokusavam zasad samo s uvijetom za slova pa ako je nesto drugo da izbaci grešku pa cu kasnije dodat za znakove al ovo ispisuje kao uvijek obrnuto, bez obzira koje znakove unesem

Uz ovo što ti je Tracer napisao, potrudi se malo oko indentacije - tj. lijeve margine. Ovo što si napravio je nečitljivo - vitičaste zagrade su ti na krivim mjestima - ne vidi se gdje je početak, a gdje kraj bloka. Ako ne znaš sam kako indentirati kôd (zapravo mi nije jasno kako ti je to tako ispalo, s obzirom da većina editora relativno OK stavlja razmake - samo prije } treba stisnuti Enter), onda koristi online beautifiere. Imaš recimo ovaj za JavaScript, ali savršeno može poslužiti i za ovakve jednostavne primjere za C/C++ (iako valja napomenuti da je AFAIK kod C/C++-a nepisana kovencija da se blok vitičastom zagradom otvara u novom redu, dok je kod Jave/JavaScripta da se otvara na kraju tekućeg reda).

 

Edit - vidim da si u ovom beautifieru za koji sam dao link sam možeš odrediti kamo će ti stavljati vitičanoste zagrade.

 

Poruka je uređivana zadnji put uto 30.8.2011 22:52 (mbaksa).
15 godina
neaktivan
offline
Re: Programiranje u c++-u- pitanja i odgovori
mbaksa kaže...
(iako valja napomenuti da je AFAIK kod C/C++-a nepisana kovencija da se blok vitičastom zagradom otvara u novom redu, dok je kod Jave/JavaScripta da se otvara na kraju tekućeg reda).

Kad smo vec kod toga, vidi ovo:

http://astyle.sourceforge.net/astyle.html#_Bracket_Style_Options

 

nisam ni sam znao da ih toliko ima, neki su mi bas bizarni...

Sto reci nego sto ljudi - sto cudi...

So then I typed GOTO 500 - and here I am!
17 godina
moderator
offline
Re: Programiranje u c++-u- pitanja i odgovori
rustweaver kaže...
mbaksa kaže...
(iako valja napomenuti da je AFAIK kod C/C++-a nepisana kovencija da se blok vitičastom zagradom otvara u novom redu, dok je kod Jave/JavaScripta da se otvara na kraju tekućeg reda).

Kad smo vec kod toga, vidi ovo:

http://astyle.sourceforge.net/astyle.html#_Bracket_Style_Options

 

nisam ni sam znao da ih toliko ima, neki su mi bas bizarni...

Bome nisam ni ja znao. {#}

17 godina
neaktivan
offline
Re: Programiranje u c++-u- pitanja i odgovori
rustweaver kaže...

Kad smo vec kod toga, vidi ovo:

http://astyle.sourceforge.net/astyle.html#_Bracket_Style_Options

 

nisam ni sam znao da ih toliko ima, neki su mi bas bizarni...

Sto reci nego sto ljudi - sto cudi...

LOL, kad smo već kod toga, nisam ni ja znao {#}, al samoinicijativno pišem Allman stilom (do sad nisam ni znal da se tak zove).

Some people say that if you play a Windows install CD backwards you will hear demon voices commanding you to worship Satan. But that's nothing. If you play it forward it will install Windows.
14 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

hmm a stil gdje se takav kratak if natrpa u jedan red zbog meni osobno bolje preglednosti?

 

edit: hmm čini se da pišem najsličnije horstmannovom stilu x)

24.6.2011 || One Who Rides Lightning Bolts
Poruka je uređivana zadnji put sri 31.8.2011 0:56 (munjovoz).
 
0 0 hvala 0
Nova poruka
E-mail:
Lozinka:
 
vrh stranice