Pereiti prie turinio

Rekomenduojami pranešimai

Turiu tokią užduotį, nlb suprantu kaip padaryti, jei kas nusimano gal pasakysit. :)

 

"Klaviatūra įvedamas sveikas skaičius A (logint). Nustatyti ar skaičius turi 1-tukų, 3-tukų, 5-tukų." Kokiu principu rašyt programą? Ta prasme kaip man surast tuos skaičius?

Nuoroda į pranešimą
Dalintis kituose puslapiuose
Turiu tokią užduotį' date=' nlb suprantu kaip padaryti, jei kas nusimano gal pasakysit. :)

 

"Klaviatūra įvedamas sveikas skaičius A (logint). Nustatyti ar skaičius turi 1-tukų, 3-tukų, 5-tukų." Kokiu principu rašyt programą? Ta prasme kaip man surast tuos skaičius?[/quote']

 

ta skaiciu isiskaidik po viena, ir paskui tikrink kiekviena ar lygus 1,3,5 . :wink:

Nuoroda į pranešimą
Dalintis kituose puslapiuose
Turiu tokią užduotį' date=' nlb suprantu kaip padaryti, jei kas nusimano gal pasakysit. :)

 

"Klaviatūra įvedamas sveikas skaičius A (logint). Nustatyti ar skaičius turi 1-tukų, 3-tukų, 5-tukų." Kokiu principu rašyt programą? Ta prasme kaip man surast tuos skaičius?[/quote']

 

ta skaiciu isiskaidik po viena, ir paskui tikrink kiekviena ar lygus 1,3,5 . :wink:

 

Hmm kaip išskaidyt reikėtų?

 

Aš masčiau iš pradžių su char, tipo skaičių kodais, bet išskaidymas būtų gerai, po to su salygos sakiniais parašyčiau. Gali pasakyt kaip išskaidyt?

Nuoroda į pranešimą
Dalintis kituose puslapiuose
Jei dirbi su sveikais skaiciais skaidyk operacija 'mod 10' taip vis gausi paskutini skaiciu' date=' tada ivykdai 'div 10' ir atkerti paskutini skaiciu, zinoma viska tai vykdai cikle kuris sukasi tiek kartu kokio ilgumo yra skaicius, tikiuosi aiskiai parasiau :)[/quote']

 

Neblogai sugalvota, pabandysiu ar išeis, tik kaip dabar mastau, kaip nustatyt, kad ciklas sustotų tada kai patikrins visus skaičius. Ty. kaip padaryt kad suprastų kiek skaičių yra parašyta.

Nuoroda į pranešimą
Dalintis kituose puslapiuose
Jei dirbi su sveikais skaiciais skaidyk operacija 'mod 10' taip vis gausi paskutini skaiciu' date=' tada ivykdai 'div 10' ir atkerti paskutini skaiciu' date=' zinoma viska tai vykdai cikle kuris sukasi tiek kartu kokio ilgumo yra skaicius, tikiuosi aiskiai parasiau :)[/quote'']

 

Neblogai sugalvota, pabandysiu ar išeis, tik kaip dabar mastau, kaip nustatyt, kad ciklas sustotų tada kai patikrins visus skaičius. Ty. kaip padaryt kad suprastų kiek skaičių yra parašyta.

 

tai cikla daryk " while skaicius >= 0 do begin ... end;" ir kaip tau jos visus iskaidis, uzsibaigs pats ciklas.

