Prethodna tema :: Sljedeća tema |
Autor/ica |
Poruka |
buzov5 Forumaš(ica)
Pridružen/a: 01. 12. 2006. (13:30:32) Postovi: (4D)16
Lokacija: zg
|
|
[Vrh] |
|
vsego Site Admin
Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3560)16
Spol:
Lokacija: /sbin/init
|
|
[Vrh] |
|
rafaelm Forumaš(ica)
Pridružen/a: 24. 12. 2006. (13:30:11) Postovi: (21F)16
Spol:
Lokacija: Zagreb
|
|
[Vrh] |
|
darkangel Forumaš(ica)
Pridružen/a: 21. 07. 2006. (19:17:11) Postovi: (25)16
Spol:
|
|
[Vrh] |
|
vsego Site Admin
Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3560)16
Spol:
Lokacija: /sbin/init
|
|
[Vrh] |
|
The Economist Forumaš(ica)
Pridružen/a: 04. 06. 2006. (00:03:21) Postovi: (5D)16
Spol:
|
|
[Vrh] |
|
rafaelm Forumaš(ica)
Pridružen/a: 24. 12. 2006. (13:30:11) Postovi: (21F)16
Spol:
Lokacija: Zagreb
|
|
[Vrh] |
|
The Economist Forumaš(ica)
Pridružen/a: 04. 06. 2006. (00:03:21) Postovi: (5D)16
Spol:
|
Postano: 18:28 uto, 2. 1. 2007 Naslov: |
|
|
ali mene zanima od pokretaca topica cut, kad je rijesio citavu zadacu, kako je rijesio 4 zadatak. naime, ja slozim tablicu, al ne znam kako bi napravila jednaku "sirinu" za n>10 osim ono zdravo seljacki nastelavat :twisted:
pomagajte :lol:
ali mene zanima od pokretaca topica cut, kad je rijesio citavu zadacu, kako je rijesio 4 zadatak. naime, ja slozim tablicu, al ne znam kako bi napravila jednaku "sirinu" za n>10 osim ono zdravo seljacki nastelavat
pomagajte
_________________ Lots of people believe that women have some kind of genetic fault that keeps them from understanding science. Fact is: there is no genetic fault, but it's still harder, because they have to work against everybody's expectation that they won't make it anyway.
|
|
[Vrh] |
|
vsego Site Admin
Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3560)16
Spol:
Lokacija: /sbin/init
|
|
[Vrh] |
|
The Economist Forumaš(ica)
Pridružen/a: 04. 06. 2006. (00:03:21) Postovi: (5D)16
Spol:
|
Postano: 21:56 uto, 2. 1. 2007 Naslov: |
|
|
da, to je bila i moja ideja, ali pala je na podrucju realizacije :lol:
dakle najveci broj bi bio n*n, za kojeg ne mogu sa sigurnoscu tvrdit koliko ima znamenaka bez brojaca (ili mi matematika steka :lol: , sto nikad nije iskljuceno). dakle ne mogu povezati svoj "n" sa znamenkama "n*n", osim bez gore spomenutog "rucnog" postelavanja. ili?
da, to je bila i moja ideja, ali pala je na podrucju realizacije
dakle najveci broj bi bio n*n, za kojeg ne mogu sa sigurnoscu tvrdit koliko ima znamenaka bez brojaca (ili mi matematika steka , sto nikad nije iskljuceno). dakle ne mogu povezati svoj "n" sa znamenkama "n*n", osim bez gore spomenutog "rucnog" postelavanja. ili?
_________________ Lots of people believe that women have some kind of genetic fault that keeps them from understanding science. Fact is: there is no genetic fault, but it's still harder, because they have to work against everybody's expectation that they won't make it anyway.
|
|
[Vrh] |
|
vsego Site Admin
Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3560)16
Spol:
Lokacija: /sbin/init
|
Postano: 0:09 sri, 3. 1. 2007 Naslov: |
|
|
[quote="The Economist"]dakle najveci broj bi bio n*n, za kojeg ne mogu sa sigurnoscu tvrdit koliko ima znamenaka bez brojaca (ili mi matematika steka :lol: , sto nikad nije iskljuceno).[/quote]
Kako ne znas? :-k Bio je zadatak na vjezbama u stilu "ispisi znamenke broja" ili nesto slicno (cini mi se u bazi 7, ali mi je malo nespretno sada provjeravati). :? Pa, ako znas nesto napraviti s pojedinim znamenkama, valjda ih znas i prebrojati. 8)
Drugi nacin je logaritam, ali tu imas problem sto vas nismo ucili kako se pozivaju matematicke funkcije, pa preporucam ipak [tt]while()[/tt] petlju na koju aludiram prethodnim paragrafom. :)
The Economist (napisa): | dakle najveci broj bi bio n*n, za kojeg ne mogu sa sigurnoscu tvrdit koliko ima znamenaka bez brojaca (ili mi matematika steka , sto nikad nije iskljuceno). |
Kako ne znas? Bio je zadatak na vjezbama u stilu "ispisi znamenke broja" ili nesto slicno (cini mi se u bazi 7, ali mi je malo nespretno sada provjeravati). Pa, ako znas nesto napraviti s pojedinim znamenkama, valjda ih znas i prebrojati.
Drugi nacin je logaritam, ali tu imas problem sto vas nismo ucili kako se pozivaju matematicke funkcije, pa preporucam ipak while() petlju na koju aludiram prethodnim paragrafom.
_________________ 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.
|
|
[Vrh] |
|
mdoko Forumaš(ica)
Pridružen/a: 30. 11. 2002. (22:17:12) Postovi: (71A)16
Spol:
Lokacija: Heriot-Watt University, Edinburgh
|
|
[Vrh] |
|
The Economist Forumaš(ica)
Pridružen/a: 04. 06. 2006. (00:03:21) Postovi: (5D)16
Spol:
|
|
[Vrh] |
|
rafaelm Forumaš(ica)
Pridružen/a: 24. 12. 2006. (13:30:11) Postovi: (21F)16
Spol:
Lokacija: Zagreb
|
|
[Vrh] |
|
vsego Site Admin
Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3560)16
Spol:
Lokacija: /sbin/init
|
Postano: 13:51 sri, 3. 1. 2007 Naslov: |
|
|
Ispis programa se moze trivijalno proslijediti i u datoteku, gdje nema limita na sirinu. :P
Zadaca je vama za vjezbu, pa preporucam da napravite kako sam gore sugerirao. 8) Bod-dva sigurno nisu vrijedni te muke, ali steceno iskustvo je. ;)
Ispis programa se moze trivijalno proslijediti i u datoteku, gdje nema limita na sirinu.
Zadaca je vama za vjezbu, pa preporucam da napravite kako sam gore sugerirao. Bod-dva sigurno nisu vrijedni te muke, ali steceno iskustvo je.
_________________ 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.
|
|
[Vrh] |
|
Bubba Forumaš s poteškoćama u pisanju
Pridružen/a: 17. 11. 2006. (18:09:12) Postovi: (53)16
Spol:
|
Postano: 23:06 pet, 5. 1. 2007 Naslov: |
|
|
[quote="rafaelm"][quote="vsego"]Postoji i donekle pametniji nacin, pomocu formata, ali ne znam na pamet kako (cak nisam niti siguran da radi u klasicnom C-u). :|[/quote]
je li to npr: printf("%7d",i*j) koji ce na ispis broja potrositi najmanje 7 mjesta? da li je potrebno umjesto 7 uvesti varijablu cija vrijednost je jednaka broju znamenki n*n? buduci da nam na monitoru 17'' nikad nece ispasti takva pravilna tablica ako n ima 3 ili više znamenki....[/quote]
Koliko vidim, ovdje se prica o 5. a ne o 4. zadatku (odnosno onom s tablicom mnozenja, jel?). Anyhow, da ne spoilam bitno, i manim se nepotrebnih matematickih lamentacija, ovaj problem se trivijalno rijesava, na primjer, ovako. Uzmimo, uza sve ostale varijable, i jedno jednodimenzionalno polje znakova proizvoljne velicine, te jos jednu integer varijablu.
[code:1] char string[N];
int len;
[/code:1]
Nakon toga, definirajmo i ovo dvoje nakon upisivanja opsega tablice mnozenja, uz objasnjenje:
[code:1] sprintf (string, "%d", n*n);
len = strlen (string);
[/code:1]
Dakle, sto uradismo. Pretvorili smo najveci broj u tablici mnozenja (koji je ocito n*n) u string, te izbrojali koliko on "tezi" sa funkcijom strlen, te taj broj (koji nam efektivno prikazuje broj znamenki) pospremili u varijablu len. Sada je samo stvar printf-a za nas lijepi i zeljeni ispis, koji onda izgleda ovako:
[code:1] printf ("%*d",len+1, produkt);
[/code:1]
Primjeti asteriks prije "d"; definirana je varijabla len+1 koja odredjuje taj broj. Sada bezbrizno mozemo stvarati ogromne tablice mnozenja s lijepim ispisom.
Ovako to izgleda za tablicicu mnozenja do 1000...
http://img158.imageshack.us/img158/3163/kakotoizgledaea4.png
rafaelm (napisa): | vsego (napisa): | Postoji i donekle pametniji nacin, pomocu formata, ali ne znam na pamet kako (cak nisam niti siguran da radi u klasicnom C-u). |
je li to npr: printf("%7d",i*j) koji ce na ispis broja potrositi najmanje 7 mjesta? da li je potrebno umjesto 7 uvesti varijablu cija vrijednost je jednaka broju znamenki n*n? buduci da nam na monitoru 17'' nikad nece ispasti takva pravilna tablica ako n ima 3 ili više znamenki.... |
Koliko vidim, ovdje se prica o 5. a ne o 4. zadatku (odnosno onom s tablicom mnozenja, jel?). Anyhow, da ne spoilam bitno, i manim se nepotrebnih matematickih lamentacija, ovaj problem se trivijalno rijesava, na primjer, ovako. Uzmimo, uza sve ostale varijable, i jedno jednodimenzionalno polje znakova proizvoljne velicine, te jos jednu integer varijablu.
Kod: | char string[N];
int len;
|
Nakon toga, definirajmo i ovo dvoje nakon upisivanja opsega tablice mnozenja, uz objasnjenje:
Kod: | sprintf (string, "%d", n*n);
len = strlen (string);
|
Dakle, sto uradismo. Pretvorili smo najveci broj u tablici mnozenja (koji je ocito n*n) u string, te izbrojali koliko on "tezi" sa funkcijom strlen, te taj broj (koji nam efektivno prikazuje broj znamenki) pospremili u varijablu len. Sada je samo stvar printf-a za nas lijepi i zeljeni ispis, koji onda izgleda ovako:
Kod: | printf ("%*d",len+1, produkt);
|
Primjeti asteriks prije "d"; definirana je varijabla len+1 koja odredjuje taj broj. Sada bezbrizno mozemo stvarati ogromne tablice mnozenja s lijepim ispisom.
Ovako to izgleda za tablicicu mnozenja do 1000...
http://img158.imageshack.us/img158/3163/kakotoizgledaea4.png
|
|
[Vrh] |
|
vsego Site Admin
Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3560)16
Spol:
Lokacija: /sbin/init
|
Postano: 4:23 sub, 6. 1. 2007 Naslov: |
|
|
Always the same problem... :roll: Naravno da postoje "nadobudni" nacini za rijesiti pojedine zadatke, no nije poanta da sami ucite stringove (to bi trebalo doci tek u 2. semestru), nego da sto bolje uvjezbate petlje. :| Kao sto sam vec rekao: toliki trud zbog jednog ili dva boda nema smisla; zadace sluze upravo tome da uvjezbate gradivo i da vidite gdje eventualno "zapinjete", a ne da "žvačete" gradivo unaprijed. :?
Inace, duljinu broja [latex]n^2[/latex] trivijalno izracunas pomocu izraza [tt](int)floor(log10(n*n)) + 1[/tt], kako sam i hintirao prije (jasno, treba znati ukljuciti matematicke funkcije), ali - ponavljam - [b]to nije svrha tog zadatka[/b]. :tso:
Btw, tvoje rjesenje sa stringom ima dva problema:
1. Ovisi o [tt]N[/tt] za koji bas i nije jasno sto je. :? Njegova vrijednost ovisi o arhitekturi na kojoj se program compilira i izvodi. :?
2. Podsjecam na napomenu: "U svim zadacima je zabranjeno korištenje nizova i funkcija iz math.h libraryja." :arrow: nije dozvoljeno koristiti niti stringove niti ovu moju pametariju s matematickim funkcijama. :P
"Pametni" [tt]printf()[/tt] "prolazi", ali preskace ucenje petlji za "ukrasene" ispise (po uzoru na zavrsne zadatke iz poglavlja "Petlje" u vjezbama). :?
Always the same problem... Naravno da postoje "nadobudni" nacini za rijesiti pojedine zadatke, no nije poanta da sami ucite stringove (to bi trebalo doci tek u 2. semestru), nego da sto bolje uvjezbate petlje. Kao sto sam vec rekao: toliki trud zbog jednog ili dva boda nema smisla; zadace sluze upravo tome da uvjezbate gradivo i da vidite gdje eventualno "zapinjete", a ne da "žvačete" gradivo unaprijed.
Inace, duljinu broja trivijalno izracunas pomocu izraza (int)floor(log10(n*n)) + 1, kako sam i hintirao prije (jasno, treba znati ukljuciti matematicke funkcije), ali - ponavljam - to nije svrha tog zadatka.
Btw, tvoje rjesenje sa stringom ima dva problema:
1. Ovisi o N za koji bas i nije jasno sto je. Njegova vrijednost ovisi o arhitekturi na kojoj se program compilira i izvodi.
2. Podsjecam na napomenu: "U svim zadacima je zabranjeno korištenje nizova i funkcija iz math.h libraryja." nije dozvoljeno koristiti niti stringove niti ovu moju pametariju s matematickim funkcijama.
"Pametni" printf() "prolazi", ali preskace ucenje petlji za "ukrasene" ispise (po uzoru na zavrsne zadatke iz poglavlja "Petlje" u vjezbama).
_________________ 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.
|
|
[Vrh] |
|
Bubba Forumaš s poteškoćama u pisanju
Pridružen/a: 17. 11. 2006. (18:09:12) Postovi: (53)16
Spol:
|
Postano: 11:23 sub, 6. 1. 2007 Naslov: |
|
|
[quote="vsego"]Always the same problem... :roll:[/quote]
Problem? Gdje je tu problem?
[quote]Naravno da postoje "nadobudni" nacini za rijesiti pojedine zadatke,[/quote]
Ja ne vidim nista "nadobudno" u ovome sto sam napisao, ali dobro...
[quote]no nije poanta da sami ucite stringove (to bi trebalo doci tek u 2. semestru), nego da sto bolje uvjezbate petlje. :|[/quote]
Ne da je bitno, ali ja sam svoje naucio davno, no u svakom slucaju, poanta uopce nije bila da se ista uci, nego samo da se pragmaticno olaksa ispis u tablici, sto nema direktne veze sa samim rjesenjem. Tko je bio sposoban rijesiti zadatak, ovo mu moze doci samo kao zgodan bonus da mu tablica izgleda ljepse za veliki n. Tko nije, ovo mu ionako nema previse koristi anyway...
[quote]Kao sto sam vec rekao: toliki trud zbog jednog ili dva boda nema smisla; zadace sluze upravo tome da uvjezbate gradivo i da vidite gdje eventualno "zapinjete", a ne da "žvačete" gradivo unaprijed. :?[/quote]
Zaista, trud, uf. Tri i pol reda i dvije funkcije, huh...
[quote]Inace, duljinu broja [latex]n^2[/latex] trivijalno izracunas pomocu izraza [tt](int)floor(log10(n*n)) + 1[/tt], kako sam i hintirao prije (jasno, treba znati ukljuciti matematicke funkcije), ali - ponavljam - [b]to nije svrha tog zadatka[/b]. :tso:[/quote]
Naravno da nije, ali je zgodna digresija, u kojoj sam, recimo, ja osobno naucio nesto novo, zgodno i korisno.
[quote]Btw, tvoje rjesenje sa stringom ima dva problema:
1. Ovisi o [tt]N[/tt] za koji bas i nije jasno sto je. :? Njegova vrijednost ovisi o arhitekturi na kojoj se program compilira i izvodi. :?[/quote]
Opet problemi? Hmpf, da vidimo...
N je proizvoljan broj, koji "ovisi" o tome koliko si jutara spreman rezervirati za polje. No da ne kompliciramo, ako bi isli s unsigned int, onda bi ovaj N bio 10.
[quote]2. Podsjecam na napomenu: "U svim zadacima je zabranjeno korištenje nizova i funkcija iz math.h libraryja." :arrow: nije dozvoljeno koristiti niti stringove niti ovu moju pametariju s matematickim funkcijama. :P[/quote]
Ah, lijepi nas 'rvacki. Niz == string, silly me... Doduse, tvojem "problemu" je lakse doskocit nego mojemu; napraviti primitivnu funkciju koja racuna logaritme je trivijalno. OTOH, koristenje stringova jest najjednostavniji nacin za dobivanje zeljenog rezultata, ali svakako ne i jedini. Ali u slucaju zabrane istih, slazem se da jednostavno nije vrijedno "muciti" se s time.
vsego (napisa): | Always the same problem... |
Problem? Gdje je tu problem?
Citat: | Naravno da postoje "nadobudni" nacini za rijesiti pojedine zadatke, |
Ja ne vidim nista "nadobudno" u ovome sto sam napisao, ali dobro...
Citat: | no nije poanta da sami ucite stringove (to bi trebalo doci tek u 2. semestru), nego da sto bolje uvjezbate petlje. |
Ne da je bitno, ali ja sam svoje naucio davno, no u svakom slucaju, poanta uopce nije bila da se ista uci, nego samo da se pragmaticno olaksa ispis u tablici, sto nema direktne veze sa samim rjesenjem. Tko je bio sposoban rijesiti zadatak, ovo mu moze doci samo kao zgodan bonus da mu tablica izgleda ljepse za veliki n. Tko nije, ovo mu ionako nema previse koristi anyway...
Citat: | Kao sto sam vec rekao: toliki trud zbog jednog ili dva boda nema smisla; zadace sluze upravo tome da uvjezbate gradivo i da vidite gdje eventualno "zapinjete", a ne da "žvačete" gradivo unaprijed. |
Zaista, trud, uf. Tri i pol reda i dvije funkcije, huh...
Citat: | Inace, duljinu broja trivijalno izracunas pomocu izraza (int)floor(log10(n*n)) + 1, kako sam i hintirao prije (jasno, treba znati ukljuciti matematicke funkcije), ali - ponavljam - to nije svrha tog zadatka. |
Naravno da nije, ali je zgodna digresija, u kojoj sam, recimo, ja osobno naucio nesto novo, zgodno i korisno.
Citat: | Btw, tvoje rjesenje sa stringom ima dva problema:
1. Ovisi o N za koji bas i nije jasno sto je. Njegova vrijednost ovisi o arhitekturi na kojoj se program compilira i izvodi. |
Opet problemi? Hmpf, da vidimo...
N je proizvoljan broj, koji "ovisi" o tome koliko si jutara spreman rezervirati za polje. No da ne kompliciramo, ako bi isli s unsigned int, onda bi ovaj N bio 10.
Citat: | 2. Podsjecam na napomenu: "U svim zadacima je zabranjeno korištenje nizova i funkcija iz math.h libraryja." nije dozvoljeno koristiti niti stringove niti ovu moju pametariju s matematickim funkcijama. |
Ah, lijepi nas 'rvacki. Niz == string, silly me... Doduse, tvojem "problemu" je lakse doskocit nego mojemu; napraviti primitivnu funkciju koja racuna logaritme je trivijalno. OTOH, koristenje stringova jest najjednostavniji nacin za dobivanje zeljenog rezultata, ali svakako ne i jedini. Ali u slucaju zabrane istih, slazem se da jednostavno nije vrijedno "muciti" se s time.
|
|
[Vrh] |
|
vsego Site Admin
Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3560)16
Spol:
Lokacija: /sbin/init
|
Postano: 12:49 sub, 6. 1. 2007 Naslov: |
|
|
[quote="vsego"]N je proizvoljan broj, koji "ovisi" o tome koliko si jutara spreman rezervirati za polje. No da ne kompliciramo, ako bi isli s unsigned int, onda bi ovaj N bio 10.[/quote]
Not good enough: kad netko tako komplicira (a uvodjenje stringova [b]je[/b] kompliciranje), onda se inzistira na korektnosti. :-s Konkretno, N = 10 nije dosta cak niti na 32-bitnoj arhitekturi, jer najveci [tt]unsigned int[/tt] ([latex]2^{32}-1 = 4294967295[/latex]) ima 10 znamenaka, pa ti fali ona jedna za [tt]'\0'[/tt]; ako se program compilira na 64-bitnoj arhitekturi, onda je najveci [tt]unsigned int[/tt] [latex]2^{64}-1 = 18446744073709551615[/latex], na [tt]N[/tt] mora biti barem 21. 8)
No, da stvar bude gora, ocekujemo da je program skroz korektan - i.e. ja se mogu sjetiti i da hocu 128-bitnu ili neku goru arhitekturu. :shock: Postoji nesto sto se zove [tt][url=http://www.acm.uiuc.edu/webmonkeys/book/c_guide/2.5.html]limits.h[/url][/tt], pa se treba snaci pomocu njega (ili nekako drugacije ako znas). 8)
I zato sam na pocetku posta napisao ono "problem": rijec je o rjesenju koje [b]izgleda[/b] elegantno, ali ne ispunjava ucilacku svrhu zadatka, a dosta je naporno za izvesti skroz korektno. ;) A ono "nadobudno" se odnosi na "treba ti gradivo iz iduceg semestra" (vecina ipak ne zna C od prije). :)
P.S. Funkcija koja bi implementirala algoritam u bazi 10 je upravo onaj [tt]while()[/tt] koji cijelo vrijeme ovdje propagiram. ;)
vsego (napisa): | N je proizvoljan broj, koji "ovisi" o tome koliko si jutara spreman rezervirati za polje. No da ne kompliciramo, ako bi isli s unsigned int, onda bi ovaj N bio 10. |
Not good enough: kad netko tako komplicira (a uvodjenje stringova je kompliciranje), onda se inzistira na korektnosti. Konkretno, N = 10 nije dosta cak niti na 32-bitnoj arhitekturi, jer najveci unsigned int () ima 10 znamenaka, pa ti fali ona jedna za '\0'; ako se program compilira na 64-bitnoj arhitekturi, onda je najveci unsigned int , na N mora biti barem 21.
No, da stvar bude gora, ocekujemo da je program skroz korektan - i.e. ja se mogu sjetiti i da hocu 128-bitnu ili neku goru arhitekturu. Postoji nesto sto se zove limits.h, pa se treba snaci pomocu njega (ili nekako drugacije ako znas).
I zato sam na pocetku posta napisao ono "problem": rijec je o rjesenju koje izgleda elegantno, ali ne ispunjava ucilacku svrhu zadatka, a dosta je naporno za izvesti skroz korektno. A ono "nadobudno" se odnosi na "treba ti gradivo iz iduceg semestra" (vecina ipak ne zna C od prije).
P.S. Funkcija koja bi implementirala algoritam u bazi 10 je upravo onaj while() koji cijelo vrijeme ovdje propagiram.
_________________ 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.
|
|
[Vrh] |
|
Bubba Forumaš s poteškoćama u pisanju
Pridružen/a: 17. 11. 2006. (18:09:12) Postovi: (53)16
Spol:
|
Postano: 17:22 sub, 6. 1. 2007 Naslov: |
|
|
[quote="vsego"][quote="vsego"]N je proizvoljan broj, koji "ovisi" o tome koliko si jutara spreman rezervirati za polje. No da ne kompliciramo, ako bi isli s unsigned int, onda bi ovaj N bio 10.[/quote]
Not good enough: kad netko tako komplicira (a uvodjenje stringova [b]je[/b] kompliciranje), onda se inzistira na korektnosti. :-s Konkretno, N = 10 nije dosta cak niti na 32-bitnoj arhitekturi, jer najveci [tt]unsigned int[/tt] ([latex]2^{32}-1 = 4294967295[/latex]) ima 10 znamenaka, pa ti fali ona jedna za [tt]'\0'[/tt]; ako se program compilira na 64-bitnoj arhitekturi, onda je najveci [tt]unsigned int[/tt] [latex]2^{64}-1 = 18446744073709551615[/latex], na [tt]N[/tt] mora biti barem 21. 8)[/quote]
Oh, the drama! A malloc smrdi? Uostalom, polje od, recimo, 100 znakova jamacno ce zadovoljiti i najvece apetite prosjecnog korisnika. Pa kad je vec doslo do 64 bitnih compilera, ne vjerujem da ce itko plakati za tih 100njak byteova (ako je vec doslo dotle da ih staticki alocira), od kojih ce vecina ionako biti procerdana...
[quote]No, da stvar bude gora, ocekujemo da je program skroz korektan - i.e. ja se mogu sjetiti i da hocu 128-bitnu ili neku goru arhitekturu. :shock:[/quote]
Shocking indeed. Sto je to tocno 128 bitna "arhitektura"? Pa jos od pocetka 1997. neki 32-bitni x86 procesori barataju 64 bitnim int mnozenjem, da bi dvije godine kasnije bili sposobno nativno raditi sa 128 bita sirokim integerima, tako da nisam siguran na sto tocno ciljas s ovim "hocu 128-bitnu ili neku goru arhitekturu"... No sve i da hoces, wher's the fuss? Dinamicki alociras memoriju po potrebi i hasta la vista.
[quote]Postoji nesto sto se zove [tt][url=http://www.acm.uiuc.edu/webmonkeys/book/c_guide/2.5.html]limits.h[/url][/tt], pa se treba snaci pomocu njega (ili nekako drugacije ako znas). 8)[/quote]
Limiti ionako postoje da se ruse i stvoreni su samo kao alibij onim dovoljno neinventivnima. Salu na stranu, limits.h u ovom slucaju ima previse dependencyja, ovisnosti o compileru, arhitekturi, C standardu i tako to...
[quote]I zato sam na pocetku posta napisao ono "problem": rijec je o rjesenju koje [b]izgleda[/b] elegantno, ali ne ispunjava ucilacku svrhu zadatka, a dosta je naporno za izvesti skroz korektno. ;)[/quote]
Priznajem, nikada nisam imao didakticko-utilitarnu liniju karaktera. My bad...
[quote]A ono "nadobudno" se odnosi na "treba ti gradivo iz iduceg semestra" (vecina ipak ne zna C od prije). :)[/quote]
Ne znam zasto uporno vuces paralele s tijekom predavanja; zar bi svi trebali slijepo vjerovati i slusati svemu sto se tamo cuje - prosirivanje horizonata je zabranjeno? Jos jednom se pozivam na svoj manjak tolerancije, no ove stvari su obicno srednjoskolsko gradivo ranijih razreda i uopce mi nije jasno zasto se baca takvo velo misticizma na "sve sto nije u planu&programuTM".
vsego (napisa): | vsego (napisa): | N je proizvoljan broj, koji "ovisi" o tome koliko si jutara spreman rezervirati za polje. No da ne kompliciramo, ako bi isli s unsigned int, onda bi ovaj N bio 10. |
Not good enough: kad netko tako komplicira (a uvodjenje stringova je kompliciranje), onda se inzistira na korektnosti. Konkretno, N = 10 nije dosta cak niti na 32-bitnoj arhitekturi, jer najveci unsigned int () ima 10 znamenaka, pa ti fali ona jedna za '\0'; ako se program compilira na 64-bitnoj arhitekturi, onda je najveci unsigned int , na N mora biti barem 21. |
Oh, the drama! A malloc smrdi? Uostalom, polje od, recimo, 100 znakova jamacno ce zadovoljiti i najvece apetite prosjecnog korisnika. Pa kad je vec doslo do 64 bitnih compilera, ne vjerujem da ce itko plakati za tih 100njak byteova (ako je vec doslo dotle da ih staticki alocira), od kojih ce vecina ionako biti procerdana...
Citat: | No, da stvar bude gora, ocekujemo da je program skroz korektan - i.e. ja se mogu sjetiti i da hocu 128-bitnu ili neku goru arhitekturu. |
Shocking indeed. Sto je to tocno 128 bitna "arhitektura"? Pa jos od pocetka 1997. neki 32-bitni x86 procesori barataju 64 bitnim int mnozenjem, da bi dvije godine kasnije bili sposobno nativno raditi sa 128 bita sirokim integerima, tako da nisam siguran na sto tocno ciljas s ovim "hocu 128-bitnu ili neku goru arhitekturu"... No sve i da hoces, wher's the fuss? Dinamicki alociras memoriju po potrebi i hasta la vista.
Citat: | Postoji nesto sto se zove limits.h, pa se treba snaci pomocu njega (ili nekako drugacije ako znas). |
Limiti ionako postoje da se ruse i stvoreni su samo kao alibij onim dovoljno neinventivnima. Salu na stranu, limits.h u ovom slucaju ima previse dependencyja, ovisnosti o compileru, arhitekturi, C standardu i tako to...
Citat: | I zato sam na pocetku posta napisao ono "problem": rijec je o rjesenju koje izgleda elegantno, ali ne ispunjava ucilacku svrhu zadatka, a dosta je naporno za izvesti skroz korektno. |
Priznajem, nikada nisam imao didakticko-utilitarnu liniju karaktera. My bad...
Citat: | A ono "nadobudno" se odnosi na "treba ti gradivo iz iduceg semestra" (vecina ipak ne zna C od prije). |
Ne znam zasto uporno vuces paralele s tijekom predavanja; zar bi svi trebali slijepo vjerovati i slusati svemu sto se tamo cuje - prosirivanje horizonata je zabranjeno? Jos jednom se pozivam na svoj manjak tolerancije, no ove stvari su obicno srednjoskolsko gradivo ranijih razreda i uopce mi nije jasno zasto se baca takvo velo misticizma na "sve sto nije u planu&programuTM".
|
|
[Vrh] |
|
|