» »

[C++] Ocena naloge

[C++] Ocena naloge

hyphh ::

Zdravo!
Stanje je tako, da mi manjka 1% do pozitivne ocene pri maturitetnem predmetu Racunalnistvo. Pri vpogledu maturitetne pole na Ricu sem zasledil eno nalogo iz C++ , kjer bi lahko po mojem mnenju dobil kaksno piko.
( Ocenjevalec mi je dal 0 pik)
Me pa zanima vase mnenje glede te naloge in ce se mi splaca napisati ugovor.

Sledeca naloga:
Napisite podprogram, ki vrne vsoto 1! + 2! + 3! + 4! +... +n! n je argument podprograma.

Resitev iz moje strani:

int zaporedje (int n);
{
if ( n == 1)
return 1;

else if ( n == 2)
return 2;

else if ( n == 3)
return 2;

else if ( n > 3 )
return zaporedje (n-1) * zaporedje (n-2)

};

int vsota (int x);
{
for ( int x=1;x++)
vsota +=x;
}
  • spremenilo: snow ()

Fury ::

Prvo moras znat programirat, da lahko naredis izpit. Pa res nocem bit zaljiv. Vec kot 0 pik to ni vredno.

Zgodovina sprememb…

  • spremenilo: Fury ()

Vesoljc ::

dubu si cist realno oceno, imho
Abnormal behavior of abnormal brain makes me normal...

PaX_MaN ::

Dvopičja?

No ja, podprogram...:\

Aja, pa tole je narobe.Pa vsota tudi ne vidim, kje bi bila uporabljena.

Senitel ::

Funkcija zaporedje ti ne zračuna fakultete podanega parametra. Plonkec fibonačija? >:D
Funkcija vsota ima zanko brez končnega pogoja in ne kliče funkcije zaporedje...

Kar bi ti nekako hotel je:
int vsota(int x)
{
   int tmp = 1;
   int vsota = 0;
   for (int i=1; i<=x; i++)
   {
      tmp *= i;
      vsota += tmp;
   }
   return vsota;
}

Zgodovina sprememb…

  • spremenil: Senitel ()

Trololololo1 ::

Srečen si lahko, da nimate minus točk, saj bi jih za ta program verjetno dobil. :D

bozjak ::

naj ti na misel ne pride, da bi se kej pritoževal, ker se boš samo osmešil. Brez zamere, samo najprej se bo treba seznaniti s sintakso (khm for, khm... manjka ti pogoj, če že delaš tako bi mogla biti sintaksa taksna: for (int x = 1; ; x++) { }, čeprav ne vidim razloga zakaj bi tako delal), potem pa se še nauči postopek izračunavanja fakultete.

Nočem biti žaljiv, samo vsaj meni se zdi očitno, da se za izpit nisi pripravljal in res najhuje se mi zdi, da nisi niti tok "dec", da bi priznal, da si padel z razlogom...

LP
http://upor.blogec.si
http://bozjak.deviantart.com

rayman2 ::

Sploh se ne probaj prtožit :) ker poznam uno ko je na RICU za rač. in v se kar boš naredu je da ti bo najdla še 2 naloge ka bo neki narobe, ker je un prej spregledav in ti bo po hitrem postopku mankal 10pil. Tak da lepo mer dej pa pejt avgusta pisat do takrat pa se navad programirat!

Bom pa ob 10 ka grem s njo na kavo ji nesu tole da se mal nasmejemo! :)

Zgodovina sprememb…

  • spremenilo: rayman2 ()

mare_ ::

in v se kar boš naredu je da ti bo najdla še 2 naloge ka bo neki narobe, ker je un prej spregledav in ti bo po hitrem postopku mankal 10pil.
Tega ne smejo narediti.

bond007 ::

Aja? Potem bi se vsak pritožil...

Čeprav njegova naloga zgleda zelo bogo (ne pozna niti osnovne sintakse, niti pomena fakultete) + verjetno je švinglal, bi jst rekel naj se pritoži - ker manj kot negativno itak ne moreš dobit. Mogoče (čeprav zelo malo verjetno) mu uspe.

rayman2 ::

mare_: to lahko naredijo ker ti se ne moraš pritožit na nalogo ampak celo polo in s tem se cela pola na novo preverja in drugi ocenjevalec ki lahko odbije še kako piko več... Lan sta bla 2 taka.