Nuoroda į pranešimą
Dalintis kituose puslapiuose
Jei dirbi su sveikais skaiciais skaidyk operacija 'mod 10' taip vis gausi paskutini skaiciu' date=' tada ivykdai 'div 10' ir atkerti paskutini skaiciu, zinoma viska tai vykdai cikle kuris sukasi tiek kartu kokio ilgumo yra skaicius, tikiuosi aiskiai parasiau :)[/quote']

 

O dabar pagalvojau, tai jeigu skaidysiu išsiskaidžius gausiu kintamajį, kurį turėsiu vėl tikrint ar jis lygus pateiktiem skaičiam ar ne ir tą kintamajį vistiek reikės aprašyt tai nemanau ar tiktų šis varijantas, nes arba man reikėtų aprašyt belenkiek kintamųjų, nes aš nežinau kokio ilgumo skaičiu kas nors gali įvest arba mastyt kaip kitaip daryt.

Nuoroda į pranešimą
Dalintis kituose puslapiuose
Jei dirbi su sveikais skaiciais skaidyk operacija 'mod 10' taip vis gausi paskutini skaiciu' date=' tada ivykdai 'div 10' ir atkerti paskutini skaiciu' date=' zinoma viska tai vykdai cikle kuris sukasi tiek kartu kokio ilgumo yra skaicius, tikiuosi aiskiai parasiau :)[/quote'']

 

Neblogai sugalvota, pabandysiu ar išeis, tik kaip dabar mastau, kaip nustatyt, kad ciklas sustotų tada kai patikrins visus skaičius. Ty. kaip padaryt kad suprastų kiek skaičių yra parašyta.

 

:) "neblogai sugalvota" :P tai bemaz vienintelis imanomas budas is sveiko skaiciaus isgauti skaitmenis, nekonvertuojant jo i kitus formatus.

 

sprendimas:

 

skaicius := 12345;

n1 := 0;

n3 := 0;

n5 := 0;

while skaicius > 0 do begin

skaitmuo := skaicius mod 10;

if skaitmuo = 1 then n1 := n1 + 1

else if skaitmuo = 3 then n3 := n3 + 1

else if skaitmuo = 5 then n5 := n5 + 1;

skaicius := skaicius div 10;

end;

 

Po ciklo n1 bus kiek 1-etuku, n3 bus kiek 3-etuku, n5 bus kiek 5-uku.

 

Tik nepadaryk klaidos kuria pasiule:) butinai turi buti > 0. nes jei bus >= 0, tai gausi amzina cikla :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose
Jei dirbi su sveikais skaiciais skaidyk operacija 'mod 10' taip vis gausi paskutini skaiciu' date=' tada ivykdai 'div 10' ir atkerti paskutini skaiciu' date=' zinoma viska tai vykdai cikle kuris sukasi tiek kartu kokio ilgumo yra skaicius' date=' tikiuosi aiskiai parasiau :)[/quote''']

 

Neblogai sugalvota, pabandysiu ar išeis, tik kaip dabar mastau, kaip nustatyt, kad ciklas sustotų tada kai patikrins visus skaičius. Ty. kaip padaryt kad suprastų kiek skaičių yra parašyta.

 

:) "neblogai sugalvota" :P tai bemaz vienintelis imanomas budas is sveiko skaiciaus isgauti skaitmenis, nekonvertuojant jo i kitus formatus.

 

sprendimas:

 

skaicius := 12345;

n1 := 0;

n3 := 0;

n5 := 0;

while skaicius > 0 do begin

skaitmuo := skaicius mod 10;

if skaitmuo = 1 then n1 := n1 + 1

else if skaitmuo = 3 then n3 := n3 + 1

else if skaitmuo = 5 then n5 := n5 + 1;

skaicius := skaicius div 10;

end;

 

Po ciklo n1 bus kiek 1-etuku, n3 bus kiek 3-etuku, n5 bus kiek 5-uku.

 

Tik nepadaryk klaidos kuria pasiule:) butinai turi buti > 0. nes jei bus >= 0, tai gausi amzina cikla :)

 

Dėkui dEVooX :mrgreen: aš dar naujas programinime, tai nlb dar žinau viską :oops:

Nuoroda į pranešimą
Dalintis kituose puslapiuose
Jei dirbi su sveikais skaiciais skaidyk operacija 'mod 10' taip vis gausi paskutini skaiciu' date=' tada ivykdai 'div 10' ir atkerti paskutini skaiciu' date=' zinoma viska tai vykdai cikle kuris sukasi tiek kartu kokio ilgumo yra skaicius, tikiuosi aiskiai parasiau :)[/quote'']

 

O dabar pagalvojau, tai jeigu skaidysiu išsiskaidžius gausiu kintamajį, kurį turėsiu vėl tikrint ar jis lygus pateiktiem skaičiam ar ne ir tą kintamajį vistiek reikės aprašyt tai nemanau ar tiktų šis varijantas, nes arba man reikėtų aprašyt belenkiek kintamųjų, nes aš nežinau kokio ilgumo skaičiu kas nors gali įvest arba mastyt kaip kitaip daryt.

 

Siaip tik FYI - longint tipas yra 32bit'u sveikas skaicius. Max skaitmenu jis gali tureti 10 (4+ milijardo reiksmiu).

Nuoroda į pranešimą
Dalintis kituose puslapiuose
Jei dirbi su sveikais skaiciais skaidyk operacija 'mod 10' taip vis gausi paskutini skaiciu' date=' tada ivykdai 'div 10' ir atkerti paskutini skaiciu' date=' zinoma viska tai vykdai cikle kuris sukasi tiek kartu kokio ilgumo yra skaicius' date=' tikiuosi aiskiai parasiau :)[/quote''']

 

