Peršokti į turinį
  • ŽAIDIMAI
  • , ŽAIDIMAI
  • ŽAIDIMAI

C++ KTU uzduotis Saldainiai


Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 2833 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

Recommended Posts

Gal kas nors gali man paaiskintis sita uzduoty nes nlb as su prantu is kur gauna jie toky rezultata nes mano gautas rezultatas yra 18 ir nematau budo gauti 22 kjp parodyta pirmam pavizdy

http://konkursai.if.ktu.lt/index.php/pamokeliu-uzduotys-2/item/87-1-lygis-pam1-2015/4772-saldainiai

 

mano kodas :

#include <iostream>
#include <math.h>
using namespace std;



int main()
{
    int kaina = 1;
    int pinigai = 15;
    int suzk;
    int saldainiai;
    int viso;

    saldainiai = pinigai / kaina;
    suzk = floor(saldainiai / 3);
    if(suzk > 3){
        suzk = 3;
    }
    viso = saldainiai + suzk;
    cout << viso;
    return 0;
}

kjp ir pasakyta uzduoty is kiekvieno saldainio gauni po kupona siuo atveju gali nusipirkti 15 saldainiu ir gauti 15 kuponu , uz 3 kuponus gali gauti viena saldainy tai is 15 cuponu gautum 5 bet yra salyga kuri sako jog uz kuponus gali pirkti max 3 kartus todel siuo atveju ir nusipirksi tuos 3 , ir isviso gaunasi 18 o ne 22 kjp parodyta pavizdiniam rezultate

Nuoroda į komentarą
Dalintis per kitą puslapį

(redaguota)

Žemiau yra sprendimas, daug paprastesnis už tavo :D Nesistenk išrast dviračio ir naudot funkcijų kurių šitoj užduotį nereikia (čia net jokio ifo nėra) :)

tas sprendimo budas visiskai berysio nes jis neatitinka salygos , ir netgu paspaudus vygditi tas pats sprendimas meta klaida :D tai tu nepasakoks kad tureciau ten kazka ziuret :D o tas if tik patikrina jog max yra  3 saldainiai kuriuos gali pirkti uz kuponus nes cuponai yra lugu tiek saldainiu kiek nusipirkai ir visasis atvejais yra daugiau negu 3 o kadangi max yra 3 todel ir uzdejau ta if kad padarytu i tris jeigu virsija tris

Redaguota , nario yahoo5000
Nuoroda į komentarą
Dalintis per kitą puslapį

nu neina gaut cia 22.

18 arba dar imanoma 20

 

Įmanoma, nes užduotyje parašyta kad su kuponais galima pirkti tris kartus, o ne tris maišelius :)

 

tas sprendimo budas visiskai berysio nes jis neatitinka salygos , ir netgu paspaudus vygditi tas pats sprendimas meta klaida  :D tai tu nepasakoks kad tureciau ten kazka ziuret  :D o tas if tik patikrina jog max yra  3 saldainiai kuriuos gali pirkti uz kuponus nes cuponai yra lugu tiek saldainiu kiek nusipirkai ir visasis atvejais yra daugiau negu 3 o kadangi max yra 3 todel ir uzdejau ta if kad padarytu i tris jeigu virsija tris

 

Jokios klaidos, viskas eina, tik atsakymą rašo 20 :D

Redaguota , nario sakiras
Nuoroda į komentarą
Dalintis per kitą puslapį

tai nieko nekeicia kuponu turi 15 , 3 kuponai vienas maiselis max 5 + 15 uz kiekviena pinga kury turejai kadangi kaina 1 ir max 20 kad ir kaip tu ce be ziuretum max yra 20 nebent as kazko nesuprantu ir tu galetum man papasakoti

pirkti gali 3 kartus, o ne 3 maiselius. bandziau as spresti tai man pirmas sprendimas gerai gaunausi, kituose dvejuose rezultatas per 1 per didelis.

 

 

isivaidzuok turi 17 kapeiku, pasiemi 17 maiseliu saldainiu, tada turi 17 kuponu. daba pasiemi uz kuponus 5 maiselius ir lieka 2 kuponai. kadangi pirkai 5 maiselius, tai prisideda 5 kuponai prie likusiu 2, tai isviso turi 7 kuponus ir 22 maiselius.

 

vel eini pirkti 2 maiselius uz kuponus. lieka 1 kuponas ir turi 24 maiselius, kadangi pirkai 2 maiselius, tai kuponai jau 3.

 

na ir trecia karta nusiperki 1 maiseli uz 3 kuponus ir rezultatas gaunasi per didelis :|

Nuoroda į komentarą
Dalintis per kitą puslapį

pirkti gali 3 kartus yra net paryskintas tad manau jog tai ka turejo omeny yra jog gali tik 3 kartus pirkti po viena saldainiu maisely nes kitu atveju nera jokios logikos tam pirkti gali 3 kart

o su ta logika kad gali tik 3 maiselius pirkti rezultato tinkamo tikrai negausi. nes sprendimas paprastas saldainiuMaiseliai = b / a + 3.

Nuoroda į komentarą
Dalintis per kitą puslapį

su toke logika kad yra limitas ir sprendimas gaunasi sudetingisnis , gavau as ta sprendima be problemu tai nepasakok kad sprendimo negausi , o budu jog gali pirkti 3 kartus po betkiek taice tas pats kas jo ir isvis nebutu , nes tokiu atveju ta pazymeta salyga net nedalyvauja kode isviso

ne po bet kiek, o po tiek kiek turi kuponu / 3. paro koda sprendimo

Nuoroda į komentarą
Dalintis per kitą puslapį

