Search
 
 
  Engleski
 
 
 
Open in this window (click to change)
Forum@DeGiorgi: Početna
Forum za podršku nastavi na PMF-MO
Login Registracija FAQ Smajlići Članstvo Pretražnik Forum@DeGiorgi: Početna

priorieti (zadatak)
WWW:

Moja sarma
 
Započnite novu temu   Odgovorite na temu   printer-friendly view    Forum@DeGiorgi: Početna -> Kolegiji 1. godine, preddiplomski studij Matematika -> Programiranje 1 i 2
Prethodna tema :: Sljedeća tema  
Autor/ica Poruka
the maja
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 26. 11. 2006. (09:35:27)
Postovi: (5D)16
Spol: žensko
Sarma = la pohva - posuda
31 = 34 - 3
Lokacija: Zagreb

PostPostano: 17:16 ned, 4. 2. 2007    Naslov: priorieti Citirajte i odgovorite

još davno na prvim predavanjima bio je jedan zadatak za dz vezan uz prioritete i glasio je:

x=-4%4/4+-4; PR(x);
y=4/-x++ -4; PR(x);PR(y);
y*=z=x+4==4/-y; PR(y);PR(z);
x=x||y&& --z; PR(x);PR(y);PR(z);
PR(++x&&++y||++z); PR(x);PR(y);PR(z);

nikako mi nisu jasna ova zadnja dva reda. do 4.reda x=-3,y=-3,z=1. dalje ne razumijem, moja logika se ne poklapa s onime kako bi trebalo ispasti. :( pomagajte!
još davno na prvim predavanjima bio je jedan zadatak za dz vezan uz prioritete i glasio je:

x=-4%4/4+-4; PR(x);
y=4/-x++ -4; PR(x);PR(y);
y*=z=x+4==4/-y; PR(y);PR(z);
x=x||y&& --z; PR(x);PR(y);PR(z);
PR(++x&&++y||++z); PR(x);PR(y);PR(z);

nikako mi nisu jasna ova zadnja dva reda. do 4.reda x=-3,y=-3,z=1. dalje ne razumijem, moja logika se ne poklapa s onime kako bi trebalo ispasti. Sad pomagajte!


[Vrh]
Korisnički profil Pošaljite privatnu poruku
mdoko
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 30. 11. 2002. (22:17:12)
Postovi: (71A)16
Spol: muško
Sarma = la pohva - posuda
199 = 237 - 38
Lokacija: Heriot-Watt University, Edinburgh

PostPostano: 17:36 ned, 4. 2. 2007    Naslov: Citirajte i odgovorite

Mozda zaboravljas da C za logicke izraze koristi [url=http://en.wikipedia.org/wiki/Minimal_evaluation]short circuit evaluation[/url].
Mozda zaboravljas da C za logicke izraze koristi short circuit evaluation.



_________________
Extraordinary claims require extraordinary evidence. – Carl Sagan
[Vrh]
Korisnički profil Pošaljite privatnu poruku Posjetite Web stranice
the maja
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 26. 11. 2006. (09:35:27)
Postovi: (5D)16
Spol: žensko
Sarma = la pohva - posuda
31 = 34 - 3
Lokacija: Zagreb

PostPostano: 18:37 ned, 4. 2. 2007    Naslov: Citirajte i odgovorite

iskreno, nisam baš shvatila ovaj hint. :(
iskreno, nisam baš shvatila ovaj hint. Sad


[Vrh]
Korisnički profil Pošaljite privatnu poruku
mdoko
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 30. 11. 2002. (22:17:12)
Postovi: (71A)16
Spol: muško
Sarma = la pohva - posuda
199 = 237 - 38
Lokacija: Heriot-Watt University, Edinburgh

PostPostano: 19:07 ned, 4. 2. 2007    Naslov: Citirajte i odgovorite

[quote="the maja"]iskreno, nisam baš shvatila ovaj hint. :([/quote]
Pa, sve je lijepo objasnjeno na wikipediji :grebgreb:. Anyway, logicki izrazi se izracunjavaju s lijeva na desno i prekida se njihovo izracunavanje ako je poznata vrijednost izraza. Npr. sljedeci dio koda [code:1]
int x=1, y=5;
if(x<y || ++x) printf("%d", x);
[/code:1]
ispisuje [tt]1[/tt], a ne [tt]2[/tt], jer se prilikom izracunavanja izraza [tt]x<y || ++x[/tt] izracuna samo [tt]x<y[/tt] (sto je istina), zbog cega nema potrebe za izracunavanjem drugog dijela izraza ([tt]++x[/tt]), jer je vrijednost cjelokupnog izraza vec poznata. To za posljedicu ima da se vrijednost varijable [tt]x[/tt] ne promijeni.

Da li je sad jasnije?
the maja (napisa):
iskreno, nisam baš shvatila ovaj hint. Sad

Pa, sve je lijepo objasnjeno na wikipediji Kotacici rade 100 na sat. Anyway, logicki izrazi se izracunjavaju s lijeva na desno i prekida se njihovo izracunavanje ako je poznata vrijednost izraza. Npr. sljedeci dio koda
Kod:
 
int x=1, y=5;
if(x<y || ++x) printf("%d", x);

ispisuje 1, a ne 2, jer se prilikom izracunavanja izraza x<y || ++x izracuna samo x<y (sto je istina), zbog cega nema potrebe za izracunavanjem drugog dijela izraza (++x), jer je vrijednost cjelokupnog izraza vec poznata. To za posljedicu ima da se vrijednost varijable x ne promijeni.

Da li je sad jasnije?



_________________
Extraordinary claims require extraordinary evidence. – Carl Sagan
[Vrh]
Korisnički profil Pošaljite privatnu poruku Posjetite Web stranice
the maja
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 26. 11. 2006. (09:35:27)
Postovi: (5D)16
Spol: žensko
Sarma = la pohva - posuda
31 = 34 - 3
Lokacija: Zagreb

PostPostano: 19:43 ned, 4. 2. 2007    Naslov: Citirajte i odgovorite

da, sad sam skužila. hvala puno. zbunilo me to što na tablici prioriteta je && iznad ||. hvala :)
da, sad sam skužila. hvala puno. zbunilo me to što na tablici prioriteta je && iznad ||. hvala Smile


[Vrh]
Korisnički profil Pošaljite privatnu poruku
vsego
Site Admin
Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09)
Postovi: (3560)16
Spol: zombi
Sarma = la pohva - posuda
854 = 1068 - 214
Lokacija: /sbin/init

PostPostano: 20:22 ned, 4. 2. 2007    Naslov: Citirajte i odgovorite

Pa, [tt]&&[/tt] i ima veci prioritet od [tt]||[/tt]. :) Usporedi:

[b]Primjer 1:[/b][code:1]#include <stdio.h>

int main(void) {
int x = 1, y = 2, z = 0;
printf("x=%d, y=%d, z=%d\n", x, y, z);
if (x++ || y++ && z++)
printf("x=%d, y=%d, z=%d\n", x, y, z);
return 1;
}[/code:1]
Output:[code:1]x=1, y=2, z=0
x=2, y=2, z=0[/code:1]

[b]Primjer 2:[/b] (pomocu zagrada operatoru [tt]||[/tt] dajemo jaci prioritet)[code:1]#include <stdio.h>

int main(void) {
int x = 1, y = 2, z = 0;
printf("x=%d, y=%d, z=%d\n", x, y, z);
if ((x++ || y++) && z++)
printf("x=%d, y=%d, z=%d\n", x, y, z);
return 1;
}[/code:1]
Output:[code:1]x=1, y=2, z=0[/code:1]



Stvar je u tome da kad imas [tt]A || nekakva_formula[/tt] i [tt]A[/tt] je istina, onda je jasno da je cijeli izraz istina, bez obzira na to sto je [tt]nekakva_formula[/tt] i zato se tu prioriteti ponekad ne "vide". ;)

Nadam se da je sada barem malo jasnije. :)

P.S. Probaj i sa [tt]z++ && x++ || y++[/tt] i [tt]z++ && (x++ || y++)[/tt], pa ces vidjeti da se slicno ponasa (razlika je u tome sto ce prvi povecati [tt]y[/tt] i [tt]z[/tt] - tebi pitanje: zasto ne i [tt]x[/tt]?). :)
Pa, && i ima veci prioritet od ||. Smile Usporedi:

Primjer 1:
Kod:
#include <stdio.h>

