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

Pomoć oko zadatka 1.7 (objasnjenje gradiva)
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
matmih
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 07. 12. 2006. (22:57:42)
Postovi: (1A4)16
Spol: muško
Sarma = la pohva - posuda
36 = 51 - 15
Lokacija: {Zg, De , Ri}

PostPostano: 20:15 čet, 22. 3. 2007    Naslov: Pomoć oko zadatka 1.7 Citirajte i odgovorite

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

int f(int k, int a, int b){
int cnt=0,x;
for (x=a; x<=b;x++)
if (k%x==0) cnt++;
return cnt;
}

void zad (int a, int b, int *br){
int k,i;
*br=0;
for (k=b+1;k<=a+b;k++){
int fk=f(k,a,b);
if (fk>*br) *br=fk;
printf("%d: ",k);
for (i=0;i<fk;i++) printf("#");
printf("\n");
}
}

int main(void) {
int res;
zad(3, 9, &res);
printf("Rezultat: %d\n", res);
scanf("%%");
return 0;
}
[/code:1]

Zanima me na šta pokazuje *br i kako to vidim?
I čemu služi:
[code:1] if (fk>*br) *br=fk; [/code:1]

Zaboravio sam od prošlog tjedna. :oops:
Kod:
#include <stdio.h>

int f(int k, int a, int b){
int cnt=0,x;
for (x=a; x<=b;x++)
if (k%x==0) cnt++;
return cnt;
}

void zad (int a, int b, int *br){
int k,i;
*br=0;
for (k=b+1;k<=a+b;k++){
int fk=f(k,a,b);
if (fk>*br) *br=fk;
printf("%d: ",k);
for (i=0;i<fk;i++) printf("#");
printf("\n");
}
}

int main(void) {
int res;
zad(3, 9, &res);
printf("Rezultat: %d\n", res);
scanf("%%");
return 0;
}


Zanima me na šta pokazuje *br i kako to vidim?
I čemu služi:
Kod:
 if (fk>*br) *br=fk;


Zaboravio sam od prošlog tjedna. Embarassed


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


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

PostPostano: 21:21 čet, 22. 3. 2007    Naslov: Re: Pomoć oko zadatka 1.7 Citirajte i odgovorite

[code:1]
void zad(int a, int b, int *br){
...
zad( 3, 9, &res);[/code:1]

Sada jasnije? :D
Kod:

void zad(int a, int b, int *br){
...
     zad(    3,     9,    &res);


Sada jasnije? Very Happy



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


Pridružen/a: 07. 12. 2006. (22:57:42)
Postovi: (1A4)16
Spol: muško
Sarma = la pohva - posuda
36 = 51 - 15
Lokacija: {Zg, De , Ri}

PostPostano: 21:32 čet, 22. 3. 2007    Naslov: Citirajte i odgovorite

Pa da... Hvala :!:

Znači br sadrži adresu od res, a *br stavlja vrijednost na adresu od res.
Onaj if nam je zato jer tražimo maksimalno rj. :D
Pa da... Hvala Exclamation

Znači br sadrži adresu od res, a *br stavlja vrijednost na adresu od res.
Onaj if nam je zato jer tražimo maksimalno rj. Very Happy


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


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

PostPostano: 21:40 čet, 22. 3. 2007    Naslov: Citirajte i odgovorite

Eto, vidis kako je jednostavno. ;)
Eto, vidis kako je jednostavno. 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
matmih
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 07. 12. 2006. (22:57:42)
Postovi: (1A4)16
Spol: muško
Sarma = la pohva - posuda
36 = 51 - 15
Lokacija: {Zg, De , Ri}

PostPostano: 21:45 čet, 22. 3. 2007    Naslov: Citirajte i odgovorite

Da ne otvaram novi topic. Kako mogu vidjet koliko treba programu da se izvrši na mom kompu u sekundama? Baš bi htio probat za onaj rekurzivni Fibonacci. :)
Da ne otvaram novi topic. Kako mogu vidjet koliko treba programu da se izvrši na mom kompu u sekundama? Baš bi htio probat za onaj rekurzivni Fibonacci. Smile


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


Pridružen/a: 01. 10. 2005. (18:24:38)
Postovi: (187)16
Spol: muško
Sarma = la pohva - posuda
= 45 - 45

PostPostano: 22:06 čet, 22. 3. 2007    Naslov: Citirajte i odgovorite

štopericu u ruke? :)
ne šalim se... ako traje jako kratko ti uvijek možeš napraviti petlju od nekoliko milijuna ponavljanja...

pametniji način je prije pokretanja uzeti sistemsko vrijeme, uzeti nakon i oduzeti. Naredbe za dobivanje vremena će ti netko drugi morati reći ili ćeš sam saznati.
štopericu u ruke? Smile
ne šalim se... ako traje jako kratko ti uvijek možeš napraviti petlju od nekoliko milijuna ponavljanja...

