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

C++ pagalba su uždaviniu.


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

pirma susitvarkyk, kad bent jau kompiliuotusi, nes atrodo, kad maigai belekokius mygtukus ir bandai laime. O del klaidu pagrindiniu: pirmam cikle pridejineji A[cn], tai kiekviena karta pridesi 100-aji masyvo elementa, antras ciklas nieko nedaro, kartu ir nesikompiliuoja, vidurki apskaiciuoji du kartus? nu vienu zodziu dar reiktu pamastyti paciam

Nuoroda į komentarą
Dalintis per kitą puslapį

#include <fstream>
#include <iomanip>

int main() {
    std::ifstream skaitymas("Duomenys.txt");

    int mKiekis;
    double x1, x2;
    skaitymas >> mKiekis >> x1 >> x2;


    double vSvoris = 0, aMoliugai[mKiekis], avSvoris = 0;
    int amKiekis = 0;
    for (int i = 0; i < mKiekis; i++) {
        double mSvoris;
        skaitymas >> mSvoris;
        vSvoris += mSvoris;

        if (x1 <= mSvoris && mSvoris <= x2) {
            aMoliugai[amKiekis++] = mSvoris;
            avSvoris += mSvoris;
        }

    }
    skaitymas.close();



    std::ofstream rasymas("Rezultatai.txt");
    rasymas << "Visų moliūgų vidutinis svoris: " << std::fixed << std::setprecision(3) << vSvoris / mKiekis << " kg\n";
    if (amKiekis == 0) {
        rasymas << "Į supirkimo punktą atrinktų moliūgų nėra.";
    } else {
        rasymas << "Į supirkimą atrinkta: " << amKiekis << '\n';
        rasymas << "Vidutinis vieno atrinkto moliūgo svoris: " << avSvoris / amKiekis << " kg\n";
        rasymas << "Atrinktų moliūgų svorių sąrašas:";
        for (int i = 0; i < amKiekis; i++) {
            rasymas << ' ' << aMoliugai[i];
        }
    }
    rasymas.close();
    return 0;
}

Mano sprendimas. Nėra pats efektyviausias, galima kaikuriose vietose optimizuot bet veikia. Pati principą skaitymo bei išrašymo prasme atrodo darai gerai, bet pati duomenų logika yra neegzistuojanti tavo sprendime. Na pavyzdžiui tu sukuri masyvą dydžiu cn, o moliūgo svorį išsaugai į kintantį i, bet pridedi moliugo svorį iš indekso cn, kas yra 100 tavo atvejyje. Tu tikrini reikšmę už masyvo ribų. jeigu turi masyvą dydžiu 100, tavo paskutinis masyvo indeksas bus 99, kadangi tu tikrini masyvo indeksą didesnį nei pats masyvo dydis, programa gauna random reikšmę, nes ji neužtikrina kokias reikšmes tu išgausi už jo dydžio, todėl svorio kintamasis išvis neveiks ir mes milijonines reikšmes (tikriausiai taip ir daro tavo atveju).

Antra, kai tu deklaruoji kintamuosius, kintamasis nebūna automatiškai nustatytas į 0. Taip yra ne visose kalbose (pvž Java visą laiką deklaruojant nustato reikšmę į 0), bet būtent pagal C ir C++ specifikacijas kintamasis turės random reikšmes, kurias tu gali perrašyti į kokią norimą reikšmę, todėl jeigu tu naudosi kintamąjį pvž skaičiuojant svorį ar randant dydį, tu turi jas pirmiausia nustatyti į 0, tai yra antra priežastis kodėl gauni nesąmones savo kode.

Na tai keleta priežasčių kurias greitai pastebėjau. Sėkmės mokantis programavimo :

Nuoroda į komentarą
Dalintis per kitą puslapį

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

Prisijungti prie diskusijos

Palikti atsakymą galite iš karto, o užsiregistruoti vėliau. Jeigu jau turite paskyrą mūsų forume, Prisijunkite.

Svečias
Atsakyti šioje temoje...

×   Įklijuotas tekstas turi teksto formatavimą.   Pašalinti teksto formatavimą

  Galimi tik 75 veidukai.

×   Nuoroda buvo automatiškai įterpta.   Įterpti nuorodą paprastai

×   Jūsų ankstesnis pranešimas buvo atkurtas.   Išvalyti redaktorių

×   Jūs negalite įkelti nuotraukas tiesiogiai.Įkelkite arba įdėkite nuotraukas iš URL.

  • Šiame puslapyje naršo:   0 nariai

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

Skelbimai


×
×
  • Sukurti naują...