[ peromalosutra @ 17.07.2005. 23:24 ] @
Vidim da se nista ne desava na ovom dijelu foruma, pa reko' da malo pokrenem stvari sa mrtve tacke. Zanima me rjesenje sledeceg zadatka: Dat je beskonacan niz cifara (123456789101112...), odrediti n-tu cifru niza. Evo kako sam ja to rjesio (tacnije ovaj kod jos ne radi, ali mislim da sm koncept rjesenja dobro zamislio). Medjutim iako sam izbjegao koristenje niza, ipak je moj program teoretski ogranicen na maxlongint, jer je to max vrijednost brojaca. Da li bi se to priznalo na takmicenju? Code: program pas; uses wincrt; var br,cif,n,temp,vre:longint; function Br_cifara (n:integer):integer; var s:string; begin str (n,s); Br_cifara:=length(s); end; function djelilac (n:integer):integer; var i,st:integer; begin st:=1; for i:=0 to n-2 do st:=st*10; djelilac:=st; end; begin cif:=0; br:=0; vre:=0; write ('n='); {podaci se za sada ucitavaju sa tastature} readln (n); while cif<n do {radi dok ne dodjes do trazene cifre} begin inc(br,1); {povecaj pod-broj* za 1} temp:=br; repeat inc(cif,1); vre:=temp div djelilac(br_cifara(temp)); {vre pamti vrijednost za cifru cif} temp:=temp div 10; {omogucuje izracunavanje sledece cifre pod-broja} until temp=0; end; write ('vre=',vre); end. *pod-broj je broj 1..beskonacno ciji niz zapravo cini zadani beskonacni broj. Ponovo napominjem da rjesenje jos ne radi, ali koncept rjesenja bi trebao biti ovakav... ili ne? :) |