Peršokti į turinį

Painus algoritmas


Floatas

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 2929 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

Sveiki , norejau paklaust gal zinot kaip reiktu sukurt algoritma siai uzduociai:

 

Ūkininkas prekiauja ekologiškais grikiais, supakuotais po vieną ir po du kilogramus. Kiekvienas pirkėjas perka ne mažiau kaip po 1 kg ir ne daugiau kaip 50 kg grikių. Ūkininkas iš pradžių nori parduoti didesnes pakuotes. Pavyzdžiui, jei pirkėjas perka 5 kg grikių, tai ūkininkas jam duoda 2 pakuotes po 2 kg ir 1 vieno kilogramo pakuotę. Kai 2 kg pakuotės baigiasi, ūkininkas pardavinėja 1 kg pakuotes.

Parenkite programą, kuri apskaičiuotų:

  • kiek 1 kg ir kiek 2 kg grikių pakuočių pardavė ūkininkas;
  • keli pirkėjai nusipirko bent po vieną grikių pakuotę;
  • kiek kilogramų grikių nusipirko paskutinis pirkėjas, gavęs bent vieną grikių pakuotę.

Pradinių duomenų failo grikiai.txt pirmoje eilutėje nurodyta, kiek grikių pakuočių atvežė ūkininkas: n1 (1 <= n1 <= 100) – 1 kg ir n2 (1 <= n2 <= 100) – 2 kg. Antroje failo eilutėje įrašytas pirkėjų skaičius n (1 <= n <= 100). Tolesnėse n eilučių nurodyta, kiek kg grikių pageidauja pirkti kiekvienas pirkėjas.

Rezultatų failo grikiairez.txt:

  • pirmoje eilutėje nurodykite, kiek 1 kg ir kiek 2 kg pakuočių nupirkta (jei kurios nors rūšies pakuočių nėra parduota, rašykite nulį);
  • antroje failo eilutėje pateikite, kelis kilogramus grikių nusipirko paskutinis pirkėjas, dar gavęs bent vieną grikių pakuotę.

grikiai.txt

1 2

2

1

3

 

grikiairez.txt

1 1

2

2

 

Reikalavimai

 

Reikalavimai programai:

  • Pirkėjų pageidavimams atmintinėje laikyti naudokite vienmatį sveikųjų skaičių masyvą.
  • Sukurkite funkciją void, kuri apskaičiuotų, kiek pirkėjų nusipirko bent vieną grikių pakuotę ir kiek kilogramų grikių nusipirko paskutinis pirkėjas, gavęs dar bent vieną pakuotę.

 

Bandziau kurt , sedejau , bet vis nesigauna , ir IF'u pridejau ir WHILE , nesigauna normalus rezultatai...nezinau kaip tinkama tikrinima parasyt..

// Example program
#include <iostream>
#include <string>

#define MAX_PIRKEJU 100

int n1 = 1 , n2 = 2;
int pirkejai = 2;
int pMasyvas[MAX_PIRKEJU][2];
int k1 = 0,k2 = 0,k3 = 0;

using namespace std;

int main()
{
    pMasyvas[0][0] = 1;
    pMasyvas[1][0] = 3;
    pMasyvas[0][1] = 0;
    pMasyvas[1][1] = 0;

    for(int i = 0;i < pirkejai;i++)
    {
        if((n1 || n2) != 0)
        {
            if(pMasyvas[i][0] % 2 == 0)
            {
                if(n2 > 0)
                {
                    while(n2 > 0 && pMasyvas[i][0] % 2 == 0 && pMasyvas[i][0] > 1)
                    {
                        pMasyvas[i][0] -= 2;
                        k2++;
                        pMasyvas[i][1]++;
                        n2--;
                    }
                }
                else if(n1 > 0)
                {
                    while(n1 > 0 && pMasyvas[i][0] % 2 != 0 && pMasyvas[i][0] > 0)
                    {
                        pMasyvas[i][0]--;
                        k1++;
                        pMasyvas[i][1]++;
                        n1--;
                    }
                }
            }
            else
            {
                if(pMasyvas[i][0] > 2)
                {
                    if(n2 > 0)
                    {
                        while(n2 > 0 && pMasyvas[i][0] % 2 == 0 && pMasyvas[i][0] > 1)
                        {
                            pMasyvas[i][0] -= 2;
                            k2++;
                            pMasyvas[i][1]++;
                            n2--;
                        }
                    }
                }
                else if(n1 > 0)
                {
                    while(n1 > 0 && pMasyvas[i][0] % 2 != 0 && pMasyvas[i][0] > 0)
                    {
                        pMasyvas[i][0]--;
                        k1++;
                        pMasyvas[i][1]++;
                        n1--;
                    }
                } 
            }
        }
    }
    
    std::cout << k1 << " " << k2 << std::endl;
    
    for(int i = 0;i < pirkejai;i++)
    {
        if(pMasyvas[i][1] != 0) k3++;
    }
    
    std::cout << k3 << std::endl;
    return 0;
}

cia mano vienas is bandymu pirmiems dvejiems klausimams..


for(int i = 0;i < pirkejai;i++)
    {
        if(n1 > 0 || n2 > 0)
        {
            if(pMasyvas[i][0] % 2 == 0)
            {
                if(n2 > 0)
                {
                    if(pMasyvas[i][0] > 0)
                    {
                        pMasyvas[i][0] -= 2;
                        n2--;
                        pMasyvas[i][1] += 2;
                        k2++;
                    }
                }
            }
            else
            {
                if(n1 > 0)
                {
                    if(pMasyvas[i][0] > 0)
                    {
                       pMasyvas[i][0]--;
                        n1--;
                        pMasyvas[i][1]++;
                        k1++; 
                    } 
                }
            }
        }
    }

antras nevykes bandymas , kur gaunasi loop...kur ir kaip man reik tikrinima normalu padaryt :/

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

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 2929 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ą...