pametniji način je prije pokretanja uzeti sistemsko vrijeme, uzeti nakon i oduzeti. Naredbe za dobivanje vremena će ti netko drugi morati reći ili ćeš sam saznati.



_________________
suradnici za razvoj igre traženi!! vidi ovo
[Vrh]
Korisnički profil Pošaljite privatnu poruku Pošaljite e-mail MSNM
vsego
Site Admin
Site Admin


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

PostPostano: 22:31 čet, 22. 3. 2007    Naslov: Citirajte i odgovorite

Ako vrtis Linux, onda je lako. :) Umjesto sa
[tt]./a.out[/tt]
program pozoves sa
[tt]time ./a.out[/tt] 8)

Za Win nemam blage. :neznam:
Ako vrtis Linux, onda je lako. Smile Umjesto sa
./a.out
program pozoves sa
time ./a.out Cool

Za Win nemam blage. Ja to stvarno ne znam



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


Pridružen/a: 07. 12. 2006. (22:57:42)
Postovi: (1A4)16
Spol: muško
Sarma = la pohva - posuda
36 = 51 - 15
Lokacija: {Zg, De , Ri}

PostPostano: 0:20 pet, 23. 3. 2007    Naslov: Citirajte i odgovorite

Windows nažalost. :(

No [url=http://www.cs.utah.edu/dept/old/texinfo/glibc-manual-0.02/library_19.html#SEC313] ovdje [/url] sam vidio da u time.h postoji neka funkcija time_t, samo neznam kako je pozvati.
A u devC helpu piše:
Data and Time Functions: <time.h>

clock_t clock(void)

time_t time(time_t , *tp

double difftime(time_t time2 , time_t time1)

time_t mktime(struct tm *tp)

char *asctime(const time_t *tp)

char *ctime(const time_t *tp)

struct tm *gmtime(const time_t *tp)

struct tm *localtime(const time_t *tp)

size_t strftime(char *s, size_t smax, const char *fmt, const struct tm *tp)
Windows nažalost. Sad

No ovdje sam vidio da u time.h postoji neka funkcija time_t, samo neznam kako je pozvati.
A u devC helpu piše:
Data and Time Functions: <time.h>

clock_t clock(void)

time_t time(time_t , *tp

double difftime(time_t time2 , time_t time1)

time_t mktime(struct tm *tp)

char *asctime(const time_t *tp)

char *ctime(const time_t *tp)

struct tm *gmtime(const time_t *tp)

struct tm *localtime(const time_t *tp)

size_t strftime(char *s, size_t smax, const char *fmt, const struct tm *tp)


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


Pridružen/a: 01. 10. 2005. (18:24:38)
Postovi: (187)16
Spol: muško
Sarma = la pohva - posuda
= 45 - 45

PostPostano: 1:23 pet, 23. 3. 2007    Naslov: Citirajte i odgovorite

pa kako ti je promaklo? Sve ti kaže:

Function: time_t time (time_t *result)
The time function returns the current time as a value of type time_t. If the argument result is not a null pointer, the time value is also stored in *result. If the calendar time is not available, the value (time_t)(-1) is returned.

Data Type: time_t
This is the data type used to represent calendar time. In the GNU C library and other POSIX-compliant implementations, time_t is equivalent to long int. When interpreted as an absolute time value, it represents the number of seconds elapsed since 00:00:00 on January 1, 1970, Coordinated Universal Time. (This date is sometimes referred to as the epoch.)

.... dakle, neisprobano ali trebalo bi raditi:
[code:1]
include <time.h>
//...
time_t mjerenje1;
time_t mjerenje2;
//...
mjerenje1 = time(null);
// radi neki vrag što se mjeri...
mjerenje2 = time(null);
printf("rezultat je %d", mjerenje2-mjerenje1);
[/code:1]

edit: ili koristi difftime(), za što i postoji jer kao oduzimanje ne radi svugdje...

edit2:
[quote="matmih"]Windows nažalost. :(

No [url=http://www.cs.utah.edu/dept/old/texinfo/glibc-manual-0.02/library_19.html#SEC313] ovdje [/url] sam vidio da u time.h postoji neka funkcija time_t, samo neznam kako je pozvati.[/quote]
aha... vidim kako ti je promaklo... time_t nije funckija, već tip podataka koji recimo time() vraća.
pa kako ti je promaklo? Sve ti kaže:

Function: time_t time (time_t *result)
The time function returns the current time as a value of type time_t. If the argument result is not a null pointer, the time value is also stored in *result. If the calendar time is not available, the value (time_t)(-1) is returned.

Data Type: time_t
This is the data type used to represent calendar time. In the GNU C library and other POSIX-compliant implementations, time_t is equivalent to long int. When interpreted as an absolute time value, it represents the number of seconds elapsed since 00:00:00 on January 1, 1970, Coordinated Universal Time. (This date is sometimes referred to as the epoch.)

.... dakle, neisprobano ali trebalo bi raditi:
Kod:

include <time.h>
//...
time_t mjerenje1;
time_t mjerenje2;
//...
mjerenje1 = time(null);
// radi neki vrag što se mjeri...
mjerenje2 = time(null);
printf("rezultat je %d", mjerenje2-mjerenje1);


edit: ili koristi difftime(), za što i postoji jer kao oduzimanje ne radi svugdje...

edit2:
matmih (napisa):
Windows nažalost. Sad

No ovdje sam vidio da u time.h postoji neka funkcija time_t, samo neznam kako je pozvati.

aha... vidim kako ti je promaklo... time_t nije funckija, već tip podataka koji recimo time() vraća.



_________________
suradnici za razvoj igre traženi!! vidi ovo
[Vrh]
Korisnički profil Pošaljite privatnu poruku Pošaljite e-mail MSNM
matmih
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 07. 12. 2006. (22:57:42)
Postovi: (1A4)16
Spol: muško
Sarma = la pohva - posuda
36 = 51 - 15
Lokacija: {Zg, De , Ri}

PostPostano: 9:33 pet, 23. 3. 2007    Naslov: Citirajte i odgovorite

OK, hvala. Probat ću tako.
OK, hvala. Probat ću tako.


[Vrh]
Korisnički profil Pošaljite privatnu poruku MSNM
milasinovic
Moderator
Moderator


Pridružen/a: 25. 11. 2002. (17:03:32)
Postovi: (18)16
Spol: muško
Sarma = la pohva - posuda
= 4 - 1
Lokacija: FER-D374

PostPostano: 14:06 pet, 23. 3. 2007    Naslov: Citirajte i odgovorite

[quote="matmih"]Da ne otvaram novi topic. Kako mogu vidjet koliko treba programu da se izvrši na mom kompu u sekundama? Baš bi htio probat za onaj rekurzivni Fibonacci. :)[/quote]

Mislim da bi ovo trebalo raditi:

#include <sys\timeb.h>

struct timeb vrijeme1, vrijeme2; long trajanjems;

ftime (&vrijeme1);
... kod kojem treba izmjeriti vrijeme
ftime (&vrijeme2);

trajanjems = 1000 * (vrijeme2.time - vrijeme1.time) +
vrijeme2.millitm - vrijeme1.millitm;
matmih (napisa):
Da ne otvaram novi topic. Kako mogu vidjet koliko treba programu da se izvrši na mom kompu u sekundama? Baš bi htio probat za onaj rekurzivni Fibonacci. Smile


Mislim da bi ovo trebalo raditi:

#include <sys\timeb.h>

struct timeb vrijeme1, vrijeme2; long trajanjems;

ftime (&vrijeme1);
... kod kojem treba izmjeriti vrijeme
ftime (&vrijeme2);

trajanjems = 1000 * (vrijeme2.time - vrijeme1.time) +
vrijeme2.millitm - vrijeme1.millitm;


[Vrh]
Korisnički profil Pošaljite privatnu poruku Posjetite Web stranice
matmih
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 07. 12. 2006. (22:57:42)
Postovi: (1A4)16
Spol: muško
Sarma = la pohva - posuda
36 = 51 - 15
Lokacija: {Zg, De , Ri}

PostPostano: 23:44 pet, 23. 3. 2007    Naslov: Citirajte i odgovorite

Utipkao sam kod od milasinovica i radi. Hvala! Samo je vrijeme dosta promijenjivo, valjda ovisi o opterećenosti procesora itd.
Uglavnom: Mom starom laptopu je trebalo cca 13 sekundi za izračunat
fib(41). Nakon toga sam ja ambiciozno utipkao fib(100), no kada sam išao malo računat uz 70% povećanje bi mu trebalo cca 25 min za izračunat fib(50) i [b]86 sati[/b] za izračunat fib(60) tak da sam odustao. :D Za fib(100) bi mu trebalo [b]samo[/b] 1.42*10^11 sati. :D
Ako sam krivo izračunao slobodno me ispravite :!: :lol:
Utipkao sam kod od milasinovica i radi. Hvala! Samo je vrijeme dosta promijenjivo, valjda ovisi o opterećenosti procesora itd.
Uglavnom: Mom starom laptopu je trebalo cca 13 sekundi za izračunat
fib(41). Nakon toga sam ja ambiciozno utipkao fib(100), no kada sam išao malo računat uz 70% povećanje bi mu trebalo cca 25 min za izračunat fib(50) i 86 sati za izračunat fib(60) tak da sam odustao. Very Happy Za fib(100) bi mu trebalo samo 1.42*10^11 sati. Very Happy
Ako sam krivo izračunao slobodno me ispravite Exclamation Laughing


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


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

PostPostano: 0:46 sub, 24. 3. 2007    Naslov: Citirajte i odgovorite

I sad pretpostavi da imas 1000 puta brze racunalo (sto neces jos dugo imati ;))... i dalje je krvolocno, right? ;)

Eh, to je zato jer je taj algoritam [b]los[/b] u terminima slozenosti (ima exponencijalnu slozenost). :D Nerekurzivni je linearan, sto je bitno bolje (usporedi 1000000 i c^1000000, gdje je c>1; experimentalno izmedju 1.5 i 1.8, ako se ne varam). :D
I sad pretpostavi da imas 1000 puta brze racunalo (sto neces jos dugo imati Wink)... i dalje je krvolocno, right? Wink

Eh, to je zato jer je taj algoritam los u terminima slozenosti (ima exponencijalnu slozenost). Very Happy Nerekurzivni je linearan, sto je bitno bolje (usporedi 1000000 i c^1000000, gdje je c>1; experimentalno izmedju 1.5 i 1.8, ako se ne varam). Very Happy



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


Pridružen/a: 07. 12. 2006. (22:57:42)
Postovi: (1A4)16
Spol: muško
Sarma = la pohva - posuda
36 = 51 - 15
Lokacija: {Zg, De , Ri}

PostPostano: 19:19 sub, 24. 3. 2007    Naslov: Citirajte i odgovorite

[quote="vsego"]I sad pretpostavi da imas 1000 puta brze racunalo (sto neces jos dugo imati ;))... i dalje je krvolocno, right? ;)
[/quote]

Istina. :wink:
vsego (napisa):
I sad pretpostavi da imas 1000 puta brze racunalo (sto neces jos dugo imati Wink)... i dalje je krvolocno, right? Wink


Istina. Wink


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


Pridružen/a: 07. 12. 2006. (22:57:42)
Postovi: (1A4)16
Spol: muško
Sarma = la pohva - posuda
36 = 51 - 15
Lokacija: {Zg, De , Ri}

PostPostano: 22:08 čet, 29. 3. 2007    Naslov: Citirajte i odgovorite

Upravo sam probao rješiti zadatak 2.3:
Funkcija je zadana:
f(a,b)=1, a=b=0
-f(-2a,b), a<0,b>=0
-f(-2b,a), a>=0,b<0
f(a+1,0)+f(0,b-3), a<0,b<0
f(7-b,a), inače

I sad, ja sam probao izračunati f(8,8 ).
Dobijem ovako:
[code:1]
f(8,8)=f(-1,8)
f(-1,8)=-f(2,8)
f(2,8)=f(-1,2)
f(-1,2)=-f(2,2)
f(2,2)=f(5,2)
f(5,2)=f(5,5)
f(5,5)=f(2,5)
f(2,5)=f(2,2) [/code:1]....i tako dobijem beskonačnu rekurziju. Program sam naravno utipkao i u komp i program se sruši.
Upravo sam probao rješiti zadatak 2.3:
Funkcija je zadana:
f(a,b)=1, a=b=0
-f(-2a,b), a<0,b>=0
-f(-2b,a), a>=0,b<0
f(a+1,0)+f(0,b-3), a<0,b<0
f(7-b,a), inače

I sad, ja sam probao izračunati f(8,8 ).
Dobijem ovako:
Kod:

f(8,8)=f(-1,8)
f(-1,8)=-f(2,8)
f(2,8)=f(-1,2)
f(-1,2)=-f(2,2)
f(2,2)=f(5,2)
f(5,2)=f(5,5)
f(5,5)=f(2,5)
f(2,5)=f(2,2)
....i tako dobijem beskonačnu rekurziju. Program sam naravno utipkao i u komp i program se sruši.


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


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

PostPostano: 22:53 čet, 29. 3. 2007    Naslov: Citirajte i odgovorite

Hmda... nesto sam krivo prepisao s papira na kojem sam to slagao. :oops: Popravim kad nadjem papir. :D Do tada, promijeni terminalni uvjet na |a-b|<5 ili tako nesto sto ce se sigurno prije ili poslije ispuniti. ;)
Hmda... nesto sam krivo prepisao s papira na kojem sam to slagao. Embarassed Popravim kad nadjem papir. Very Happy Do tada, promijeni terminalni uvjet na |a-b|<5 ili tako nesto sto ce se sigurno prije ili poslije ispuniti. 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