O dabar pagalvojau, tai jeigu skaidysiu išsiskaidžius gausiu kintamajį, kurį turėsiu vėl tikrint ar jis lygus pateiktiem skaičiam ar ne ir tą kintamajį vistiek reikės aprašyt tai nemanau ar tiktų šis varijantas, nes arba man reikėtų aprašyt belenkiek kintamųjų, nes aš nežinau kokio ilgumo skaičiu kas nors gali įvest arba mastyt kaip kitaip daryt.

 

Siaip tik FYI - longint tipas yra 32bit'u sveikas skaicius. Max skaitmenu jis gali tureti 10 (4+ milijardo reiksmiu).

 

 

Zinok tik is 3 karto persxkaites tavo posta supratau ka norejai pasakyti :) Bet manau tokia problema del kintamuju nera svarbi, nes tikrai neturetu reikalauti, tokio sudetingumo programoje.

Omas patarciau padaryti kad skaicius butu ivedamas, ir apribok to laukelio ilgi iki 10 skaitmenu kaip sake Devoox ir bus achujiena programa. :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Kažką ne taip suvėliau su tuo ciklu ar sąlygos sakiniu, nes jei randa, kad skaičius turi ar 1 ar 3 ar 5 ciklas sustoja, nors ir turėtų testis toliau ir išmest tris atsakymus jei vedi 12345.

 

{ Metodas vykdomas paspaudus mygtuka "Skaiciuoti" }

procedure TForm1.Button2Click(Sender: TObject);

begin

while sk > 0 do begin

skaitmuo := sk mod 10;

if skaitmuo = 1 then StaticText1.Caption := 'Skaicius turi 1-netu'

else if skaitmuo = 3 then StaticText1.Caption := 'Skaicius turi 3-jetu'

else if skaitmuo = 5 then StaticText1.Caption := 'Skaicius turi 5-ketu';

sk := sk div 10;

end;

end;

 

{ Metodas vykdomas paspaudus mygtuka "Baigti" }

procedure TForm1.Button3Click(Sender: TObject);

begin

halt

end;

 

end.

 

Arba tą statictext ne taip parašiau, kad duomenis pateiktų nes pirmą kart jį naudoju :oops:

 

Pataisyta: pabandžiau su memo lauku tai viskas gerai, reiškias nemoku elgtis su statictext lauku, o man reikia jame rezultatus pateikti.

Nuoroda į pranešimą
Dalintis kituose puslapiuose
Kažką ne taip suvėliau su tuo ciklu ar sąlygos sakiniu' date=' nes jei randa, kad skaičius turi ar 1 ar 3 ar 5 ciklas sustoja, nors ir turėtų testis toliau ir išmest tris atsakymus jei vedi 12345.

 

{ Metodas vykdomas paspaudus mygtuka "Skaiciuoti" }

procedure TForm1.Button2Click(Sender: TObject);

begin

while sk > 0 do begin

skaitmuo := sk mod 10;

if skaitmuo = 1 then StaticText1.Caption := 'Skaicius turi 1-netu'

