Prethodna tema :: Sljedeća tema |
Autor/ica |
Poruka |
krilo Forumaš(ica)
![Forumaš(ica) Forumaš(ica)](dyck.php?id=7149&c=78)
![](images/avatars/6272968855841488fcbf2b.jpg)
Pridružen/a: 01. 11. 2016. (14:45:48) Postovi: (4E)16
Spol: ![žensko žensko](images/gender/female.gif)
|
Postano: 20:55 uto, 13. 12. 2016 Naslov: Zadatak iz praktičnog kolokvija |
|
|
Pozdrav, forumaši :)
Muči me jedna petlja sljedećeg zadatka:
Zadatak 107: Napišite program koji učitava prirodne brojeve n i d, te pomoću zvjezdica “crta” niz kvadrata, čije stranice imaju duljine n,
n−d, . . . , s tim da svaki kvadrat počinje u novom retku. Kvadrate treba ispuniti točkicama.
Primjer (brojeve linija NE treba ispisati): n = 5 i d = 2 (duljine stranica kvadrata su: 5, 3 i 1):
1: *****
2: *. . .*
3: *. . .*
4: *. . .*
5: *****
6: ***
7: *. *
9: ***
10: *
Program je napisan, s kodom niže. Problem je u prvoj "ružnoj" for petlji, kako mi kažu (iako petlje ne hodaju pistama pa mi nije jasno zašto :D ).
Program sasvim lijepo ispisuje pravokutnik ispunjen točkicama kada te petlje nema, a kad je ima, onda ispisuje točkice u beskonačnost.
Ako ima ideja kako taj problem riješiti, slušam :)
[code:1]
int main(void)
{
long unsigned n, tn, d, j=0, k=0;
printf ("Unesi n i d: ");
scanf("%lu%lu", &n, &d);
for (n; n-d>0; n-=d)
{
tn=n;
while (tn>0) /*red samo sa zvjezdicama*/
{printf ("*");
tn--;
}
printf("\n");
tn=n;
for (j=0; j<tn-2; j++) /*redovi s tockicama*/
{
printf ("*");
for (k=0; k<tn-2; k++)
{printf (".");}
printf ("*");
printf ("\n");
}
tn=n; /*while petlja ista kao gornja*/
while (tn>0)
{printf ("*");
tn--;
}
}
return 0;
} [/code:1]
Pozdrav, forumaši
Muči me jedna petlja sljedećeg zadatka:
Zadatak 107: Napišite program koji učitava prirodne brojeve n i d, te pomoću zvjezdica “crta” niz kvadrata, čije stranice imaju duljine n,
n−d, . . . , s tim da svaki kvadrat počinje u novom retku. Kvadrate treba ispuniti točkicama.
Primjer (brojeve linija NE treba ispisati): n = 5 i d = 2 (duljine stranica kvadrata su: 5, 3 i 1):
1: *****
2: *. . .*
3: *. . .*
4: *. . .*
5: *****
6: ***
7: *. *
9: ***
10: *
Program je napisan, s kodom niže. Problem je u prvoj "ružnoj" for petlji, kako mi kažu (iako petlje ne hodaju pistama pa mi nije jasno zašto ).
Program sasvim lijepo ispisuje pravokutnik ispunjen točkicama kada te petlje nema, a kad je ima, onda ispisuje točkice u beskonačnost.
Ako ima ideja kako taj problem riješiti, slušam
Kod: |
int main(void)
{
long unsigned n, tn, d, j=0, k=0;
printf ("Unesi n i d: ");
scanf("%lu%lu", &n, &d);
for (n; n-d>0; n-=d)
{
tn=n;
while (tn>0) /*red samo sa zvjezdicama*/
{printf ("*");
tn--;
}
printf("\n");
tn=n;
for (j=0; j<tn-2; j++) /*redovi s tockicama*/
{
printf ("*");
for (k=0; k<tn-2; k++)
{printf (".");}
printf ("*");
printf ("\n");
}
tn=n; /*while petlja ista kao gornja*/
while (tn>0)
{printf ("*");
tn--;
}
}
return 0;
} |
|
|
[Vrh] |
|
hendrix Forumaš(ica)
![Forumaš(ica) Forumaš(ica)](dyck.php?id=5956&c=146)
Pridružen/a: 03. 09. 2012. (15:59:06) Postovi: (92)16
|
Postano: 22:20 uto, 13. 12. 2016 Naslov: |
|
|
"Greska" je opet izvan algoritma. :D Makni long unsigned (zasto ga uopce koristis?), stavi int i bit ce ok - onda samo jos na kraju te glavne petlje moras dodati prijelaz u novi red (jer ga nemas nakon zadnjeg crtanja zvjezdica).
Problem (long) unsigned brojeva je u tome sto kad jednom odes s "krive" strane nule, brojevi nisu negativni nego "jako veliki" (masem sad rukama da bude cim jasnije, izguglaj doticni tip za detalje ili, jos bolje, stavi pocetnu vrijednost na npr. 10 i zavrti beskonacnu petlju ispisivanja vrijednosti gdje je u svakom koraku smanjis za 1), sto im, u nekom smislu, i sam naziv govori. :D
Ergo, uopce nije stvar u "ruznoj" petlji, iako bi zbog preglednosti bilo bolje da umjesto tog [tt]n[/tt] prije glavne petlje stavis npr. [tt]int i = n[/tt] i onda u petlji smanjujes taj "brojac", a ulazni parametar ostavis netaknutim - u dosta zadataka ces ga ionako morati ispisati na kraju ili tako nesto.
"Greska" je opet izvan algoritma. Makni long unsigned (zasto ga uopce koristis?), stavi int i bit ce ok - onda samo jos na kraju te glavne petlje moras dodati prijelaz u novi red (jer ga nemas nakon zadnjeg crtanja zvjezdica).
Problem (long) unsigned brojeva je u tome sto kad jednom odes s "krive" strane nule, brojevi nisu negativni nego "jako veliki" (masem sad rukama da bude cim jasnije, izguglaj doticni tip za detalje ili, jos bolje, stavi pocetnu vrijednost na npr. 10 i zavrti beskonacnu petlju ispisivanja vrijednosti gdje je u svakom koraku smanjis za 1), sto im, u nekom smislu, i sam naziv govori.
Ergo, uopce nije stvar u "ruznoj" petlji, iako bi zbog preglednosti bilo bolje da umjesto tog n prije glavne petlje stavis npr. int i = n i onda u petlji smanjujes taj "brojac", a ulazni parametar ostavis netaknutim - u dosta zadataka ces ga ionako morati ispisati na kraju ili tako nesto.
|
|
[Vrh] |
|
krilo Forumaš(ica)
![Forumaš(ica) Forumaš(ica)](dyck.php?id=7149&c=78)
![](images/avatars/6272968855841488fcbf2b.jpg)
Pridružen/a: 01. 11. 2016. (14:45:48) Postovi: (4E)16
Spol: ![žensko žensko](images/gender/female.gif)
|
|
[Vrh] |
|
krilo Forumaš(ica)
![Forumaš(ica) Forumaš(ica)](dyck.php?id=7149&c=78)
![](images/avatars/6272968855841488fcbf2b.jpg)
Pridružen/a: 01. 11. 2016. (14:45:48) Postovi: (4E)16
Spol: ![žensko žensko](images/gender/female.gif)
|
Postano: 16:48 čet, 15. 12. 2016 Naslov: |
|
|
Novi problem:
Zadatak 70:
Kazemo da je niz cijelih brojeva a0, a1, . . . , an “fibonaccijevski” ako postoji neki [tex]\alpha[/tex] ∈ Z takav da za sve k, 2 ≤ k ≤ n, vrijedi [tex]a_{k}[/tex] = [tex]a_{k−1}[/tex] + [tex]\alpha[/tex] · [tex]a_{k−2}[/tex]. Pri tome, prva dva clana mogu biti proizvoljni cijeli brojevi.
Napisite program koji ucitava prirodni broj n < 20 koji predstavlja duljinu niza, te niz brojeva a0, a1, . . . , an. Program treba provjeriti je li ucitani niz brojeva fibonaccijevski, te ako jest, odrediti pripadni [tex]\alpha[/tex] i ispisati odgovarajucu poruku.
Na primjer, ako je n = 5, a ucitani niz brojeva je 1, 2, 4, 8, 16, 32, onda program treba ispisati poruku “Ucitani niz brojeva je fibonaccijevski s alfa = 2”. Napomena: uvijek ce biti a0 != 0.
Unatoč svim mogućim prepravcima koda, još uvijek dobivam za testni primjer da niz nije fibonaccijevski. :wall: Provjerila sam stoput jesam li dobro zadala i dodijelila [tex]a_{k-3}, a_{k-2}[/tex] i [tex]a_{k-1}[/tex], ali ne nalazim više grešaka :-k
Ako ima dobrovoljaca i prijedloga, slušam. Prilažem kod:
[code:1]
int main(void)
{
int n, i, ak, ak1, ak2, ak3, prvi, drugi, treci, fib=0, alfa, alfa_konst=0;
printf ("Unesi n kao duljinu niza (<20): ");
scanf ("%d", &n);
printf ("Unesi brojeve: ");
scanf ("%d%d%d", &prvi, &drugi, &treci);
ak3=prvi;
ak2=drugi;
ak1=treci;
for (i=0; i<n-2; i++) /*broj unosa je n-1 jer su prvi, drugi i treci 3 clana + (n-3 ostalih + a0)*/
{
fib=0;
scanf ("%d", &ak);
if (i==0)
{for (alfa=0; alfa<ak; alfa++)
{
if (ak1==((ak2)+(alfa*(ak3))))
{fib=1;
alfa_konst=alfa; /*zadaj alfa_konst samo ako postoji prvi put; ako ne postoji za prva tri clana, ne postoji ni za ostale*/
break;}
}
}
for (alfa=0; alfa<ak; alfa++)
{
if (ak==((ak1)+(alfa*(ak2))))
{fib=1;
break;}
}
if (alfa_konst!=alfa) {fib=0;} /*alfa uvijek mora ostati ista, i to kao pocetni alfa_konst*/
if (fib==0) {break;}
ak1=ak;
ak2=ak1;
}
if (fib==0) {printf ("Niz nije fibonaccijevski.\n");}
else {printf ("Ucitani niz brojeva je fibonaccijevski s alfa = %d", alfa_konst);}
return 0;
}
[/code:1]
Novi problem:
Zadatak 70:
Kazemo da je niz cijelih brojeva a0, a1, . . . , an “fibonaccijevski” ako postoji neki [tex]\alpha[/tex] ∈ Z takav da za sve k, 2 ≤ k ≤ n, vrijedi [tex]a_{k}[/tex] = [tex]a_{k−1}[/tex] + [tex]\alpha[/tex] · [tex]a_{k−2}[/tex]. Pri tome, prva dva clana mogu biti proizvoljni cijeli brojevi.
Napisite program koji ucitava prirodni broj n < 20 koji predstavlja duljinu niza, te niz brojeva a0, a1, . . . , an. Program treba provjeriti je li ucitani niz brojeva fibonaccijevski, te ako jest, odrediti pripadni [tex]\alpha[/tex] i ispisati odgovarajucu poruku.
Na primjer, ako je n = 5, a ucitani niz brojeva je 1, 2, 4, 8, 16, 32, onda program treba ispisati poruku “Ucitani niz brojeva je fibonaccijevski s alfa = 2”. Napomena: uvijek ce biti a0 != 0.
Unatoč svim mogućim prepravcima koda, još uvijek dobivam za testni primjer da niz nije fibonaccijevski. Provjerila sam stoput jesam li dobro zadala i dodijelila [tex]a_{k-3}, a_{k-2}[/tex] i [tex]a_{k-1}[/tex], ali ne nalazim više grešaka
Ako ima dobrovoljaca i prijedloga, slušam. Prilažem kod:
Kod: |
int main(void)
{
int n, i, ak, ak1, ak2, ak3, prvi, drugi, treci, fib=0, alfa, alfa_konst=0;
printf ("Unesi n kao duljinu niza (<20): ");
scanf ("%d", &n);
printf ("Unesi brojeve: ");
scanf ("%d%d%d", &prvi, &drugi, &treci);
ak3=prvi;
ak2=drugi;
ak1=treci;
for (i=0; i<n-2; i++) /*broj unosa je n-1 jer su prvi, drugi i treci 3 clana + (n-3 ostalih + a0)*/
{
fib=0;
scanf ("%d", &ak);
if (i==0)
{for (alfa=0; alfa<ak; alfa++)
{
if (ak1==((ak2)+(alfa*(ak3))))
{fib=1;
alfa_konst=alfa; /*zadaj alfa_konst samo ako postoji prvi put; ako ne postoji za prva tri clana, ne postoji ni za ostale*/
break;}
}
}
for (alfa=0; alfa<ak; alfa++)
{
if (ak==((ak1)+(alfa*(ak2))))
{fib=1;
break;}
}
if (alfa_konst!=alfa) {fib=0;} /*alfa uvijek mora ostati ista, i to kao pocetni alfa_konst*/
if (fib==0) {break;}
ak1=ak;
ak2=ak1;
}
if (fib==0) {printf ("Niz nije fibonaccijevski.\n");}
else {printf ("Ucitani niz brojeva je fibonaccijevski s alfa = %d", alfa_konst);}
return 0;
}
|
|
|
[Vrh] |
|
vsego Site Admin
![Site Admin Site Admin](dyck.php?id=2&c=13664&t=2)
![](images/avatars/3765282244f0c353486cd5.jpg)
Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3560)16
Spol: ![zombi zombi](images/gender/zombie.png)
Lokacija: /sbin/init
|
Postano: 21:33 čet, 15. 12. 2016 Naslov: |
|
|
Mozda da ne kompliciramo: razmisli kako bi izracunala [tex]\alpha[/tex] na ruke?
Imas formulu za prva tri elementa, znas elemente, fali [tex]\alpha[/tex]... jedna jednadzba s jednom nepoznanicom. Dobijes [tex]\alpha[/tex] i samo provjeris valja li za ostatak niza, a ne svaki put racunati za sve moguce i nemoguce vrijednosti (i jos zaboravis negativne, plus ogranicis [tex]\alpha<a_k[/tex] za [tex]k>2[/tex]).
Mozda da ne kompliciramo: razmisli kako bi izracunala [tex]\alpha[/tex] na ruke?
Imas formulu za prva tri elementa, znas elemente, fali [tex]\alpha[/tex]... jedna jednadzba s jednom nepoznanicom. Dobijes [tex]\alpha[/tex] i samo provjeris valja li za ostatak niza, a ne svaki put racunati za sve moguce i nemoguce vrijednosti (i jos zaboravis negativne, plus ogranicis [tex]\alpha<a_k[/tex] za [tex]k>2[/tex]).
_________________ 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](images/smiles/gj_teach.gif)
|
|
[Vrh] |
|
krilo Forumaš(ica)
![Forumaš(ica) Forumaš(ica)](dyck.php?id=7149&c=78)
![](images/avatars/6272968855841488fcbf2b.jpg)
Pridružen/a: 01. 11. 2016. (14:45:48) Postovi: (4E)16
Spol: ![žensko žensko](images/gender/female.gif)
|
|
[Vrh] |
|
krilo Forumaš(ica)
![Forumaš(ica) Forumaš(ica)](dyck.php?id=7149&c=78)
![](images/avatars/6272968855841488fcbf2b.jpg)
Pridružen/a: 01. 11. 2016. (14:45:48) Postovi: (4E)16
Spol: ![žensko žensko](images/gender/female.gif)
|
Postano: 13:41 pet, 6. 1. 2017 Naslov: |
|
|
Pozdrav :)
Imam gotov program za najveću zajedničku mjeru (kod niže) i nije mi jasno zašto *radi* za brojeve 20 i 2.
S tim da je 20/2=10+0, tj. 20%2=0, nema smisla da se ulazi uopće u while petlju, a kamoli pridruži c-u broj 2.
Slušam ideje/rješenja problema, hvala :D
[code:1]
int main(void)
{
int a, b, c, t, ia, ib;
printf ("Unesi a i b: ");
scanf ("%d%d", &a, &b);
if (b>a) {t=a; a=b; b=t;}
if (b<0) b=-b;
if (a<0) a=-a;
ia=a; ib=b;
while (a%b!=0)
{
c=a%b;
a=b;
b=c;
}
printf ("GCD(%d,%d) = %d", ia, ib, c);
return 0; [/code:1]
Pozdrav
Imam gotov program za najveću zajedničku mjeru (kod niže) i nije mi jasno zašto *radi* za brojeve 20 i 2.
S tim da je 20/2=10+0, tj. 20%2=0, nema smisla da se ulazi uopće u while petlju, a kamoli pridruži c-u broj 2.
Slušam ideje/rješenja problema, hvala
Kod: |
int main(void)
{
int a, b, c, t, ia, ib;
printf ("Unesi a i b: ");
scanf ("%d%d", &a, &b);
if (b>a) {t=a; a=b; b=t;}
if (b<0) b=-b;
if (a<0) a=-a;
ia=a; ib=b;
while (a%b!=0)
{
c=a%b;
a=b;
b=c;
}
printf ("GCD(%d,%d) = %d", ia, ib, c);
return 0; |
|
|
[Vrh] |
|
luka_m Forumaš(ica)
![Forumaš(ica) Forumaš(ica)](dyck.php?id=6006&c=98)
Pridružen/a: 07. 10. 2012. (14:09:25) Postovi: (62)16
Lokacija: Zagreb
|
|
[Vrh] |
|
krilo Forumaš(ica)
![Forumaš(ica) Forumaš(ica)](dyck.php?id=7149&c=78)
![](images/avatars/6272968855841488fcbf2b.jpg)
Pridružen/a: 01. 11. 2016. (14:45:48) Postovi: (4E)16
Spol: ![žensko žensko](images/gender/female.gif)
|
|
[Vrh] |
|
luka_m Forumaš(ica)
![Forumaš(ica) Forumaš(ica)](dyck.php?id=6006&c=98)
Pridružen/a: 07. 10. 2012. (14:09:25) Postovi: (62)16
Lokacija: Zagreb
|
|
[Vrh] |
|
vsego Site Admin
![Site Admin Site Admin](dyck.php?id=2&c=13664&t=2)
![](images/avatars/3765282244f0c353486cd5.jpg)
Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3560)16
Spol: ![zombi zombi](images/gender/zombie.png)
Lokacija: /sbin/init
|
Postano: 11:28 sub, 7. 1. 2017 Naslov: |
|
|
Meni pod gcc/Linux izbaci [tt]GCD(20,2) = 0[/tt], a pod Code::Blocks/WinXP (pod VirtualBoxom na Linuxu) izbaci [tt]GCD(20,2) = 4200400[/tt], [tt]GCD(20,2) = 4200320[/tt],...
To sto daje dobar rezultat s jednim compilerom na jednom racunalu za jedan primjer, nije garancija da "radi dobro". Recimo, neki compileri inicijaliziraju varijable na nulu, no to nije standard i na to se ne mozes osloniti.
Dodatno, ako u petlju ubacis nekakav [tt]printf[/tt], vidjet ces da se to nece niti jednom izvrsiti (a mogao bi ti se i rezultat promijeniti), i.e., izvrsavanje ne ulazi u tu petlju.
Zasto je ispalo [tt]c == 2[/tt]? Vrlo je malo vjerojatno da bas tako pogodi, ali ne i nemoguce. Ne vidim bolje objasnjenje od "slucajnost", koliko god nevjerojatno zvucalo.
Ima li neki posebni razlog zasto zelis [tt]c[/tt], a ne [tt]b[/tt]?
Meni pod gcc/Linux izbaci GCD(20,2) = 0, a pod Code::Blocks/WinXP (pod VirtualBoxom na Linuxu) izbaci GCD(20,2) = 4200400, GCD(20,2) = 4200320,...
To sto daje dobar rezultat s jednim compilerom na jednom racunalu za jedan primjer, nije garancija da "radi dobro". Recimo, neki compileri inicijaliziraju varijable na nulu, no to nije standard i na to se ne mozes osloniti.
Dodatno, ako u petlju ubacis nekakav printf, vidjet ces da se to nece niti jednom izvrsiti (a mogao bi ti se i rezultat promijeniti), i.e., izvrsavanje ne ulazi u tu petlju.
Zasto je ispalo c == 2? Vrlo je malo vjerojatno da bas tako pogodi, ali ne i nemoguce. Ne vidim bolje objasnjenje od "slucajnost", koliko god nevjerojatno zvucalo.
Ima li neki posebni razlog zasto zelis c, a ne b?
_________________ 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](images/smiles/gj_teach.gif)
|
|
[Vrh] |
|
krilo Forumaš(ica)
![Forumaš(ica) Forumaš(ica)](dyck.php?id=7149&c=78)
![](images/avatars/6272968855841488fcbf2b.jpg)
Pridružen/a: 01. 11. 2016. (14:45:48) Postovi: (4E)16
Spol: ![žensko žensko](images/gender/female.gif)
|
|
[Vrh] |
|
krilo Forumaš(ica)
![Forumaš(ica) Forumaš(ica)](dyck.php?id=7149&c=78)
![](images/avatars/6272968855841488fcbf2b.jpg)
Pridružen/a: 01. 11. 2016. (14:45:48) Postovi: (4E)16
Spol: ![žensko žensko](images/gender/female.gif)
|
Postano: 13:50 ned, 5. 2. 2017 Naslov: |
|
|
Našao se jedan zadatak iz zadaće da mi nikako nije jasan...
Napisite program koji ucitava prirodne brojeve a i b, te u padajucem poretku ispisuje sve cijele brojeve koji se nalaze izmedju a i b (bez a i b), a u zapisu s bazom 6 imaju samo znamenke između 1 i 3 (ukljucivo i granice). Ispisane brojeve odvojite razmacima. Ako takvih brojeva nema, program ispisuje
poruku "Nema takvih brojeva.". Pazite da tekst bude naveden tocno kako piše (bez navodnika)! Oprez: može biti a<b ili a>b ili a=b!
Kod mi je (u najmanju ruku) šarolik. Da se objasnim ukratko, silne ekstra funkcije (zapisa broja u bazi 6, brojanja znamenaka u bazi 6 i 10) su tu jer se javio problem da je u zapisu broja npr. 6 prvotna funkcija izbacivala samo 1, a zapis je zapravo 10, pa sam morala dodavati određen broj nula na kraj kako bi int main mogao izbacivati brojeve u čijem zapisu nema nule na kraju. (Svjesna sam činjenice da funkcija za zapis broja u bazi 6 (bub6) ne izbacuje dobar zapis, ali znamenke su tu bitne, pa nisam pridavala poretku puno značaja.)
Konkretno, aplikacija kaže da je output krivi za input 911 i 377, ali sam provjeravala svaki treći broj i, zaista, svaki od njih sadrži samo brojeve od 1 do 3. Ne znam u čemu je onda problem :? Hvala unaprijed na odgovoru.
[code:1]
int bzub10(int x)
{
int brojac=0;
while (x>0) {x/=10; brojac++;}
return brojac;
}
int bzub6(int x)
{
int brojac=0;
while (x>0) {x/=6; brojac++;}
return brojac;
}
int bub6 (int x)
{
int broj=0, nbroj=0, znam, i;
int t=x;
if (x<0) t=-x;
while (t>0)
{
broj=broj*10+t%6;
t/=6;
}
if (bzub6(x)!=bzub10(broj))
{
while (bzub6(x)!=bzub10(broj)) broj*=10;
}
return broj;
}
int imazn(x)
{
int vr=1, nx;
nx=bub6(x);
for (nx; nx; nx/=10)
{
if (nx%10!=1 && nx%10!=2 && nx%10!=3) vr=0;
}
return vr;
}
int main(void)
{
int a, b, i, brojac=0;
scanf ("%d%d", &a, &b);
if (b>a) {int temp; temp=a; a=b; b=temp;}
for (i=a-1; i>b; i--)
{
if (imazn(i)) {printf ("%d ", i); brojac=1;}
}
if (brojac==0) printf ("Nema takvih brojeva.");
return 0;
}
[/code:1]
Našao se jedan zadatak iz zadaće da mi nikako nije jasan...
Napisite program koji ucitava prirodne brojeve a i b, te u padajucem poretku ispisuje sve cijele brojeve koji se nalaze izmedju a i b (bez a i b), a u zapisu s bazom 6 imaju samo znamenke između 1 i 3 (ukljucivo i granice). Ispisane brojeve odvojite razmacima. Ako takvih brojeva nema, program ispisuje
poruku "Nema takvih brojeva.". Pazite da tekst bude naveden tocno kako piše (bez navodnika)! Oprez: može biti a<b ili a>b ili a=b!
Kod mi je (u najmanju ruku) šarolik. Da se objasnim ukratko, silne ekstra funkcije (zapisa broja u bazi 6, brojanja znamenaka u bazi 6 i 10) su tu jer se javio problem da je u zapisu broja npr. 6 prvotna funkcija izbacivala samo 1, a zapis je zapravo 10, pa sam morala dodavati određen broj nula na kraj kako bi int main mogao izbacivati brojeve u čijem zapisu nema nule na kraju. (Svjesna sam činjenice da funkcija za zapis broja u bazi 6 (bub6) ne izbacuje dobar zapis, ali znamenke su tu bitne, pa nisam pridavala poretku puno značaja.)
Konkretno, aplikacija kaže da je output krivi za input 911 i 377, ali sam provjeravala svaki treći broj i, zaista, svaki od njih sadrži samo brojeve od 1 do 3. Ne znam u čemu je onda problem Hvala unaprijed na odgovoru.
Kod: |
int bzub10(int x)
{
int brojac=0;
while (x>0) {x/=10; brojac++;}
return brojac;
}
int bzub6(int x)
{
int brojac=0;
while (x>0) {x/=6; brojac++;}
return brojac;
}
int bub6 (int x)
{
int broj=0, nbroj=0, znam, i;
int t=x;
if (x<0) t=-x;
while (t>0)
{
broj=broj*10+t%6;
t/=6;
}
if (bzub6(x)!=bzub10(broj))
{
while (bzub6(x)!=bzub10(broj)) broj*=10;
}
return broj;
}
int imazn(x)
{
int vr=1, nx;
nx=bub6(x);
for (nx; nx; nx/=10)
{
if (nx%10!=1 && nx%10!=2 && nx%10!=3) vr=0;
}
return vr;
}
int main(void)
{
int a, b, i, brojac=0;
scanf ("%d%d", &a, &b);
if (b>a) {int temp; temp=a; a=b; b=temp;}
for (i=a-1; i>b; i--)
{
if (imazn(i)) {printf ("%d ", i); brojac=1;}
}
if (brojac==0) printf ("Nema takvih brojeva.");
return 0;
}
|
|
|
[Vrh] |
|
mdoko Forumaš(ica)
![Forumaš(ica) Forumaš(ica)](dyck.php?id=53&c=1818)
![](images/avatars/56368967941013ad28eb54.jpg)
Pridružen/a: 30. 11. 2002. (22:17:12) Postovi: (71A)16
Spol: ![muško muško](images/gender/male.gif)
Lokacija: Heriot-Watt University, Edinburgh
|
Postano: 14:40 ned, 5. 2. 2017 Naslov: |
|
|
Bez da ulazimo u detalje toga što se sve dogodilo, ajmo domah na očiti problem. Naime, čim kreneš pisati nešto ovakvo [quote="krilo"][code:1]int bub6 (int x)
{
int broj=0, nbroj=0, znam, i;
int t=x;
if (x<0) t=-x;
while (t>0)
{
broj=broj*10+t%6;
t/=6;
}
if (bzub6(x)!=bzub10(broj))
{
while (bzub6(x)!=bzub10(broj)) broj*=10;
}
return broj;
}[/code:1][/quote] odmah ti treba biti jasno da neće biti ništa od toga.
Najbolji način vidiš koliko ovo nema smisla je da probaš objasniti što točno ova funkcija radi.
Znam da ovaj post zvuči agresivno, ali radiš grešku koja se jako često ponavlja i vrlo je bitno da se toga riješiš što prije, a iskustvo mi govori da je najbolji način da shvatiš gdje griješiš ako pokušaš sama objasniti što ova funkcija radi i zašto ti treba.
Molim te, ako imaš vremena, probaj mi dati high-level objašnjenje što ova funkcija radi i zašto ti treba, pa ćemo zajedno analizirati što se tu zapravo događa.
Bez da ulazimo u detalje toga što se sve dogodilo, ajmo domah na očiti problem. Naime, čim kreneš pisati nešto ovakvo krilo (napisa): | Kod: | int bub6 (int x)
{
int broj=0, nbroj=0, znam, i;
int t=x;
if (x<0) t=-x;
while (t>0)
{
broj=broj*10+t%6;
t/=6;
}
if (bzub6(x)!=bzub10(broj))
{
while (bzub6(x)!=bzub10(broj)) broj*=10;
}
return broj;
} |
| odmah ti treba biti jasno da neće biti ništa od toga.
Najbolji način vidiš koliko ovo nema smisla je da probaš objasniti što točno ova funkcija radi.
Znam da ovaj post zvuči agresivno, ali radiš grešku koja se jako često ponavlja i vrlo je bitno da se toga riješiš što prije, a iskustvo mi govori da je najbolji način da shvatiš gdje griješiš ako pokušaš sama objasniti što ova funkcija radi i zašto ti treba.
Molim te, ako imaš vremena, probaj mi dati high-level objašnjenje što ova funkcija radi i zašto ti treba, pa ćemo zajedno analizirati što se tu zapravo događa.
_________________ Extraordinary claims require extraordinary evidence. – Carl Sagan
|
|
[Vrh] |
|
krilo Forumaš(ica)
![Forumaš(ica) Forumaš(ica)](dyck.php?id=7149&c=78)
![](images/avatars/6272968855841488fcbf2b.jpg)
Pridružen/a: 01. 11. 2016. (14:45:48) Postovi: (4E)16
Spol: ![žensko žensko](images/gender/female.gif)
|
Postano: 15:36 ned, 5. 2. 2017 Naslov: |
|
|
Ta funkcija ne radi ništa, rekla bih, za čovjeka smisleno, ali služi svrsi zadatka. Zvuči glupo, ali konstruira obrnuti zapis broja u bazi 6, i dodaje nule na kraju, ako je to potrebno (jer su znamenke zapisa broja u bazi 6 bitne, ne njihov poredak). Treba mi da kasnije za funkciju koja će provjeriti ima li u tom zapisu drugih znamenaka osim 1, 2, 3. Po toj drugoj fukciji imam uvjet za if petlju koja će ispisati sve odgovarajuće brojeve. Otherwise, ne znam što podrazumijevaš pod high-level objašnjenje.
Bila sam napisala kompletnu funkciju koja ispisuje broj u bazi 6 (s pravilnim poretkom znamenaka), ali kada sam naišla na problem s nulom, činilo mi se praktičnije ostati s dobrim znamenkama na jednoj while petlji, nego praviti i drugu pa kompromitirati rješenje (bavim se programiranjem tek 3 mjeseca, pa nisam 100% sigurna da će se ono što kodiram realizirati u program koji će uvijek raditi). Ne zamjeram "agresivnost", razumljivo je. Nemam dovoljno iskustva da procijenim da funkcija ne valja, ako vidim da služi svrsi, ne nalazim problem.
Ta funkcija ne radi ništa, rekla bih, za čovjeka smisleno, ali služi svrsi zadatka. Zvuči glupo, ali konstruira obrnuti zapis broja u bazi 6, i dodaje nule na kraju, ako je to potrebno (jer su znamenke zapisa broja u bazi 6 bitne, ne njihov poredak). Treba mi da kasnije za funkciju koja će provjeriti ima li u tom zapisu drugih znamenaka osim 1, 2, 3. Po toj drugoj fukciji imam uvjet za if petlju koja će ispisati sve odgovarajuće brojeve. Otherwise, ne znam što podrazumijevaš pod high-level objašnjenje.
Bila sam napisala kompletnu funkciju koja ispisuje broj u bazi 6 (s pravilnim poretkom znamenaka), ali kada sam naišla na problem s nulom, činilo mi se praktičnije ostati s dobrim znamenkama na jednoj while petlji, nego praviti i drugu pa kompromitirati rješenje (bavim se programiranjem tek 3 mjeseca, pa nisam 100% sigurna da će se ono što kodiram realizirati u program koji će uvijek raditi). Ne zamjeram "agresivnost", razumljivo je. Nemam dovoljno iskustva da procijenim da funkcija ne valja, ako vidim da služi svrsi, ne nalazim problem.
|
|
[Vrh] |
|
mdoko Forumaš(ica)
![Forumaš(ica) Forumaš(ica)](dyck.php?id=53&c=1818)
![](images/avatars/56368967941013ad28eb54.jpg)
Pridružen/a: 30. 11. 2002. (22:17:12) Postovi: (71A)16
Spol: ![muško muško](images/gender/male.gif)
Lokacija: Heriot-Watt University, Edinburgh
|
Postano: 17:17 ned, 5. 2. 2017 Naslov: |
|
|
[quote="krilo"]Ta funkcija [b]ne radi ništa[/b], rekla bih, za čovjeka [b]smisleno[/b][/quote]
Ovo mora biti crvena lampica! Ako nema smisla, onda nema potrebe za pisanjem takve funkcije. Ključna stvar kod programiranja je natjerati kompjuter da rješava zadatak nizom jednostavnih i [u]smislenih[/u] instrukcija.
BTW, stvari mogu biti smislene samo za ljude [size=3](možda i za neke druge životinje, ali to ovdje nije bitno)[/size]. Za kompjuter nikad ništa nije smisleno. Kompjuter samo radi ono što mu ti kažeš da radi. Prema tome, ako mu ti daš da obavlja zadatak koji nema smisla, onda kompjuter radi besmislice.
[quote]ali služi svrsi zadatka.[/quote]
Meni se čini da služi kompliciranju zadatka. :wink:
[quote][b]Zvuči glupo[/b], ali konstruira obrnuti zapis broja u bazi 6[/quote]
Još jedna crvena lampica. Ako sama sebi zvučiš glupo, to je dobar signal da nešto kompliciraš, ili nešto krivo radiš, ili si oko nečega zbunjena. U svakom slučaju, ako nešto zvuči glupo, onda to uglavnom znači da nisi skroz iskristalizirala algoritam kojim se problem treba riješiti, nego pribjegavaš nekakvim ad-hoc rješenjima.
Sad promisli malo bolje što znači [i]"konstruira zapis broja u bazi 6"[/i].
Jedan broj ima različite zapise u različitm bazama. Ti, za zadani broj [i]x[/i], tražiš neki drugi broj [i]y[/i] koji [b]u bazi 10[/b] ima iste znamenke kao broj [i]x[/i] u bazi 6. Zašto?
Meni se čini da ti na neki način poistovjećuješ broj s njegovim zapisom u bazi 10. Nemoj to raditi. Broj je broj, a zapis je zapis. Bez obzira pisali mi [tex](1024)_{10}[/tex], [tex](10000000000)_2[/tex], [tex](2000)_8[/tex], [tex](400)_{16}[/tex], ili MXXIV, radi se o jednom te istom broju. Baza 10 nije ni po čemu specijalna, osim što ljudi imaju 10 prstiju, pa se nama ta baza jako sviđa.
Na kraju ovog dijela rasprave, promisli što bi se dogodilo da umjesto baze 6 trebaš raditi u bazi npr. 16. Tada ne bi mogla napraviti ovaj svoj manevar, jer ne možeš za baš svaki broj [i]x[/i] pronaći neki broj [i]y[/i] tako da [i]y[/i] u bazi 10 ima iste znamenke kao [i]x[/i] u bazi 16. Je li tako? (Vratit ćemo se na ovu diskusiju malo kasnije.)
[quote]Treba mi da kasnije za funkciju koja će provjeriti ima li u tom zapisu drugih znamenaka osim 1, 2, 3.[/quote]
Ali, ne treba ti! :wink:
Što će ti neki [i]y[/i] koji u bazi 10 ima iste znamenke kao [i]x[/i] u bazi 6, kad već imaš [i]x[/i]? Čim imaš [i]x[/i] odmah možeš vidjeti njegove znamenke u bazi 6 -- to su ostaci pri opetovanom dijeljenju s 6. Je li tako?
[quote]Otherwise, ne znam što podrazumijevaš pod high-level objašnjenje.[/quote]
Točno ovo što si napisala. Svaka čast na koncizno sročenom objašnjenju.
[quote]Bila sam napisala kompletnu funkciju koja ispisuje broj u bazi 6[/quote]
Zašto si uopće išla pisati tu funkciju? Zadatak ne traži da ispis bude u bazi 6. Jednostavno ispiši u bazi 10 i svi sretni i zadovoljni.
[quote]bavim se programiranjem tek 3 mjeseca, pa nisam 100% sigurna da će se ono što kodiram realizirati u program koji će uvijek raditi[/quote]
To je OK. Ja se bavim programiranjem 20 godina :djed:, pa još uvijek nisam 100% siguran da će ono što kodiram rezultirati točnim rješenjem problema na kojem radim. Bitno je da s vremenom dobiješ više samopouzdanja da se prihvatiš kompleksnijih problema, a oni jednostavni prestaju uzrokovati poteškoće.
[quote]Ne zamjeram "agresivnost", razumljivo je.[/quote]
Hvala na razumijevanju.
[quote]Nemam dovoljno iskustva da procijenim da funkcija ne valja[/quote]
Ne brini se, iskustvo dolazi s vremenom, ali sve se na kraju svodi na jednostavnu maksimu: ako "zvuči glupo" ili "ne radi ništa smisleno", onda vrlo vjerojatno ne valja.
[quote]ako vidim da služi svrsi, ne nalazim problem.[/quote]
Kada se o problemu ne promisli detaljno, onda čovjek često sam sebi zakomplicira život.
Ti si ovdje krenula nešto "prebacivati u bazu 6" na način da si tražila broj s istim znamenkama u bazi 10. Zanimljivo je da tvoj pristup radi baza koju promatraš (u konkretnom sučaju 6), nije veća od 10. Za baze veće od 10, tvoj pristup sigurno ne funkcionira iz razloga koji sam spomenuo nešto ranije.
Zar ti nije čudno da tvoj algoritam radi za baze 2, 3, 4, 5, 6, 7, 8, 9 i 10, ali kad naletimo na bazu 11, odjednom imamo problem? :? Pa nije valjda da je zadatak kompliciraniji kada je u pitanju baza 11 umjesto baze 6!
Ono što pokušavam reći je da je problem u tome što si krenula pisati program prije nego što si rješila zadatak!
Pogledaj kako to izgleda ako se ne zapetljaš u "pretvaranje broja u bazu 6":
[code:1]#include <stdio.h>
/* Funkcija koja vraca 1 ako n u bazi 6 ima samo znamenke izmedju 1 i 3. U suprotnom vraca 0.
Funkcija pretpostavlja da je n > 0.
*/
int znamenke_u_bazi_6_samo_izmedju_1_i_3(int n) {
int znamenka;
/* U petlji provjeravamo sve znamenke od n. */
while (n > 0) {
znamenka = n % 6;
/* Ako znameka nije izmedju 1 i 3 mozemo odmah vratiti 0. */
if (znamenka < 1 || znamenka > 3) return 0;
/* Ako je ova znamenka bila ok, onda idemo provjeriti sljedecu. */
n = n / 6;
}
/* Ako smo izvrtili cijelu petlju bez da smo vratili 0, to znaci da su sve znamenke izmedju 1 i 3. */
return 1;
}
int main() {
int a, b, n;
int pronasao = 0; /* ovo cemo postaviti na 1 ako nadjemo neki broj s trazenim svojstvom */
scanf("%d%d", &a, &b);
/* Prvo osiguramo da bude a <= b. */
if (a > b) {
int t = a;
a = b;
b = t;
}
/* Sada ispisemo trazene brojeve. */
for (n = a + 1; n < b; n = n + 1) {
if (znamenke_u_bazi_6_samo_izmedju_1_i_3(n)) {
printf("%d ", n);
pronasao = 1;
}
}
/* Ako nismo pronasli nijedan broj, ispisujemo odgovarajucu poruku. */
if (!pronasao) {
printf("Nema takvih brojeva.");
}
return 0;
}[/code:1]
krilo (napisa): | Ta funkcija ne radi ništa, rekla bih, za čovjeka smisleno |
Ovo mora biti crvena lampica! Ako nema smisla, onda nema potrebe za pisanjem takve funkcije. Ključna stvar kod programiranja je natjerati kompjuter da rješava zadatak nizom jednostavnih i smislenih instrukcija.
BTW, stvari mogu biti smislene samo za ljude (možda i za neke druge životinje, ali to ovdje nije bitno). Za kompjuter nikad ništa nije smisleno. Kompjuter samo radi ono što mu ti kažeš da radi. Prema tome, ako mu ti daš da obavlja zadatak koji nema smisla, onda kompjuter radi besmislice.
Citat: | ali služi svrsi zadatka. |
Meni se čini da služi kompliciranju zadatka.
Citat: | Zvuči glupo, ali konstruira obrnuti zapis broja u bazi 6 |
Još jedna crvena lampica. Ako sama sebi zvučiš glupo, to je dobar signal da nešto kompliciraš, ili nešto krivo radiš, ili si oko nečega zbunjena. U svakom slučaju, ako nešto zvuči glupo, onda to uglavnom znači da nisi skroz iskristalizirala algoritam kojim se problem treba riješiti, nego pribjegavaš nekakvim ad-hoc rješenjima.
Sad promisli malo bolje što znači "konstruira zapis broja u bazi 6".
Jedan broj ima različite zapise u različitm bazama. Ti, za zadani broj x, tražiš neki drugi broj y koji u bazi 10 ima iste znamenke kao broj x u bazi 6. Zašto?
Meni se čini da ti na neki način poistovjećuješ broj s njegovim zapisom u bazi 10. Nemoj to raditi. Broj je broj, a zapis je zapis. Bez obzira pisali mi [tex](1024)_{10}[/tex], [tex](10000000000)_2[/tex], [tex](2000)_8[/tex], [tex](400)_{16}[/tex], ili MXXIV, radi se o jednom te istom broju. Baza 10 nije ni po čemu specijalna, osim što ljudi imaju 10 prstiju, pa se nama ta baza jako sviđa.
Na kraju ovog dijela rasprave, promisli što bi se dogodilo da umjesto baze 6 trebaš raditi u bazi npr. 16. Tada ne bi mogla napraviti ovaj svoj manevar, jer ne možeš za baš svaki broj x pronaći neki broj y tako da y u bazi 10 ima iste znamenke kao x u bazi 16. Je li tako? (Vratit ćemo se na ovu diskusiju malo kasnije.)
Citat: | Treba mi da kasnije za funkciju koja će provjeriti ima li u tom zapisu drugih znamenaka osim 1, 2, 3. |
Ali, ne treba ti!
Što će ti neki y koji u bazi 10 ima iste znamenke kao x u bazi 6, kad već imaš x? Čim imaš x odmah možeš vidjeti njegove znamenke u bazi 6 – to su ostaci pri opetovanom dijeljenju s 6. Je li tako?
Citat: | Otherwise, ne znam što podrazumijevaš pod high-level objašnjenje. |
Točno ovo što si napisala. Svaka čast na koncizno sročenom objašnjenju.
Citat: | Bila sam napisala kompletnu funkciju koja ispisuje broj u bazi 6 |
Zašto si uopće išla pisati tu funkciju? Zadatak ne traži da ispis bude u bazi 6. Jednostavno ispiši u bazi 10 i svi sretni i zadovoljni.
Citat: | bavim se programiranjem tek 3 mjeseca, pa nisam 100% sigurna da će se ono što kodiram realizirati u program koji će uvijek raditi |
To je OK. Ja se bavim programiranjem 20 godina , pa još uvijek nisam 100% siguran da će ono što kodiram rezultirati točnim rješenjem problema na kojem radim. Bitno je da s vremenom dobiješ više samopouzdanja da se prihvatiš kompleksnijih problema, a oni jednostavni prestaju uzrokovati poteškoće.
Citat: | Ne zamjeram "agresivnost", razumljivo je. |
Hvala na razumijevanju.
Citat: | Nemam dovoljno iskustva da procijenim da funkcija ne valja |
Ne brini se, iskustvo dolazi s vremenom, ali sve se na kraju svodi na jednostavnu maksimu: ako "zvuči glupo" ili "ne radi ništa smisleno", onda vrlo vjerojatno ne valja.
Citat: | ako vidim da služi svrsi, ne nalazim problem. |
Kada se o problemu ne promisli detaljno, onda čovjek često sam sebi zakomplicira život.
Ti si ovdje krenula nešto "prebacivati u bazu 6" na način da si tražila broj s istim znamenkama u bazi 10. Zanimljivo je da tvoj pristup radi baza koju promatraš (u konkretnom sučaju 6), nije veća od 10. Za baze veće od 10, tvoj pristup sigurno ne funkcionira iz razloga koji sam spomenuo nešto ranije.
Zar ti nije čudno da tvoj algoritam radi za baze 2, 3, 4, 5, 6, 7, 8, 9 i 10, ali kad naletimo na bazu 11, odjednom imamo problem? Pa nije valjda da je zadatak kompliciraniji kada je u pitanju baza 11 umjesto baze 6!
Ono što pokušavam reći je da je problem u tome što si krenula pisati program prije nego što si rješila zadatak!
Pogledaj kako to izgleda ako se ne zapetljaš u "pretvaranje broja u bazu 6":
Kod: | #include <stdio.h>
/* Funkcija koja vraca 1 ako n u bazi 6 ima samo znamenke izmedju 1 i 3. U suprotnom vraca 0.
Funkcija pretpostavlja da je n > 0.
*/
int znamenke_u_bazi_6_samo_izmedju_1_i_3(int n) {
int znamenka;
/* U petlji provjeravamo sve znamenke od n. */
while (n > 0) {
znamenka = n % 6;
/* Ako znameka nije izmedju 1 i 3 mozemo odmah vratiti 0. */
if (znamenka < 1 || znamenka > 3) return 0;
/* Ako je ova znamenka bila ok, onda idemo provjeriti sljedecu. */
n = n / 6;
}
/* Ako smo izvrtili cijelu petlju bez da smo vratili 0, to znaci da su sve znamenke izmedju 1 i 3. */
return 1;
}
int main() {
int a, b, n;
int pronasao = 0; /* ovo cemo postaviti na 1 ako nadjemo neki broj s trazenim svojstvom */
scanf("%d%d", &a, &b);
/* Prvo osiguramo da bude a <= b. */
if (a > b) {
int t = a;
a = b;
b = t;
}
/* Sada ispisemo trazene brojeve. */
for (n = a + 1; n < b; n = n + 1) {
if (znamenke_u_bazi_6_samo_izmedju_1_i_3(n)) {
printf("%d ", n);
pronasao = 1;
}
}
/* Ako nismo pronasli nijedan broj, ispisujemo odgovarajucu poruku. */
if (!pronasao) {
printf("Nema takvih brojeva.");
}
return 0;
} |
_________________ Extraordinary claims require extraordinary evidence. – Carl Sagan
|
|
[Vrh] |
|
hendrix Forumaš(ica)
![Forumaš(ica) Forumaš(ica)](dyck.php?id=5956&c=146)
Pridružen/a: 03. 09. 2012. (15:59:06) Postovi: (92)16
|
Postano: 20:18 ned, 5. 2. 2017 Naslov: |
|
|
Lijepo je da se, za promjenu, i ovdje nešto rješava. :) Samo bih uputio krilo na [url=http://degiorgi.math.hr/forum/viewtopic.php?t=18497]ovaj[/url] topic, možda dodatno pomogne u shvaćanju zašto ono čarobiranje s bazama treba zaobići (iako je većina već objašnjena u prethodnim postovima).
Učinilo mi se zgodnim jer sam se, čitajući ovu vašu diskusijicu, sjetio posta koji je nastao taman negdje dok sam bio na Prog1, vjerojatno (zapravo, sigurno) zbog gomile sličnih pokušaja :D
Lijepo je da se, za promjenu, i ovdje nešto rješava. Samo bih uputio krilo na ovaj topic, možda dodatno pomogne u shvaćanju zašto ono čarobiranje s bazama treba zaobići (iako je većina već objašnjena u prethodnim postovima).
Učinilo mi se zgodnim jer sam se, čitajući ovu vašu diskusijicu, sjetio posta koji je nastao taman negdje dok sam bio na Prog1, vjerojatno (zapravo, sigurno) zbog gomile sličnih pokušaja
|
|
[Vrh] |
|
mdoko Forumaš(ica)
![Forumaš(ica) Forumaš(ica)](dyck.php?id=53&c=1818)
![](images/avatars/56368967941013ad28eb54.jpg)
Pridružen/a: 30. 11. 2002. (22:17:12) Postovi: (71A)16
Spol: ![muško muško](images/gender/male.gif)
Lokacija: Heriot-Watt University, Edinburgh
|
|
[Vrh] |
|
krilo Forumaš(ica)
![Forumaš(ica) Forumaš(ica)](dyck.php?id=7149&c=78)
![](images/avatars/6272968855841488fcbf2b.jpg)
Pridružen/a: 01. 11. 2016. (14:45:48) Postovi: (4E)16
Spol: ![žensko žensko](images/gender/female.gif)
|
Postano: 23:17 ned, 5. 2. 2017 Naslov: |
|
|
[quote="mdoko"]U svakom slučaju, ako nešto zvuči glupo, onda to uglavnom znači da nisi skroz iskristalizirala algoritam kojim se problem treba riješiti, nego pribjegavaš nekakvim ad-hoc rješenjima. [/quote]
Moram ti priznati da je "algoritmiranje" jedna od najtežih stvari na prvoj godini za ljude (osobno, iz opće sam gimnazije) koji to nikad u životu nisu vidjeli... jednostavno naučiti razmišljati kao komp i pojednostavljivati programe na način na koji ti to radiš je meni prilično fascinantno :idea:
[quote]Meni se čini da ti na neki način poistovjećuješ broj s njegovim zapisom u bazi 10. Nemoj to raditi. [/quote]
Sorry, zapravo znam da nije isto :oops:
[quote]Točno ovo što si napisala. Svaka čast na koncizno sročenom objašnjenju.[/quote] Ne imah džaba 5 iz hrvatskog 8)
[quote]Zašto si uopće išla pisati tu funkciju?[/quote]
Zato što gospodična, otkad je otkrila funkcije, voli sve preko njih raditi jer su nekako... [i]elegantne.[/i] (Sviđa mi se ideja da se u glavnoj funkciji sve može skratiti samo na pozivanje funkcija bez puno žongliranja petljama i sličnim.)
[quote]Ja se bavim programiranjem 20 godina :djed:, pa još uvijek nisam 100% siguran da će ono što kodiram rezultirati točnim rješenjem problema na kojem radim.[/quote] 20? :bigshock: Ajde, nalazim malo utjehe u tome. :pray:
[quote]Zar ti nije čudno da tvoj algoritam radi za baze 2, 3, 4, 5, 6, 7, 8, 9 i 10, ali kad naletimo na bazu 11, odjednom imamo problem? :? [/quote]
Actually, na taj sam problem naletjela na praktičnom kolokviju jer je u testnom primjeru bio najveći prikazivi broj (pa je funkcija pošandrcala), zbog čega sam bila primorana napisati program na način na koji si ti raspisao.
[quote]Lijepo je da se, za promjenu, i ovdje nešto rješava. [/quote]
Pričaj mi o tome... postaje mi neugodno što ja tu (valjda jedina od svoje generacije?) pišem i maltretiram dobre ljude za objašnjenja :oops:
hendrix, hvala na uputi. Bila sam zapravo i prošla ([i]odokativno[/i]) kroz taj dokument, ali sad ga budem dobro proučila. :idea: Hvala obojici :)
Ustvari, još jedno pitanjce: Kolko god moj kod bio bedast, zakaj ne radi? :-k
mdoko (napisa): | U svakom slučaju, ako nešto zvuči glupo, onda to uglavnom znači da nisi skroz iskristalizirala algoritam kojim se problem treba riješiti, nego pribjegavaš nekakvim ad-hoc rješenjima. |
Moram ti priznati da je "algoritmiranje" jedna od najtežih stvari na prvoj godini za ljude (osobno, iz opće sam gimnazije) koji to nikad u životu nisu vidjeli... jednostavno naučiti razmišljati kao komp i pojednostavljivati programe na način na koji ti to radiš je meni prilično fascinantno
Citat: | Meni se čini da ti na neki način poistovjećuješ broj s njegovim zapisom u bazi 10. Nemoj to raditi. |
Sorry, zapravo znam da nije isto
Citat: | Točno ovo što si napisala. Svaka čast na koncizno sročenom objašnjenju. | Ne imah džaba 5 iz hrvatskog
Citat: | Zašto si uopće išla pisati tu funkciju? |
Zato što gospodična, otkad je otkrila funkcije, voli sve preko njih raditi jer su nekako... elegantne. (Sviđa mi se ideja da se u glavnoj funkciji sve može skratiti samo na pozivanje funkcija bez puno žongliranja petljama i sličnim.)
Citat: | Ja se bavim programiranjem 20 godina , pa još uvijek nisam 100% siguran da će ono što kodiram rezultirati točnim rješenjem problema na kojem radim. | 20? Ajde, nalazim malo utjehe u tome.
Citat: | Zar ti nije čudno da tvoj algoritam radi za baze 2, 3, 4, 5, 6, 7, 8, 9 i 10, ali kad naletimo na bazu 11, odjednom imamo problem? |
Actually, na taj sam problem naletjela na praktičnom kolokviju jer je u testnom primjeru bio najveći prikazivi broj (pa je funkcija pošandrcala), zbog čega sam bila primorana napisati program na način na koji si ti raspisao.
Citat: | Lijepo je da se, za promjenu, i ovdje nešto rješava. |
Pričaj mi o tome... postaje mi neugodno što ja tu (valjda jedina od svoje generacije?) pišem i maltretiram dobre ljude za objašnjenja
hendrix, hvala na uputi. Bila sam zapravo i prošla (odokativno) kroz taj dokument, ali sad ga budem dobro proučila. Hvala obojici
Ustvari, još jedno pitanjce: Kolko god moj kod bio bedast, zakaj ne radi?
|
|
[Vrh] |
|
mdoko Forumaš(ica)
![Forumaš(ica) Forumaš(ica)](dyck.php?id=53&c=1818)
![](images/avatars/56368967941013ad28eb54.jpg)
Pridružen/a: 30. 11. 2002. (22:17:12) Postovi: (71A)16
Spol: ![muško muško](images/gender/male.gif)
Lokacija: Heriot-Watt University, Edinburgh
|
Postano: 3:23 pon, 6. 2. 2017 Naslov: |
|
|
[quote="krilo"]Moram ti priznati da je "algoritmiranje" jedna od najtežih stvari na prvoj godini za ljude koji to nikad u životu nisu vidjeli...[/quote]
Znam. Zato i je bitno prisiliti se stvari riješiti kako treba a ne po principu "ma nema veze šta je brljavo, samo neka radi".
[quote](osobno, iz opće sam gimnazije)[/quote]
I ja. Ne brini, nije to nikakav hendikep.
[quote]jednostavno naučiti razmišljati kao komp i pojednostavljivati programe na način na koji ti to radiš je meni prilično fascinantno :idea:[/quote]
Pokušaš li razmišljati kao kompjuter, nećeš daleko dogurati. Zapamti, kompjuteri ne razmišljaju, nego samo rade što im kažeš.
Kad pokušavaš smisliti algoritam, sve što trebaš napraviti je do u detalje osvijestiti proces kojim ti sama rješvaš problem. Jednom kad ti je potpuno jasno kako se problem rješava, onda je to lako pretočiti u program.
[quote][quote]Zašto si uopće išla pisati tu funkciju?[/quote]
Zato što gospodična, otkad je otkrila funkcije, voli sve preko njih raditi jer su nekako... [i]elegantne.[/i] (Sviđa mi se ideja da se u glavnoj funkciji sve može skratiti samo na pozivanje funkcija bez puno žongliranja petljama i sličnim.)[/quote]
E, super. Shvatila si pravi smisao funkcija. Samo tako nastavi. Jedina greška ti je bila što si krenila pisati funkciju koja ti ne treba i onda je sve krenilo nizbrdo.
[quote]Ustvari, još jedno pitanjce: Kolko god moj kod bio bedast, zakaj ne radi? :-k[/quote]
E, sad, kad se napiše prekompliciran program, onda je dosta nezgodno tražiti bugove. Nemam sad baš vremena za igrati se s tim. Sorry.
krilo (napisa): | Moram ti priznati da je "algoritmiranje" jedna od najtežih stvari na prvoj godini za ljude koji to nikad u životu nisu vidjeli... |
Znam. Zato i je bitno prisiliti se stvari riješiti kako treba a ne po principu "ma nema veze šta je brljavo, samo neka radi".
Citat: | (osobno, iz opće sam gimnazije) |
I ja. Ne brini, nije to nikakav hendikep.
Citat: | jednostavno naučiti razmišljati kao komp i pojednostavljivati programe na način na koji ti to radiš je meni prilično fascinantno ![Idea](images/smiles/icon_idea.gif) |
Pokušaš li razmišljati kao kompjuter, nećeš daleko dogurati. Zapamti, kompjuteri ne razmišljaju, nego samo rade što im kažeš.
Kad pokušavaš smisliti algoritam, sve što trebaš napraviti je do u detalje osvijestiti proces kojim ti sama rješvaš problem. Jednom kad ti je potpuno jasno kako se problem rješava, onda je to lako pretočiti u program.
Citat: | Citat: | Zašto si uopće išla pisati tu funkciju? |
Zato što gospodična, otkad je otkrila funkcije, voli sve preko njih raditi jer su nekako... elegantne. (Sviđa mi se ideja da se u glavnoj funkciji sve može skratiti samo na pozivanje funkcija bez puno žongliranja petljama i sličnim.) |
E, super. Shvatila si pravi smisao funkcija. Samo tako nastavi. Jedina greška ti je bila što si krenila pisati funkciju koja ti ne treba i onda je sve krenilo nizbrdo.
Citat: | Ustvari, još jedno pitanjce: Kolko god moj kod bio bedast, zakaj ne radi? ![Think](images/smiles/eusa_think.gif) |
E, sad, kad se napiše prekompliciran program, onda je dosta nezgodno tražiti bugove. Nemam sad baš vremena za igrati se s tim. Sorry.
_________________ Extraordinary claims require extraordinary evidence. – Carl Sagan
|
|
[Vrh] |
|
|