Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

cetiri zadatka - help

[es] :: Art of Programming :: cetiri zadatka - help

[ Pregleda: 2412 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

zana2

Član broj: 120243
Poruke: 10
89.188.34.*



Profil

icon cetiri zadatka - help01.12.2006. u 20:36 - pre 212 meseci
Date su sledeće funkcije u jeziku koji liči na C
f(x) { return g(x= x*2);}
g(x) { y=1; h(y); return x+y+x;}
h(x) { x= x+5; return 0;}
main(){ print(f(7));}
Sve funkcije mogu predavati argumente na 2 načina: po vrijednosti i po referenci. Kako treba
predavati argumente u funkcijama f, g i h da bi rezultat izvršavanja datog programa bio: a)
29 b) 34
2. Napisati KS gramatiku G tako da je L(G) skup svih formula iskaznog računa. Koristiti
logičke veznike AND, OR i NOT, konstante TRUE i FALSE i promjenljive. Promjenljivoj se
može dodijeliti vrijednost pomoću operatora =. Podrazumijevani prioritet veznika može se
promijeniti uvođenjem zagrada.
(a) Prikazati sintaksno drvo za ulazni niz x=TRUE y=FALSE z= (x OR not y) AND FALSE
OR NOT X.
(b) Napisati bison/yacc datoteku koja implementira kalkulator logičkih izraza. Vaš program
treba da učitava podatke sa komandne linije ili iz datoteke koja se zadaje kao komandni
parametar i treba da štampa rezultat na komandnu liniju. Potrebno je obraditi greške.
Imena promjenljivih definišu se kao u jeziku Decaf.
(c) Dodati atribute pravilima gramatike G tako da početni simbol grmatike ima atribut koji
je pokazivač na korijen apstraktnog sintaksnog drveta koje odgovara datom logičkom
programu.
3. Dat je sljedeći C++ program. Prikazati izgled memorije kada se to traži od vas. Potrebo je
nacrtati dvije slike. Na svakoj slici prikazati šta se nalazi na steku a šta na heapu.
Pokazivače prikazati strelicama. Memoriju koja postane nedostupna označiti simbolom ???.
void Tuesday(int *lei, int *eric, int mehran){
eric[2] = 9;
mehran = eric[0] + *(eric + 2) / 2;
eric[1] = lei[0];
*lei = 5;
lei = new int[mehran];
// Nacrtati stanje memorije u ovom trenutku
}
int Monday(int *x, int *y, int *z){
int arr[4] = {0, 1, 2, 3};
int i;
z = y;
y = &(x[1]);
x = new int[*z];
for(i = 0; i < *z; i++) {
*(x + i) = *(arr + i) * 2;
}
*y = *z + 4;
Tuesday(z, y, *x);
x[1] = 13;
return (*z + x[2]);
}
int main(){
int mehran, *eric, justin = 4, lei;
lei = 3;
eric = new int[justin];
justin = Monday(eric, &lei, &mehran);
// Nacrtati stanje memorije u ovom trenutku
return 0;
}
4. Napisati međuprogramsku reprezentaciju za sljedeći C program:
float m[13]; /*zadatak 2*/
int IsEven(int x){ if (0 == (x%2)) return 1; return 0; }
int niz(float x,float y){
int i,j; float a;
j=16;
for(i=1;i<=12; i++, j ­=
3){
a=IsEven(x);
m=m[i1]*
(x+2.0) ­
2*a1;
}
if(m[12]=<1) return 0;
return 1;
}
 
Odgovor na temu

peromalosutra
Ivan Rajkovic
Software engineer
Luxoft
Berlin

Član broj: 54774
Poruke: 878
*.teol.net.



+148 Profil

icon Re: cetiri zadatka - help02.12.2006. u 18:19 - pre 212 meseci
Da li su ti ovo zadaci sa faksa i sa kog?

Ne razumijem baš najbolje pitanja, npr. u 4. "međuprogramska reprezentacija" (?), dok 3. ne bi trebao da bude problem, samo idi liniju po liniju koda i crtaj šta se dešava.. Da puno ne pametujem evo rješenja prvog, tj. najlakšeg :)

1. za rezultat 29 sve funkcije treba da primaju argumente prema vrijednosti, dok za rezultat 34 dovoljno je da funkcija h(x) uzima argument prema referenci.

Ostale ću valjda kontati kad i ja dođem do faksa :)

 
Odgovor na temu

zana2

Član broj: 120243
Poruke: 10
89.188.34.*



Profil

icon Re: cetiri zadatka - help15.12.2006. u 20:48 - pre 211 meseci
Sa PMF-a...Ali,zavrsen je...
 
Odgovor na temu

Entina84

Član broj: 156671
Poruke: 2
85.94.122.*



Profil

icon Re: međuprogramska reprezentacija12.09.2007. u 14:19 - pre 202 meseci
S obzirom da je Marija postavila pitanje proshle godine vjerovatno joj ne treba odgovor...ali mozda zatreba nekad nekome
Ovo bi trebalo da je rjeshenje 4. zadatka....mozda grijeshim

float m[13]
int IsEven (int x) {
if (0 = = (x%2)) return 1, return 0;
}
int niz (float x, float y) {
int i, j ;
float a ;
j = 16;
for (i = 1; i< = 12 ; i++,j- = 3) {
a = IsEven (x)
m = m [i - 1] * (x + 2.0) – 2* a-1
}
if (m[12]< = 1) return 0;
return 1;
}



1. alloc m 104
2. func IsEven 0 4
3. con 0
4. param 0
5. @ i 4
6. con 2
7. % i 5 6
8. = = 3 7
9. bt 8 11
10. br 13
11. con 1
12. ret i 11
13. con 0
14. ret i 13
15. fend
16. func niz 16 16
17. local 4
18. con 16
19. = i 17 18
20. local 0
21. con 1
22. = i 20 21
23. local 0
24. @ i 23
25. con 12
26. < = i 24 25
27. bt 26 40
28. br 77
29. local 0
30. @ i 29
31. con 1
32. + i 30 31
33. = i 29 32
34. local 4
35. @ i 34
36. con 3
37. – i 35 36
38. = i 34 37
39. br 23
40. local 8
41. param 0
42. @ i 41
43. arg i 42
44. global IsEven
45. f i 44 1
46. @ f 45
47. = f 40 45
48. global m
49. local 0
50. @ i 49
51. [ ] f 48 50
52. global m
53. local 0
54. @ i 53
55. con 1
56. – i 54 55
57. [ ] f 52 56
58. @ f 57
59. param 0
60. @ i 59
61. cv f 60
62. con 2
63. cv f 62
64. + f 61 63
65. * f 58 64
66. con 2
67. cv f 66
68. local 8
69. @ f 68
70. * f 67 69
71. – f 65 70
72. con 1
73. cv f 72
74. – f 71 73
75. = f 51 74
76. br 29
77. global m
78. con 12
79. [ ] f 77 78
80. @ f 79
81. con 1
82. cv f 81
83. <= f 80 82
84. bt 83 86
85. br 88
86. con 0
87. ret i 86
88. con 1
89. ret i 88
90. fend





[Ovu poruku je menjao Entina84 dana 12.09.2007. u 21:25 GMT+1]
 
Odgovor na temu

peromalosutra
Ivan Rajkovic
Software engineer
Luxoft
Berlin

Član broj: 54774
Poruke: 878
*.teol.net.



+148 Profil

icon Re: cetiri zadatka - help16.09.2007. u 10:00 - pre 202 meseci
Stavi kod izmedju [code] tagova, bice daleko preglednije.
Citat:
S obzirom da je Marija postavila pitanje proshle godine vjerovatno joj ne treba odgovor.

Ko zna, mozda obnavlja godinu :)


 
Odgovor na temu

[es] :: Art of Programming :: cetiri zadatka - help

[ Pregleda: 2412 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.