tai ka as ir kalbu kad pacioj pradzioj yra pasakyta jog 1 saldainiu maiselis 3 cuponais , ir veliau yra dar pabrezta jog galima pirkti tik 3 kartus , o tavo sprendime tokio dalyko isviso nera tu tiesiog padalini kuponus is 3 o apie ta gali pirkt 3 kartus vapse nieko o jis yra net paryskintas

virsui mano spendimas , o su tais pavyzdiniais spendimais tai jie ir yra pavyzdiniai jie nera teisingi , nes ne pirma uzduoty spendziu ir auskiai matoso jog jie nesutampa su salyga

Nuoroda į komentarą
Dalintis per kitą puslapį

Čia šeip pagal viską turėtų būt, kaip Modestas rašė, nes kitaip prieštarauja tie rezultatai sąlygai. Tai jei būtų +1 ant antro ir trečio rezultato tai viskas būtų gerai. Nes kažkodėl taip išeina, kad ant antro ir trečio rezultato už kuponus nusiperka 2 kartus ir dar lieka 3 kuponai, bet kažkodėl jau nebeperka. O pirmam perka tris kartus jau. Va koks kodas atrodo turėtų čia būt:

#include <iostream>

using namespace std;

int main()
{
    int kaina;
    int kiekTuriEuru;
    int kiekTuriKuponu;
    int saldainiai;
    int kiekKartuPirkoUzKuponus = 0;
    cout << "Iveskite saldainiu maiselio kaina: " << endl;
    cin >> kaina;
    cout << "Iveskite pinigu suma skirta saldainiams pirkti: " << endl;
    cin >> kiekTuriEuru;

    kiekTuriKuponu = kiekTuriEuru / kaina;
    saldainiai = kiekTuriKuponu;

    pradzia:
    kiekKartuPirkoUzKuponus++;
    int atimtiKuponai = kiekTuriKuponu/3;
    saldainiai += atimtiKuponai;
    kiekTuriKuponu -= atimtiKuponai*3;
    kiekTuriKuponu += atimtiKuponai;

    if(kiekTuriKuponu == 3 && kiekKartuPirkoUzKuponus < 3)
    {
        saldainiai++;
        kiekTuriKuponu -=3;
    }
    else if(kiekTuriKuponu > 3 && kiekKartuPirkoUzKuponus < 3)
        goto pradzia;

    cout << saldainiai << endl;
    return 0;
}
Redaguota , nario manogugas
Nuoroda į komentarą
Dalintis per kitą puslapį

 

Čia šeip pagal viską turėtų būt, kaip Modestas rašė, nes kitaip prieštarauja tie rezultatai sąlygai. Tai jei būtų +1 ant antro ir trečio rezultato tai viskas būtų gerai. Nes kažkodėl taip išeina, kad ant antro ir trečio rezultato už kuponus nusiperka 2 kartus ir dar lieka 3 kuponai, bet kažkodėl jau nebeperka. O pirmam perka tris kartus jau. Va koks kodas atrodo turėtų čia būt:

#include <iostream>

using namespace std;

int main()
{
    int kaina;
    int kiekTuriEuru;
    int kiekTuriKuponu;
    int saldainiai;
    int kiekKartuPirkoUzKuponus = 0;
    cout << "Iveskite saldainiu maiselio kaina: " << endl;
    cin >> kaina;
    cout << "Iveskite pinigu suma skirta saldainiams pirkti: " << endl;
    cin >> kiekTuriEuru;

    kiekTuriKuponu = kiekTuriEuru / kaina;
    saldainiai = kiekTuriKuponu;

    pradzia:
    kiekKartuPirkoUzKuponus++;
    int atimtiKuponai = kiekTuriKuponu/3;
    saldainiai += atimtiKuponai;
    kiekTuriKuponu -= atimtiKuponai*3;
    kiekTuriKuponu += atimtiKuponai;

    if(kiekTuriKuponu == 3 && kiekKartuPirkoUzKuponus < 3)
    {
        saldainiai++;
        kiekTuriKuponu -=3;
    }
    else if(kiekTuriKuponu > 3 && kiekKartuPirkoUzKuponus < 3)
        goto pradzia;

    cout << saldainiai << endl;
    return 0;
}

kazka panasaus ir as dariau:

int main()
{
	int a, b, saldainiuMaiseliai, kuponai;
	
	cout << "saldainiu maiselio kaina: ";
	cin >> a;
	
	cout << "bapkes skirtos saldainiam: ";
	cin >> b;
	
	// Perkam saldainius
	saldainiuMaiseliai = b / a;
	// Kuponu tiek kiek maiseliu
	kuponai = saldainiuMaiseliai;
	
	// Apsiperkam 3 kartus uz kuponus
	int maiseliaiUzKuponus = 0;
	for(int i=0; i<3; i++){
		maiseliaiUzKuponus += kuponai / 3;			// Pridedam nupirktus maiselius prie kintamojo
		kuponai = (kuponai / 3) + (kuponai % 3);	// kuponai = Nupirktu maiseliu kuponai + like kuponai is pirkimo
	}
	
	cout << saldainiuMaiseliai + maiseliaiUzKuponus << endl;
	
	return 0;
}

nors ir logiskai atrodo, bet rezultatas antram ir treciam sprendimui vistiek blogas gaunasi

Nuoroda į komentarą
Dalintis per kitą puslapį

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 2833 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

Svečias
Ši tema yra užrakinta.
  • Šiame puslapyje naršo:   0 nariai

    • Nėra registruotų narių peržiūrinčių šį forumą.

Skelbimai


×
×
  • Sukurti naują...