else if skaitmuo = 3 then StaticText1.Caption := 'Skaicius turi 3-jetu'

else if skaitmuo = 5 then StaticText1.Caption := 'Skaicius turi 5-ketu';

sk := sk div 10;

end;

end;

 

{ Metodas vykdomas paspaudus mygtuka "Baigti" }

procedure TForm1.Button3Click(Sender: TObject);

begin

halt

end;

 

end.

 

Arba tą statictext ne taip parašiau, kad duomenis pateiktų nes pirmą kart jį naudoju :oops:

 

[b']Pataisyta:[/b] pabandžiau su memo lauku tai viskas gerai, reiškias nemoku elgtis su statictext lauku, o man reikia jame rezultatus pateikti.

 

 

as jau labai seniai dirbes delphiu, bet manau kad tau reikia atnaujint static lauka, o tu cia tik priskiri reiksme.

Nu zinoma labai neoptimalus atvejis, bet jei niekaip neiseina pasiimk tris boolean kintamuosius, i kai randa vieneta ji padarai true, ir t.t. o paskui IF sakinyje pagala boolean tipus atsirinksi ka atspausdint per viena karta.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

if skaitmuo = 1 then StaticText1 'Skaicius turi 1-netu'

else if skaitmuo = 3 then StaticText1 'Skaicius turi 3-jetu'

else if skaitmuo = 5 then StaticText1 'Skaicius turi 5-ketu';

 

Jeigu bandai rezultatus surašyti į vieną StaticText' date=' tai tau tai neišeina dėl to, kad tiesiog rezultatus užrašo "ant viršaus".

 

Ar užduotis reikalauja, kad rezultatus pateiktum viename StaticText, ar gali naudoti jų kiek nori? Jeigu nėra ribojimo, tai aišku pats paprasčiausias variantas susikurti dar pora StaticText (kad iš viso būtų 3) ir šiektiek pakeisti tavo kodą į:

if skaitmuo = 1 then StaticText1.Caption := 'Skaicius turi 1-netu'

else if skaitmuo = 3 then StaticText2.Caption := 'Skaicius turi 3-jetu'

else if skaitmuo = 5 then StaticText3.Caption := 'Skaicius turi 5-ketu';

 

Jeigu taip ir norėjai daryt, tai padarei nedidelę klaidą - pamiršai skaičiukus ten pakeisti ;]

 

O jeigu yra reikalavimas viską surašyti į vieną StaticText, tada mano pasiūlymas būtų daryti taip:

 

{ Metodas vykdomas paspaudus mygtuka "Skaiciuoti" }

procedure TForm1.Button2Click(Sender: TObject);

var vienetas, trejetas, penketas: boolean;

begin

while sk > 0 do begin

skaitmuo := sk mod 10;

if skaitmuo = 1 then vienetas := true;

else if skaitmuo = 3 then trejetas := true;

else if skaitmuo = 5 then penketas := true;

sk := sk div 10;

end;

 

if ((vienetas = false) and (trejetas = false) and (penketas = false)) then StaticText1.Caption := 'Nerasta nei 1-netų, nei 3-jetų, nei 5-tų'

else begin

StaticText1.Caption := 'Rasta: ';

if vienetas = true then StaticText1.Caption := StaticText1.Caption + '1-netas; ';

if trejetas = true then StaticText1.Caption := StaticText1.Caption + '3-jetas; ';

if penketas = true then StaticText1.Caption := StaticText1.Caption + '5-tas; ';

end;

 

end;

 

 

P.S. Kodo netikrinau, tad gali būti klaidų, bet tikiuosi bent jau idėją kažkokią daviau :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

if skaitmuo = 1 then StaticText1 'Skaicius turi 1-netu'

else if skaitmuo = 3 then StaticText1 'Skaicius turi 3-jetu'

else if skaitmuo = 5 then StaticText1 'Skaicius turi 5-ketu';

 

Jeigu bandai rezultatus surašyti į vieną StaticText' date=' tai tau tai neišeina dėl to, kad tiesiog rezultatus užrašo "ant viršaus".

 

