PDA

Prikaži potpunu verziju : Pomoc oko zadatka


nikolica0233
29.1.2013, 1:34
Pozz svima... radili smo ovaj zadatak u skoli i sad kad sam ga iskucao ima gresku :S ... a nzm gde je. Moze neko da mi pomogne ? :) hvala unapred

Zadatak: Ucitava se N broj kvadra i SORTIRAJU se po zapremini , i koristimo operatore preklapanja ">" i "=" ;

i imam jos 1 pitanje zasto je stavljeno kao static brkv; - broj kvadra ja msm




Nasao sam gresku xD
fali int Kvadar:: brkv=0; -:facepalm

Al sad cini mi se da ne radi dobro -.- ... ne izracunava dobro zapreminu

Stevvan
29.1.2013, 2:17
for petlja ti nije dobra fale ti viticaste zagrade, i zamenjivanje ne radi kako treba...

for(i=0;i<n;i++)
for(int j=i+1;j<n;j++)
{
if(k[i]>k[j]) {
pom=k[i];
k[i]=k[j];
k[j]=pom;
}
}
for(i=0;i<n;i++)
k[i].pisi();
}

Ima jos par stvari koje mozes da popravis, al ostavljam ti za vezbu :P

Eris
29.1.2013, 3:51
to brkv je verovatno ukupan broj kvadara, zato je static

nikolica0233
2.2.2013, 16:23
jos nesto mi nije jasno.. kod ove funkcije a to je zasto mora da ide cin.get(c); posle cin>> ... to kao skida 0 ili sta vec .... ako moze neko to malo bolje da mi objasni :)

void ucitaj()
{ char c;
cout<<"Ucitati ime:";
cin.get(ime ,30 ,'\n');
cout<<"Ucitati index:";
cin>>index;

cout<<"Ucitati ocene iz tri predmeta:\n";
cout<<"Matematika:";
cin>>u[0];
cin.get(c);
cout<<"Srpski jezik:";
cin>>u[1];
cin.get(c);
cout<<"Likovno:";
cin>>u[2];
cin.get(c);

}

Stevvan
2.2.2013, 20:47
Nisam siguran, ko je pisao taj kod? Koliko znam to samo znaci da ce ucita jedan karakter (slovo). Ovako kako je napisano deluje mi tipa da svaki put kad ukucas nesto moras, da lupis enter da bi mogao ovo drugo da ucitas... Jel se to dogadja?

Lucic Nemanja
3.2.2013, 3:05
cin.get(char &c) ti uzima jedan char i smešta u c. U tvom slučaju koliko sam ja skapirao njegova poenta je da "preskoči" taj jedan karakter.
Detaljnije, std::istream::get (http://www.cplusplus.com/reference/istream/istream/get/)

DarioMirovic
3.2.2013, 3:11
Kao sto Nemanja kaze. Mislim da je u pitanju "gutanje" znaka za novi red '\n'. On se "odstampa" kad pritisnes enter.

Ti uneses ocjenu iz matematike i pritisnes enter, pa imas ovo:
5\n (\n je jedan znak naravno, za kraj reda i ne vidi se, samo sam stavio da znas da stoji tu)

Zatim program ucita sa

cin >> u[0] broj 5 u u[0]

Medjutim, ostaje ti \n ispred tebe, pa moras i to da ucitas negdje, da ga prodjes, a to radis sa cin.get(c) i tad znak c ima vrijednost '\n'.

Zasto je ovo bitno? Pa zamisli da ti trazi program da uneses broj, pa slovo. Ti uneses 5, a onda kad dodje komanda cin.get(c) ti umjesto da svoje slovo koje si kucao na tastaturi upises, u c ce ti upisati ono '\n'.

Eto, nadam se da nisam pretjerao. :)

Stevvan
3.2.2013, 13:03
da ali ja sam imao utisak da je cin komanda dovoljno "pametna" da prepozna beline (\n \r \t itd...), tako da mi je to delovalo ne potrebno... Inace ja je ne koristim tako da nisam bio siguran za to, vise sam ljubitelj C-ovskog scanf-a :)

DarioMirovic
3.2.2013, 21:17
da ali ja sam imao utisak da je cin komanda dovoljno "pametna" da prepozna beline (\n \r \t itd...), tako da mi je to delovalo ne potrebno... Inace ja je ne koristim tako da nisam bio siguran za to, vise sam ljubitelj C-ovskog scanf-a :)

Ja mislim da jeste pametna dovoljno, ali ne tako da nakon pročitanog broja odmah preskoči '\n', već preskače whitespace-ove prije podatka koji čita, već da npr. pročita broj 5, a onda kad sledeći put pročitaš broj, neka bude 3, ono će da preskoči '\n' i pročita 3. Ovako kako ti je u zadatku, vjerovatno su se htjeli obezbijediti da nakon pročitanog broja sigurno nema '\n' zato što neke naredbe za čitanje, a zavisno od nekih flag-ova, mogu da ignorišu ili da ne ignorišu whitespace znakove (razmak, tabulator, novi red,...). Ne znam šta im je bilo u glavi. :)

Stevvan
4.2.2013, 16:21
Pa da to sam i ja mislio u sustini je ta medju-naredba besopotrebna, e sad sto ih nakaradno uce to je druga prica :D

nikolica0233
5.2.2013, 11:40
Ja mislim da jeste pametna dovoljno, ali ne tako da nakon pročitanog broja odmah preskoči '\n', već preskače whitespace-ove prije podatka koji čita, već da npr. pročita broj 5, a onda kad sledeći put pročitaš broj, neka bude 3, ono će da preskoči '\n' i pročita 3. Ovako kako ti je u zadatku, vjerovatno su se htjeli obezbijediti da nakon pročitanog broja sigurno nema '\n' zato što neke naredbe za čitanje, a zavisno od nekih flag-ova, mogu da ignorišu ili da ne ignorišu whitespace znakove (razmak, tabulator, novi red,...). Ne znam šta im je bilo u glavi. :)

Pa pazi bez toga cin.get(c); program brlja , tj ispisuje sve couto-ve umesto da saceka da se prvo ucita za matematiku ocena, pa za srpski ...


P.S fali ispod cin>>index; cin.get(c); to sam zaboravio da dodam xD

DarioMirovic
5.2.2013, 20:21
Pa pazi bez toga cin.get(c); program brlja , tj ispisuje sve couto-ve umesto da saceka da se prvo ucita za matematiku ocena, pa za srpski ...


P.S fali ispod cin>>index; cin.get(c); to sam zaboravio da dodam xD

Da, to je upravo zbog onoga sto sam naveo. :)