Drgač pa sm govoru s njo in da ti povem kje bi pike zgubu... naloga je mela 4 pike
int zaporedje (int n); //to ni heder funkcije ampak prototip -1 pika
{ 
if ( n == 1)
return 1;

else if ( n == 2)
return 2;

else if ( n == 3)
return 2;

else if ( n > 3 )
return zaporedje (n-1) * zaporedje (n-2)

}; //kle ni podpičja -1 pika

int vsota (int x); //spet narobe hader sam to nebi dala minus pike
{
for ( int x=1;x++) //ne znaš for zanke -1 pika
vsota +=x;
}

vse skupej nč ne nardi oz. je čist v temo brcneno -1 pika 




Skupaj nanese 0 pik

lep pozdrav!

Edit by Gundolf: C kodo se da v tag [st.koda c]

Zgodovina sprememb…

  • spremenil: Gundolf ()

mare_ ::

Ma, nam so tako rekli.

darkolord ::

Čeprav ponavadi se pik ne odšteva ampak prišteva...

infiniteLoop ::

@rayman2: Torej, ce napises sintakticno pravilen ampak cisto mimo program dobis tri pike od stirih moznih. Namig - vsak ki gre na maturi na racunalnistvo naj se nauci en enostaven program na pamet in ga napise pri vsaki nalogi.
None of us is as dumb as all of us.

'FireSTORM' ::

A ti vidiš tukaj slučajno sintaktično dober program? Ob prvem preletu videl že dve sintaktični napaki.
Po koncu prve funkcije }; že prva. In še for zanka brez pogoja.
Those penguins.... They sure aint normal....

bozjak ::

problem je bl tole:
rayman2: vse skupej nč ne nardi oz. je čist v temo brcneno -1 pika


torej če bi bil zgornja naloga (=nesmisel) napisana sitnaksično pravilno, bi dobil 3 točke ?! Pike moraš prištevati za vsako pravilno stvar (ki jo naloga zahteva), tukaj pa takih ni, zato torej 0 točk...

Lp
http://upor.blogec.si
http://bozjak.deviantart.com

Mavrik ::

Ahem... for(;;) je sintaktično pravilna zadeva.
The truth is rarely pure and never simple.

AndrejS ::

Malo offtopic :
Najbolj nesmiselno je odbijanje točk zaradi ";" , tudi manjkajočih. Tu ti že vsak prevajalnik javi napako. Je pa to res srednja šola, kjer večina učiteljev nima pojma o programiranju in drugega ne znajo kot šteti podpičja in zaradi njih odbijat točke!

'FireSTORM' ::

Mavrik ares?
for (x=1;x++)
x je enak ena, povečuj x za 1 vedno ob preklopu zanke dokler ...
Zelo sintaktično pravilno.

bozjak: sem kasneje prebral ja, se opravičujem in se pridrožujem tvoji izjavi ;)

AndrejS je res.
Ampak recimo imaš 1000 vrstic kode ki je nikoli vmes nisi prevajal in si pri vsaki drugi pozabil podpičje. Torej če ne upoštevam naslovov funkcij, zavitih oklepajev, zank itd itd ti manjka 500 podpičij. Veselo popravljanje želim...
Torej to je ena napaka lahko odpravljena tako da se že ob začetku učenja programskega jezika to naučiš.
Those penguins.... They sure aint normal....

BigWhale ::

Andrej,

> Najbolj nesmiselno je odbijanje točk zaradi ";" , tudi manjkajočih.

Hear, hear! Sem se ze bal, da ne bo nihce tega omenil. Ce bi tip napisal neko psevdo kodo in zraven tolmac, kako jo prebrati, bi moral dobiti pozitivno oceno! Seveda, ce bi ta koda dejansko delala prav.

Sintaksa tukaj nima nobene veze.

-----

FireStorm,

Meni se for (x=1;;x++) prav lepo prevede.

> x je enak ena, povečuj x za 1 vedno ob preklopu zanke dokler ...
> Zelo sintaktično pravilno.

Ce ne upostevas, da mu v tisti for zanki manjka podpicje, potem je stvar povsem sintakticno pravilna. Moj primer zgoraj recimo. Semantika je tista, ki je vprasljiva, a vendar je povsem mozno, da je avtor to dejansko hotel...

Si kaj taksnega ze videl?

x = 1;
while (TRUE)
{
  x++;
  ... ...
}


Jaz sem, isti smorn, kot tisti for() zgoraj.


> Ampak recimo imaš 1000 vrstic kode ki je nikoli vmes nisi prevajal in si pri vsaki
> drugi pozabil podpičje. Torej če ne upoštevam naslovov funkcij, zavitih oklepajev, zank
> itd itd ti manjka 500 podpičij. Veselo popravljanje želim...

Popolnoma irrelevant, koliko je vrstic. Sintaksa se NE BI smela ocenjevati. Bom potem povedal zakaj. Tisti, ki ocenjuje izpite, bi moral znati iz vsake kolikor toliko dobre pseudo kode ven izvlect bistvo. A je to C, Java, C# ali pa Pascal.

> Torej to je ena napaka lahko odpravljena tako da se že ob začetku učenja programskega
> jezika to naučiš.

Vidis, to je najvecja bedarija, kar jih lahko naredis. To, da se ucis programskega jezika in sintakso le-tega. Nauciti se moras programirati in razmisljati po 'programersko'. Ce ti nekdo rece, 'implementiraj racunanje fakultet', mu moras rect, 'pick your poison!' in ne zacet jamrat, da Visual Basica ne poznas. Sintaksa je tisto kar v vsakem 'helpu' pise.

Ce se to ocenjuje imamo zgresen pouk racunalnistva....

... eh, koga slepim, to ga itak imamo. ;>

'FireSTORM' ::

No mislil sem začetek učenja programskega jezika in ne programiranja na splošno.
Je v vsakem helpu, to je res, ampak kaj boš za vsako vrstico brskal help vedno ali se raje malo naučil sintakso nekega programskega jezika?
Those penguins.... They sure aint normal....

darkolord ::

Najprej se moraš naučit razmišljat, potem pa se "naučit" še sintakso

bozjak ::

bw: mah sej lahk bi ti dal prov, sam:

Popolnoma irrelevant, koliko je vrstic. Sintaksa se NE BI smela ocenjevati. Bom potem povedal zakaj. Tisti, ki ocenjuje izpite, bi moral znati iz vsake kolikor toliko dobre pseudo kode ven izvlect bistvo. A je to C, Java, C# ali pa Pascal.


fora je v tem, da pri slovenščini ti profks/ocenjevalec tud prečrta če ne zna prebrt, oz ne dojame smisla. Zakaj bi potem mogli pa profesorji/ocenjevalci računalništva "ugibtat" (oz kot si se ti izrazil "izvlečt") kaj si ti z nečim hotu.

