Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 7 odgovora
  • 4.239 pregleda

Najnovija ↓

Pretvaranje niza u varijablu 13.04.2005. u 21:13 · pre 262 meseca #1
Pozdrav!
Dugo vas vec nisam nista pitao, pa evo da to malo izmjenim. Dakle, problem je jednostavan: na koji nacin mogu da pretvorim neki niz u jedan od osnovnih tipova varijabli (integer, longint, string)?
Da li postoji posebna naredba kojom se to radi ili se za svaki od ovih tipova mora koristiti posebna procedura. Ja sam napravio jedno koja bi to omogucavala u tipovima koji rade sa brojevima, dakle integer, longint i real (originalno sam ga napisao za integer, ali lako ga je prepraviti):

Code:

program paskal;
uses wincrt;
var i,broj:integer;
niz:array [1..5] of integer;
Begin

Randomize;
for i:=1 to 5 do
begin

repeat                    
niz [i]:=Random (10);
until (niz[1]<4) and (niz[2]<6);   {ovaj dio odredjuje clanove niza}
Writeln ('Niz[',i,']=',niz[i]);    {i nepotreban je ako je niz zadan}
End;

For i:=1 to 5 do
broj:=broj*10+niz[i];

writeln;
writeln ('broj=',broj);
end.


Medjutim sta ako zelim pretvoriti niz u string (koji je sam po sebi niz char-a)?
Hvala!

Re: Pretvaranje niza u varijablu 13.04.2005. u 21:17 · pre 262 meseca #2
i jedna mala ispravka:
Code:

until (niz[1]<4) and (niz[2]<3);
Re: Pretvaranje niza u varijablu 13.04.2005. u 21:26 · pre 262 meseca #3
Pa nece ni tako ispravno da ti radi na Integeru. Sta ako je niz[3]=8?
Re: Pretvaranje niza u varijablu 13.04.2005. u 21:38 · pre 262 meseca #4
Znam, moram da definisem maximalnu vrijednost za svih 5 cifara, ali sam zaboravi do koliko je tacno ono integer ogranicen. Negdje oko 32 hiljade i nesto, ali to nesto uvijek zaboravim!
Re: Pretvaranje niza u varijablu 14.04.2005. u 00:09 · pre 262 meseca #5
Pa to ti je makar lako izracunati. Integer u pascalu je 16 bitni. Pa mu signed varijanta dodje od -2^15 do 2^15-1
Potpis
Don’t do drugs, sleep deprivation is better.
Re: Pretvaranje niza u varijablu 14.04.2005. u 13:42 · pre 262 meseca #6
Dobro, svi ste u pravu, ali ima li neko resenje mog problema? Da li je moguce neki niz pretvoriti u varijablu samo uz pomoc jedne naredbe? Kopao sam po helpu, ali nisam mogao nista slicno da nadjem. Zanima me kako niz char-a pretvoriti u string, da li pomocu naredbe copy, ili kako? (znam da ima naredba pomocu koju se moze u string dodavati novi znak (znaci) i koja bi rjesila moj problem, ali ne znam koja je to naredba).

:(
Re: Pretvaranje niza u varijablu 14.04.2005. u 15:52 · pre 262 meseca #7
Da, postoji procedura koja radi ovo:

Code:
Move(var Source, Dest; Count: Word);


Ona kopira sadrzaj bilo koje promenljive bilo kog tipa u drugu promenljivu koja ne mora da bude istog tipa kao i prva, i kopra Count bajtova. Da bi koristio ovu funkciju, moras dobro znati kako ti je definisan koji tip, u suprotnom ovo nema nikakvog smisla. Konkretno za primer koji si ti naveo, moze da se uradi ali pod uslovom da kao prvi elemenat niza stavis karakter ciji je ASCII kod jednak duzini stringa. Evo ti jedan pimer:


Code:

Var
    Niz : Array [0..255] Of Char;

    x : Integer;
    DuzinaNiza : Integer;
    
    S : String;
    
Begin
    FillChar (Niz, SizeOf (Niz), 0); { brisemo sadrzaj niza  (#0 u sve elemente) }
    
    Randomize;
    DuzinaNiza := Random (255);     
    For X := 1 To DuzinaNiza Do
        Niz [x] := Chr (Random (27) + 65); {Ubacujemo u niz DuzinaNiza random karaktera izmedju 'A' i 'Z' }
    Niz [0] := Chr (DuzinaNiza); { Postavljamo duzinu stringa }
    
    Move (Niz, S, DuzinaNiza); { I na kraju kopiramo }
    
    WriteLn (S);
End.


Nadam se da nema gresaka, pisem iz glave.
Re: Pretvaranje niza u varijablu 14.04.2005. u 22:34 · pre 262 meseca #8
Hvala ti, ja mislim da sam to shvatio, imam jos nekih par nedoumica, ali to cu pokusati da shvatim sam (nije fazon da vas sve pitam, ne bi bilo zabavno!)
:)
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme