Pereiti prie turinio

Gal galėtumėte padėti dėl uždavinio?


Rekomenduojami pranešimai

Sveiki, gal galėtumėt padėti dėl programavimo PASCAL uždavinio?

 

Sąlyga tokia:

 

6. Senelis augina rožes. Jo gėlyną sudaro n lysvių, kuriose auga po m rožių krūmų. Deja, senelis pamiršo nupurkšti rožes skiediniu, apsaugančiu nuo ligų, ir kai kurie krūmai užsikrėtė. Juos teks išrauti. Tai padarius visas gėlynas gali suskilti į mažesnius įvairaus dydžio bei formos rožių krūmynus.

Parašykite: a) sprendimo idėją ir

b) programą, randančią kiek dabar yra atskirų rožių krūmynų.

Pradiniai duomenys įrašyti faile duom.txt. Pirmoje failo eilutėje atskirti tarpu įrašyti du natūralieji skaičiai n ir m (1 ≤ n ≤ m ≤ 100). Likusiose n eilučių įrašyta po m neatskirtų tarpais nulių arba vienetų: 0 rodo, kad šioje vietoje rožių krūmo nėra, 1 – yra.

Rezultatas – rožių krūmynų skaičius – įrašomas į failą rez.txt.

Pradinių duomenų ir rezultatų pavyzdys

 

Pradiniai duomenys Rezultatai Paaiškinimas

3 12

110110110111

100010010111

111011010011 4 11 11 11 111 Matyti, kad yra 4 rožių krūmynai.

1 1 1 111

111 11 1 11

 

Būčiau nepaprastai dėkingas tam, kas padėtų parašyti programą šiam uždaviniui.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Koks pozymis lemia, kad kazkurie tai krumai sudaro krumyna ?

11 11 11 111

1 1 1 111

111 11 1 11

 

Tarkim turim šitą standartinį pavyzdį. Atmetus nuliukus, turime išilgai eiles iš vienetukų. Jas skiria bent vienas tarpas, jei gerai suprantu.

 

* Pavyzdį nusikopijuok į notepad, nes čia nesimato.

Redagavo martixz
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Nu tada pagal sita pavizdi iseina, kad kiekvienoi lysvei yra po 4 krumynus, tada atsakymas turetu but 12, nes per 3 lysves bus po 4 krumynus. Galbut cia reik suskaiciuot kiek kiekvienoi lysvei liks krumynu, bet tada kyla klausimas ar visada bus tiek pat krumynu visose lysvese ?

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Nu tada pagal sita pavizdi iseina, kad kiekvienoi lysvei yra po 4 krumynus, tada atsakymas turetu but 12, nes per 3 lysves bus po 4 krumynus. Galbut cia reik suskaiciuot kiek kiekvienoi lysvei liks krumynu, bet tada kyla klausimas ar visada bus tiek pat krumynu visose lysvese ?

Čia JPM uždavinys. Jie kaip visalaik pateikia tokias "aiškias" sąlygas, bet faktas, kad atsakymas 4. Turbūt reikia žiūrėti kiek lysvių gaunasi išilgai, nes ar gali būti dar kitaip gaunama 4.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Kodo nerašysiu, kadangi jį turi parašyti pats, bet matomai nerandi būdų tai padaryti, todėl pasakysiu :

kurmynas = 0

switch = 0

 

for lysveje array(darze)

for krumas str(lysveje)

if krumas ne= switch

switch=krumas

if switch == 1

krumynas+=1

endif

endif

endfor

endfor

ir taip per visas eilutes. Jokios rimtos sintaksės čia nenaudojau, tad kaip kodą jį vargu ar panaudosi, čia tau tik idėja kaip tai padaryti.

Redagavo nagisa
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Kodo nerašysiu, kadangi jį turi parašyti pats, bet matomai nerandi būdų tai padaryti, todėl pasakysiu :

kurmynas = 0

switch = 0

 

for lysveje array(darze)

for krumas str(lysveje)

if krumas ne= switch

switch=krumas

if switch == 1

krumynas+=1

endif

endif

endfor

endfor

ir taip per visas eilutes. Jokios rimtos sintaksės čia nenaudojau, tad kaip kodą jį vargu ar panaudosi, čia tau tik idėja kaip tai padaryti.

Žinok nieko nesupratau, ne tik sintaksės atžvilgiu, bet ir pačios minties.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Nusistatai du kintamuosius(krumynas, switch) su reikšmėmis lygiomis nuliui.

Į masyvą „darzas“ susigrūdi savo lysves.

['110110110111','100010010111','111011010011']

Darai loop'ą(pavadinkime jį No.1) kiekvienam savo masyvo elementui.

Tame No.1 darome kitą loop'ą, kuris eina per kiekvieną skaičių(krūmą) eilutėje.

Jame patikriname ar krūmas nelygus switch kintamajam.

Jei sąlyga įvykdyta, mes switch prilyginam krūmui (switch = krumas)

Tada patikriname ar switch lygus vienam(sveikas krūmas)

Jei sąlyga įvykdyta, mes pridedame vieną krūmyną prie krumynas kintamojo.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Nusistatai du kintamuosius(krumynas, switch) su reikšmėmis lygiomis nuliui.

Į masyvą „darzas“ susigrūdi savo lysves.

['110110110111','100010010111','111011010011']

Darai loop'ą(pavadinkime jį No.1) kiekvienam savo masyvo elementui.

Tame No.1 darome kitą loop'ą, kuris eina per kiekvieną skaičių(krūmą) eilutėje.

Jame patikriname ar krūmas nelygus switch kintamajam.

Jei sąlyga įvykdyta, mes switch prilyginam krūmui (switch = krumas)

Tada patikriname ar switch lygus vienam(sveikas krūmas)

Jei sąlyga įvykdyta, mes pridedame vieną krūmyną prie krumynas kintamojo.

Na dabar gal šiek tiek aiškiau, bet ne iki galo. Turbūt tu orientuojiesi kitomis programavimo kalbomis. Beje, skyriaus pavadinimas, kuriame yra šis uždavinys, yra Rekursija. Vargu ar išeis čia ją kur nors panaudot, bet apskritai būčiau laimingas, kad ir be jos pavyktų padaryt.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Na dabar gal šiek tiek aiškiau, bet ne iki galo. Turbūt tu orientuojiesi kitomis programavimo kalbomis. Beje, skyriaus pavadinimas, kuriame yra šis uždavinys, yra Rekursija. Vargu ar išeis čia ją kur nors panaudot, bet apskritai būčiau laimingas, kad ir be jos pavyktų padaryt.

 

Šiaip jei 1-ukas liečiasi su kitu vienetuku eilutėje arba stulpelyje, tai sudaromas krūmynas. Pažiūrėk į pvz, ten aiškiai matosi.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Uždavinį reikia atlikti naudojant rekursiją. Taigi aš išsprendžiau naudodamas labirinto principą. Tikrini visus duomenis iš eilės, jai randi "1", tada ieškai visų besiliečiančių "1" ir per kiekvieną pereidamas verti juos į "0" (kad daugiau nebetikrintų) ir kai jau niekur nebesiliečia prie tos krūvos ats := ats +1; ir ieškai toliau kur liko kokia krūva besiliečiančių vienetukų. Simple as that.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Ilgai galvojau apie panašų uždavinį ir man krito į akis keli atvejai

 

1)

1 1 1 1 1 1

1 1 0 0 0 0

1 1 0 0 0 0

 

Šiuo atveju matys dvi krūvas

 

2)

0 0 0 0 1 1

0 0 0 1 1 0

0 0 1 1 0 0

0 1 1 0 0 0

1 1 0 0 0 0

 

O šiuo atveju penkio krūvos.

 

Abejuose variantuose atsakymas yra vienetas :] Tad klysti

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ą...