Pereiti prie turinio

masyvai funkcijose ir procedurose


Rekomenduojami pranešimai

Sveiki, turiu parasyti programa, kuri panaudodama visus duoto skaiciaus skaitmenis gautu maziausia galima skaiciu. Pvz.: is 4021 gautu 1024 (0124 - netinka).

 

suskaidyti i skaitmenis galiu div ir mod, bet kaip suvaryti tai i masyva ir dar funkcijoje? Kaip antra funkcija ar procedura kad is tu skaitmenu skaiciu gautu ir isvestu nezinau.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Kaip suprantu tau reikėtų maždaug to: pirmiausia suskaičiuoti visus skaitmenis, tada kiekvieną skaitmenį į masyvą, tada iš to masyvo randi patį mažiausią skaičių tačiau >0, tada patį mažiausią ir pan... To reikia?

 

Butent to ir reikia :) bet kaip tai padaryti nezinau. I skaitmenis kaip suprantu reikia su mod ir div suskirstyti, o ka toliau? :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

function skaitmen(a:longint):integer;
     var skaitmenys:array[1..30] of integer;
         k,i:integer;
     begin
      repeat
      i:=a mod 10;
      a:=a div 10;
      skaitmenys[k]:=i;
      if min>skaitmenys[k] then min:=skaitmenys[k];
      k:=k+1;
     until a=0;

 

 

taip galima surasyti i masyva? kaip nuli atmesti, randan maziausia skaiciu ir kaip isvesti i ekrana maziausia skaiciu is skaitmenu ?

negi niekas nepades?

Redagavo Radicon
Nuoroda į pranešimą
Dalintis kituose puslapiuose

1) Sudedi visus skaitmenis į masyvą.

2) Iteruoji per masyvą ir ieškai mažiausios reikšmės (pirmąjį kartą praleidi 0) ir mažiausią reikšmę dedi į kitą masyvą (ar spausdini, ar dedi į kažkokį integer, kur daugini jau iš 10^X kiek reikia). Tą skaitmenį masyve pakeiti į kokį nors nereiškiantį nieko (kad antrą kartą iteruojant masyvą, jau nebūtų prasmės jame - pvz, -1).

3) Išspausdini gautą reikšmę.

 

Sėkmės!

Nuoroda į pranešimą
Dalintis kituose puslapiuose

1) Sudedi visus skaitmenis į masyvą.

2) Iteruoji per masyvą ir ieškai mažiausios reikšmės (pirmąjį kartą praleidi 0) ir mažiausią reikšmę dedi į kitą masyvą (ar spausdini, ar dedi į kažkokį integer, kur daugini jau iš 10^X kiek reikia). Tą skaitmenį masyve pakeiti į kokį nors nereiškiantį nieko (kad antrą kartą iteruojant masyvą, jau nebūtų prasmės jame - pvz, -1).

3) Išspausdini gautą reikšmę.

 

Sėkmės!

Tai tas kodas, kuri parasiau, netinkamas?

Nuoroda į pranešimą
Dalintis kituose puslapiuose

program programa;

const M=10;
type mas = array[1..M] of byte;

function skaidyt(a:qword):mas;
var i:byte;
   b:mas;
begin
i:=0;
while a>0 do
   begin
   i+=1;
   b[i]:=a mod 10;
   a := a div 10;
   end;
while i<M do
   begin
   i+=1;
   b[i]:=0;
   end;
skaidyt:=b;
end;

function k(a:mas):byte;
var i, t:byte;
begin
t:= M;
while a[t] = 0 do
   t-=1;
k:=t;
end;

procedure surusiuoti(var a:mas);
var i, j,
   t,
   laik:byte;
begin
t:= k(a);
for i:=1 to t-1 do
for j:=2 to t do
   if a[j-1]<a[j] then
       begin
       laik:=a[j-1];
       a[j-1]:=a[j];
       a[j]:=laik;
       end;
i:=t;
while a[i] = 0 do i-=1;
if i<>t then
   begin
   laik:=a[t];
   a[t]:=a[i];
   a[i]:=laik;
   end;
end;

procedure spausdint(a:mas);
var i:byte;
begin
for i:=k(a) downto 1 do
   write(a[i]);
writeln;
end;

var a:mas;
begin
a:=skaidyt(4021);
surusiuoti(a);
spausdint(a);
 Readln;
end.

Veikia :D

Redagavo audrius^
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

×
×
  • Pasirinkite naujai kuriamo turinio tipą...