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

programčić (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
zrinka7
Gost





PostPostano: 21:18 pet, 30. 6. 2006    Naslov: programčić Citirajte i odgovorite

Što radi sljedeći program? :?:

#include<stdio.h>
#define PR(x) printf("%d\n",(x));
main()
{
int x, y, z;
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);
}

Ako bi mi netko mogao objasniti korak po korak? :?:
Što radi sljedeći program? Question

#include<stdio.h>
#define PR(x) printf("%d\n",(x));
main()
{
int x, y, z;
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);
}

Ako bi mi netko mogao objasniti korak po korak? Question


[Vrh]
petrich
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 07. 11. 2005. (22:23:35)
Postovi: (F6)16
Spol: žensko
Sarma = la pohva - posuda
18 = 20 - 2

PostPostano: 11:00 sub, 1. 7. 2006    Naslov: Re: programčić Citirajte i odgovorite

[code:1]#define PR(x) printf("%d\n",(x)); [/code:1]

ovime si definirala sto ce ti PR radit u programu, dakle on ce ispisivat ono sto uneses za x i to svaki put u novi red zbog \n.

[code:1]x=-4%4/4+-4; PR(x);[/code:1]

vrijednosti x pridruzis ovaj br =-4 (jer, -4%4=0, 0/4=0, 0+(-4)=-4) i ispises ga.

[code:1]y=4/-x++-4; PR(x); PR(y); [/code:1]

y pridruzi vrijednost -3 (4/(4)=1, 1-4=-3) a x povecaj za jedan nakon sto y pridruzis -3 (x++=x+1, da je bilo ++x onda bi prvo x povecala za jedan, i tek onda racunala y) i naravno, onda ispise x i y.

[code:1]y*=z=x+4==4/-y; PR(y); PR(z); [/code:1]

za ovaj nisam 100% ziher, pa nek me neko ispravi ak sam u krivu:
prvo x+4=1, i to usporedjujes sa 4/-y=1, znaci imas 1==1, a to je istina, dakle ->1. te z postaje istina(ili ti 1). zatim y pridruzis y=y*z=y(jer, y*=z -> y=y*z, a buduci da jz z=1, y=y), btw. ovaj == usporeduje, ali ne mjenja vrijednost niti jedne varijable. znaci y je -3, a z 1. PR ih ispisuje.

[code:1]x=x||y&&--z PR(x); PR(y); PR(z); [/code:1]

mislim da bi se prvo trebao z umanjiti za 1, jer je to unarni operator, zatim y&&z=0, tj laz jer je y!=0, a z=0, pa imamo istina&&laz->laz, pa na kraju x koji je != 0 (dakle istina) || 0(laz)->istina(1), znaci x postaje 1.
e sad, ja smatram da bi nakon ove linije z trebao biti 0, ali nije tako.. :grebgreb: (jel to mozda zato sto je z zapravo "istina", pa se njegova vrijednost ne mjenja?)

i tako su za sad vrijednosti slijedece: x=1, y=-3, z=1.

[code:1]PR(++x&&++y||++z); PR(x); PR(y);PR(z);[/code:1]

dakle, mislim da bi opet trebalo prvo proc unarne operatore, znaci x=2, y=-2, z=2 i onda 2 && (-2) ->1 i sad 1||2 ->1, znaci vrijednost ovog u prvom PR je 1, x=2,y=-2, i po ovom mom z bi trebalo biti 2, ali naravno nije, vec je ostalo 1. nadam se da ce mi netko objasniti zasto je tako, jer ovo ni meni nije bas jasno.

inace, moj savjet ti je da skicnes Jurakova predavanja, imas na netu i skoro sve je lijepo objesnjeno. konkretno za ovo imas na str 76. tablicu prioriteta i redoslijed izracunavanja..
nadam se da sam bar malo pomogla. ;)
Kod:
#define PR(x) printf("%d\n",(x));


ovime si definirala sto ce ti PR radit u programu, dakle on ce ispisivat ono sto uneses za x i to svaki put u novi red zbog \n.

Kod:
x=-4%4/4+-4; PR(x);


vrijednosti x pridruzis ovaj br =-4 (jer, -4%4=0, 0/4=0, 0+(-4)=-4) i ispises ga.

Kod:
y=4/-x++-4; PR(x); PR(y);


y pridruzi vrijednost -3 (4/(4)=1, 1-4=-3) a x povecaj za jedan nakon sto y pridruzis -3 (x++=x+1, da je bilo ++x onda bi prvo x povecala za jedan, i tek onda racunala y) i naravno, onda ispise x i y.

Kod:
y*=z=x+4==4/-y; PR(y); PR(z);


za ovaj nisam 100% ziher, pa nek me neko ispravi ak sam u krivu:
prvo x+4=1, i to usporedjujes sa 4/-y=1, znaci imas 1==1, a to je istina, dakle →1. te z postaje istina(ili ti 1). zatim y pridruzis y=y*z=y(jer, y*=z → y=y*z, a buduci da jz z=1, y=y), btw. ovaj == usporeduje, ali ne mjenja vrijednost niti jedne varijable. znaci y je -3, a z 1. PR ih ispisuje.

Kod:
x=x||y&&--z PR(x); PR(y); PR(z);


mislim da bi se prvo trebao z umanjiti za 1, jer je to unarni operator, zatim y&&z=0, tj laz jer je y!=0, a z=0, pa imamo istina&&laz→laz, pa na kraju x koji je != 0 (dakle istina) || 0(laz)→istina(1), znaci x postaje 1.
e sad, ja smatram da bi nakon ove linije z trebao biti 0, ali nije tako.. Kotacici rade 100 na sat (jel to mozda zato sto je z zapravo "istina", pa se njegova vrijednost ne mjenja?)

i tako su za sad vrijednosti slijedece: x=1, y=-3, z=1.

Kod:
PR(++x&&++y||++z); PR(x); PR(y);PR(z);


dakle, mislim da bi opet trebalo prvo proc unarne operatore, znaci x=2, y=-2, z=2 i onda 2 && (-2) →1 i sad 1||2 →1, znaci vrijednost ovog u prvom PR je 1, x=2,y=-2, i po ovom mom z bi trebalo biti 2, ali naravno nije, vec je ostalo 1. nadam se da ce mi netko objasniti zasto je tako, jer ovo ni meni nije bas jasno.

inace, moj savjet ti je da skicnes Jurakova predavanja, imas na netu i skoro sve je lijepo objesnjeno. konkretno za ovo imas na str 76. tablicu prioriteta i redoslijed izracunavanja..
nadam se da sam bar malo pomogla. Wink


[Vrh]
Korisnički profil Pošaljite privatnu poruku
Gost






PostPostano: 21:09 ned, 2. 7. 2006    Naslov: Citirajte i odgovorite

Malo mi previse vremena oduzima isprobavanje tocnosti zadatka na racunalu pa ako bi netko mogao pogledat rjesenje i reci mi je li dobro.Zadatak glasi(iz proslogodisnjih kolokvija):definirajte tip podatka cvor koji predstavlja cvor vezane liste koja se sastoji od jedne varijable tipa float.Napisite funkciju koja za ulazni argument uzima pokazivac na pocetak vezane liste[b] cvor[/b] i na kraj liste ubacuje novi cvor u kojem se nalazi
suma elemenata originalne liste.
E sad, ja sam ga ovako probao rijesit.

typedef struct _cvor{
float var;
struct _cvor *next;
}cvor;

void ubaci (cvor *cvor){
cvor *kraj,*novi;
float suma=0;
kraj=cvor;
while (kraj !=NULL){
suma+=kraj->var;
kraj=kraj->next;
}
novi=(cvor*)malloc(sizeof(cvor));
novi->var=suma;
kraj=novi;
kraj->next=NULL;
}
Unaprijed zahvaljujem na svakoj pomoci :)
Malo mi previse vremena oduzima isprobavanje tocnosti zadatka na racunalu pa ako bi netko mogao pogledat rjesenje i reci mi je li dobro.Zadatak glasi(iz proslogodisnjih kolokvija):definirajte tip podatka cvor koji predstavlja cvor vezane liste koja se sastoji od jedne varijable tipa float.Napisite funkciju koja za ulazni argument uzima pokazivac na pocetak vezane liste cvor i na kraj liste ubacuje novi cvor u kojem se nalazi
suma elemenata originalne liste.
E sad, ja sam ga ovako probao rijesit.

typedef struct _cvor{
float var;
struct _cvor *next;
}cvor;

void ubaci (cvor *cvor){
cvor *kraj,*novi;
float suma=0;
kraj=cvor;
while (kraj !=NULL){
suma+=kraj→var;
kraj=kraj→next;
}
novi=(cvor*)malloc(sizeof(cvor));
novi→var=suma;
kraj=novi;
kraj→next=NULL;
}
Unaprijed zahvaljujem na svakoj pomoci Smile


[Vrh]
vsego
Site Admin
Site Admin


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

PostPostano: 21:20 ned, 2. 7. 2006    Naslov: Citirajte i odgovorite

Nije dobro; potrazi u vjezbama kako se to radi, jer nema smisla da ja ovdje prepisujem. :?
Nije dobro; potrazi u vjezbama kako se to radi, jer nema smisla da ja ovdje prepisujem. Confused



_________________
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
petrich
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 07. 11. 2005. (22:23:35)
Postovi: (F6)16
Spol: žensko
Sarma = la pohva - posuda
18 = 20 - 2

PostPostano: 21:42 ned, 2. 7. 2006    Naslov: Citirajte i odgovorite

ajde vsego, skicni ovaj dio programcica odozgo (kad uhvatis malo vremena):
[code:1]x=x||y&&--z PR(x); PR(y); PR(z);[/code:1]

nisam zher kaj je s tim z, zasto on nakon ovog nije 0? :neznam:
ajde vsego, skicni ovaj dio programcica odozgo (kad uhvatis malo vremena):
Kod:
x=x||y&&--z PR(x); PR(y); PR(z);


nisam zher kaj je s tim z, zasto on nakon ovog nije 0? Ja to stvarno ne znam


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


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

PostPostano: 22:19 ned, 2. 7. 2006    Naslov: Citirajte i odgovorite

Posto je [tt]x == -3[/tt], to je [tt]istina[/tt]. :) E, a izraz je [tt]x || y && --z[/tt], tj. [tt]x || (y && --z)[/tt]. :-s Drugim rijecima, imas:
[tt]istina ILI nesto[/tt] :D

To je [b]uvijek[/b] istina, bez obzira sto je "[tt]nesto[/tt]", pa se to "[tt]nesto[/tt]" uopce ne evaulira (ne izvrsava se) i zato ono [tt]--z[/tt] nikad ne dodje do izrazaja (osim ako naredis compileru da se i to izvrsava). 8)

Imas to na nekim, cini mi se ranijim, vjezbama. ;)
Posto je x == -3, to je istina. Smile E, a izraz je x || y && –z, tj. x || (y && –z). Eh? Drugim rijecima, imas:
istina ILI nesto Very Happy

To je uvijek istina, bez obzira sto je "nesto", pa se to "nesto" uopce ne evaulira (ne izvrsava se) i zato ono –z nikad ne dodje do izrazaja (osim ako naredis compileru da se i to izvrsava). Cool

Imas to na nekim, cini mi se ranijim, vjezbama. Wink



_________________
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
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