Ar užduotis reikalauja, kad rezultatus pateiktum viename StaticText, ar gali naudoti jų kiek nori? Jeigu nėra ribojimo, tai aišku pats paprasčiausias variantas susikurti dar pora StaticText (kad iš viso būtų 3) ir šiektiek pakeisti tavo kodą į:

if skaitmuo = 1 then StaticText1.Caption := 'Skaicius turi 1-netu'

else if skaitmuo = 3 then StaticText2.Caption := 'Skaicius turi 3-jetu'

else if skaitmuo = 5 then StaticText3.Caption := 'Skaicius turi 5-ketu';

 

Jeigu taip ir norėjai daryt, tai padarei nedidelę klaidą - pamiršai skaičiukus ten pakeisti ;]

 

O jeigu yra reikalavimas viską surašyti į vieną StaticText, tada mano pasiūlymas būtų daryti taip:

 

{ Metodas vykdomas paspaudus mygtuka "Skaiciuoti" }

procedure TForm1.Button2Click(Sender: TObject);

var vienetas, trejetas, penketas: boolean;

begin

while sk > 0 do begin

skaitmuo := sk mod 10;

if skaitmuo = 1 then vienetas := true;

else if skaitmuo = 3 then trejetas := true;

else if skaitmuo = 5 then penketas := true;

sk := sk div 10;

end;

 

if ((vienetas = false) and (trejetas = false) and (penketas = false)) then StaticText1.Caption := 'Nerasta nei 1-netų, nei 3-jetų, nei 5-tų'

else begin

StaticText1.Caption := 'Rasta: ';

if vienetas = true then StaticText1.Caption := StaticText1.Caption + '1-netas; ';

if trejetas = true then StaticText1.Caption := StaticText1.Caption + '3-jetas; ';

if penketas = true then StaticText1.Caption := StaticText1.Caption + '5-tas; ';

end;

 

end;

 

 

P.S. Kodo netikrinau, tad gali būti klaidų, bet tikiuosi bent jau idėją kažkokią daviau :)

 

 

Tai ka as ir pasiuliau :D

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Labai ačiū NuPagady, tavo duotas kodas išsprendė mano vieninteles likusias dvi problemas :D Pirma, dabar viskas veikia su static text, o antra tarkim įvedus 123456123 neberašo, kad rasta 1, 3, 5, 1, 3 dabar jei jau vienas skaitmuo buvo ir jį rado antrą kartą nebekartoja, kad rado :D

 

Tik neesu tikras, kad mokiausi tokį kintamūjų aprašą kaip boolean. Tikiuosi neišpirks kad čia kažkaip per gerai padariau :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Žiauriai reikia pagalbos. Iki 3h šiandienos.

 

Klaviatura ivedami 3 sveiki (logint) skaiciai A, B, C.

Rasti ir memo1 lauke parodyti:

1. Kiekvieno skaiciaus lyginiu skaitmenu kieki (function)

2. Kiekvieno skaiciaus skaitmenu sandauga (procedure)

3. Kiekvieno skaiciaus didziausia skaitmeni (function)

4. Visu skaiciu lyginiu skaitmenu kieki (procedure)

 

Jei kas gali padaryt iki 3h ŠIANDIEN atsilyginsiu

 

Žiauriai reikia!!!

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.

  • Prisijunk prie bendruomenės dabar!

    Uždarbis.lt nariai domisi verslo, IT ir asmeninio tobulėjimo temomis, kartu sprendžia problemas, dalinasi žiniomis ir idėjomis, sutinka būsimus verslo partnerius ir dalyvauja gyvuose susitikimuose.

    Užsiregistruok dabar ir galėsi:

    ✔️ Dalyvauti diskusijose;

    ✔️ Kurti naujas temas;

    ✔️ Rašyti atsakymus;

    ✔️ Vertinti kitų žmonių pranešimus;

    ✔️ Susisiekti su bet kuriuo nariu asmeniškai;

    ✔️ Naudotis tamsia dizaino versija;

    ir dar daugiau.

    Registracija trunka ~30 sek. ir yra visiškai nemokama.

  • Naujausios temos

  • Karštos temos

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