Se strinjam, da se sintaksa nebi smela ocenjevati. A do neke mere. Problem je v tem, da sintaksicna napaka na določenih mesti spremeni pomen stavka, kar pa je problem. Enako kot vejica pri slovnici ("Streljati, ne pomilostiti" / Streljati ne, pomilostiti")

Dva taka primera lahko vidiš že v zgornji nalogi. Ce imas ti funkcijo in dodas na koncu vrstice podpičje, potem to ni več začetek funkcije, temveč header, kar pa je bistvena razlika, in tako napako se mora kaznovati, ker kaže da ti oćitno (!!) ne ločiš med funkcijo in headerjem.

Druga taka napaka je tisti for. Ja prav imaš, "for (x=1; ;x++)" čisto normalno prevede. Ampak on tega napisal, in po mojem mnenju je pokazal da ne pozna sintakse fora, in da ne pozna kaj kateri del for stavka naredi. increment v polje za pogoj pač ne spada.

Tude ce bi hotel to narediti (torej neskončni for), nima v for zanki nobenega ustavitvenega pogoja, tako da je očitno da tega ni hotel narediti, pač pa gre za napako. In ker ta napaka ni zgolj površtnost, temvec kaže na nepoznavanje osnovnih pojmov, mislim da si zasluži, da je kaznovana.


EDIT: Speling

Lp
http://upor.blogec.si
http://bozjak.deviantart.com

Zgodovina sprememb…

  • spremenil: bozjak ()

Tr0n ::

Dobro napisano BW. Se popolnoma stirnjam.

Vazno je logicno razmisljanje, kako se clovek loti problema, da ga znat opisat in ga resit programersko oz. matematicno. Dejanska implementacija je potem cisto neodvisna od programskega jezika.

Gundolf ::

BW, problem s podano zanko:
int vsota (int x);
{
   for ( int x=1;x++)
   vsota +=x;
}

je ta, da tudi če spregledaš potencialno manjkajočo vejico, v zanki manjka ustavitveni pogoj. To ni sintaktična napaka.

BigWhale ::

> fora je v tem, da pri slovenščini ti profks/ocenjevalec tud prečrta če ne zna prebrt,
> oz ne dojame smisla. Zakaj bi potem mogli pa profesorji/ocenjevalci računalništva
> "ugibtat" (oz kot si se ti izrazil "izvlečt") kaj si ti z nečim hotu

No, tukaj se programiranje in slovnica precej razlikujeta. Programiranje je precej bolj natancno, kot pisanje spisov.

Res je, da vsakrsnega skropucala profesorji ne bi smeli spustiti skozi, vendar bi morali neko doloceno mero sintakticnih napak enostavno spregledati, ker niso bistvene.

> Problem je v tem, da sintaksicna napaka na določenih mesti spremeni pomen stavka, kar
> pa je problem.

Striktno definirano je sintakticna napaka tista, pri kateri compiler crkne. Zato jih je nesmiselno ocenjevati. Jaz recimo napisem 300 vrstic kode preden sploh pozenem compiler. Potem sele popravljam sintakticne napake.

> Ce imas ti funkcijo in dodas na koncu vrstice podpičje, potem to ni več začetek
> funkcije, temveč header, kar pa je bistvena razlika, in tako napako se mora kaznovati,
> ker kaže da ti oćitno (!!) ne ločiš med funkcijo in headerjem.

Nimam pri roki compilerja ampak, se mi zdi, da bi tukaj ze compiler krepnil. Poleg tega pa int lala(); ni header ampak deklaracija funkcije, ki jo pa (lahko) zapises v header file.

> Ampak on tega napisal, in po mojem mnenju je pokazal da ne pozna sintakse fora, in da
> ne pozna kaj kateri del for stavka naredi.

Ja, ampak za razumevanje programa je v vecini primerov vseeno kaksna je sintaksa for stavka. V tem primeru je stvar rahlo dvoumna, ker ne mores biti preprican ali avtor dejansko ve kaj je naredil.


> In ker ta napaka ni zgolj površtnost, temvec kaže na nepoznavanje osnovnih pojmov,
> mislim da si zasluži, da je kaznovana.

Ma, jaz tipa niti ne zagovarjam, govorim precej na splosno. Za tisto kodo, bi ga tudi jaz 'strafal'... ;)

bozjak ::

bw ocitno se nisva popolnoma razumela, ce prej ni bilo dovolj očitno: v osnovi se strinjam s tabo, sintakse se nebi smelo ocenjevati, če napaka ni bistvena. Ampak očitno imam jaz bolj strogo predstavo o tem, kaj je bistveno in kaj ne.

Seveda se strinjam, da se točk nebi smelo odbijati tam, kjer je popolnoma očitno, da jih je tisti, ki je pisal le pozabil (torej podpičje na koncu vrstice, misspell spremenljivke, itd) problem samo rata tam, kjer bi tisti stavek lahko pomenil nekaj drugega. Prevajalnik sicer obupa ne glede na to kaj je programer mislil, ampak ocenjevalec takrat več ne more vedeti, kaj je avtor v resnici hotel.

Ja, ampak za razumevanje programa je v vecini primerov vseeno kaksna je sintaksa for stavka.


Hmm, zakaj pa je potem od njih sploh zahtevano programiranje (v dolocenem programskem jeziku)? Zakaj pa se ne ocenjuje samo pisanje algoritmov, ali pa risanja diagramov poteka? Diagrami poteka so zato, da ti rešiš problem ne glede na sintakso... Pa naj ocenjujejo te, čce je sintaksa sama nepomembna...

Lp
http://upor.blogec.si
http://bozjak.deviantart.com


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

C programiranje (strani: 1 2 3 )

Oddelek: Programiranje
14126762 (17058) amacar

[C#]naloga iz metod!

Oddelek: Programiranje
81538 (1371) Ziga Dolhar
»

C# (strani: 1 2 )

Oddelek: Programiranje
9711453 (8288) Ericssony
»

C - pomoč

Oddelek: Programiranje
111391 (1131) Thagirion
»

int to string v c++

Oddelek: Programiranje
272244 (1972) OwcA

Več podobnih tem