int main(void) {
  int x = 1, y = 2, z = 0;
  printf("x=%d, y=%d, z=%d\n", x, y, z);
  if (x++ || y++ && z++)
    printf("x=%d, y=%d, z=%d\n", x, y, z);
  return 1;
}

Output:
Kod:
x=1, y=2, z=0
x=2, y=2, z=0


Primjer 2: (pomocu zagrada operatoru || dajemo jaci prioritet)
Kod:
#include <stdio.h>

int main(void) {
  int x = 1, y = 2, z = 0;
  printf("x=%d, y=%d, z=%d\n", x, y, z);
  if ((x++ || y++) && z++)
    printf("x=%d, y=%d, z=%d\n", x, y, z);
  return 1;
}

Output:
Kod:
x=1, y=2, z=0




Stvar je u tome da kad imas A || nekakva_formula i A je istina, onda je jasno da je cijeli izraz istina, bez obzira na to sto je nekakva_formula i zato se tu prioriteti ponekad ne "vide". Wink

Nadam se da je sada barem malo jasnije. Smile

P.S. Probaj i sa z++ && x++ || y++ i z++ && (x++ || y++), pa ces vidjeti da se slicno ponasa (razlika je u tome sto ce prvi povecati y i z - tebi pitanje: zasto ne i x?). Smile



_________________
U pravilu ignoriram pitanja u krivim topicima i kodove koji nisu u [code]...[/code] blokovima.
Takodjer, OBJASNITE sto vas muci! "Sto mi je krivo?", bez opisa u cemu je problem, rijetko ce zadobiti moju paznju.
Drzim prodike
[Vrh]
Korisnički profil Pošaljite privatnu poruku
the maja
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 26. 11. 2006. (09:35:27)
Postovi: (5D)16
Spol: žensko
Sarma = la pohva - posuda
31 = 34 - 3
Lokacija: Zagreb

PostPostano: 22:53 ned, 4. 2. 2007    Naslov: Citirajte i odgovorite

joj ne znam, ne razumijem ja to baš. sva sam se zbunila. glupo je pitanje, al kako ja kad imam npr. x++ mogu reć da je to istina ili laž.. kad smo imali z++&&x++||y++ , je li trebam razmišljati kao pridružim z 0 i x1, i onda se to kao izvrši, pa mogu povećati y? ne znam. :( i kak da se u slučaju sa zagradama ništ ne pojavi na ekranu? :(
joj ne znam, ne razumijem ja to baš. sva sam se zbunila. glupo je pitanje, al kako ja kad imam npr. x++ mogu reć da je to istina ili laž.. kad smo imali z++&&x++||y++ , je li trebam razmišljati kao pridružim z 0 i x1, i onda se to kao izvrši, pa mogu povećati y? ne znam. Sad i kak da se u slučaju sa zagradama ništ ne pojavi na ekranu? Sad


[Vrh]
Korisnički profil Pošaljite privatnu poruku
the maja
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 26. 11. 2006. (09:35:27)
Postovi: (5D)16
Spol: žensko
Sarma = la pohva - posuda
31 = 34 - 3
Lokacija: Zagreb

PostPostano: 22:58 ned, 4. 2. 2007    Naslov: Citirajte i odgovorite

ustvari, krivo sam napisala. da li razmišlajm kao pridružim x 1, pa je to kao istina i onda povećam z, pa poslije i y? sorry
ustvari, krivo sam napisala. da li razmišlajm kao pridružim x 1, pa je to kao istina i onda povećam z, pa poslije i y? sorry


[Vrh]
Korisnički profil Pošaljite privatnu poruku
Prethodni postovi:   
Započnite novu temu   Odgovorite na temu   printer-friendly view    Forum@DeGiorgi: Početna -> Kolegiji 1. godine, preddiplomski studij Matematika -> Programiranje 1 i 2 Vremenska zona: GMT + 01:00.
Stranica 1 / 1.

 
Forum(o)Bir:  
Ne možete otvarati nove teme.
Ne možete odgovarati na postove.
Ne možete uređivati Vaše postove.
Ne možete izbrisati Vaše postove.
Ne možete glasovati u anketama.
You cannot attach files in this forum
You can download files in this forum


Powered by phpBB © 2001, 2002 phpBB Group
Theme created by Vjacheslav Trushkin
HR (Cro) by Ančica Sečan