eMatematikas Prisijunk Forumas Egzaminų užduotys ONLINE testai

Architektas suprojektavo salę, kurioje bus n eilių ir k kėdžių. C++


Užduotis:
Architektas suprojektavo salę, kurioje bus n eilių. Pirmoje eilėje stovės k kėdžių, o kiekvienoje kitoje eilėje – 2 kėdėmis daugiau negu prieš tai buvusioje. Parašykite programą, kuri apskaičiuotų, kiek iš viso kėdžių
(s) reikia užsakyti, kad architekto sumanymas būtų įgyvendintas.
Pasitikrinkite. Kai n = 3, o k = 8, turi būti spausdinama s = 30 kėdžių.

#include <iostream>

using namespace std;

int main()
{
    int n;

    cout << "Iveskite kiek saleje bus eiliu: ";
    cin >> n;

    int k;

    cout << "Kiek kedziu bus pirmoje eileje: ";
    cin >> k;

    int s = 0;

    for(int i = 1; i <= n; i++)
    {
        s += k + 2;
    }

    cout << "s = " << s << endl;
    return 0;
}

Atsakymą gaunų teisingą, kai įvedu n = 3, o k = 8, bet, kai pasirenku savo skaičius, n = 4, o k = 8, tai gaunu s = 40, bet pats paskaičiavęs gaunu s = 44. Kur problema?

pakeista prieš 6 m

Pagal tavo kodą, kai k=8 tu pirmiausiai priskiri s reikšmę tokią: s=8+2=10
Paskui: s=10+(8+2)=20, s=20+(8+2)=30 ir galiausiai s=30+(8+2)=40.
Tai kur problema šioje vietoje? Pirma s neįgija pradinės reikšmės, kuri turi būti lygi k=8, o vėliau kaskart tiesiog yra pridedama 10, vietoje to jog būtų pridedama atitinkamai 10, 12 ir 14.

Priskyriau s pradinę reikšmę, tačiau neįsivaizduoju, kaip for ciklo viduje atitinkamai pridėti.

Tavo kintamasis k gali saugoti ne tik pirmoje eilėje esančių kėdžių skaičių, bet kaip ir šachmatų atveju turėjom kintamąjį kuris saugojo ant einamojo langelio dedamų grūdų skaičių, taip čia k būtų kintamasis, kuris saugotų nagrinėjamoje eilėje esančių kėdžių skaičių. Tada cikle prie s kaskart pridėtum k, o k būtų didinama kas 2.

Štai kodas, gal kam nors reikės: #include <iostream>

using namespace std;

int main()
{
    int n;

    cout << "Iveskite kiek saleje bus eiliu: ";
    cin >> n;

    int k;

    cout << "Kiek kedziu bus pirmoje eileje: ";
    cin >> k;

    int s = k;

    for(int i = 1; i < n; i++)
    {
        k += 2;
        s += k;
    }

    cout << "s = " << s << endl;
    return 0;
}

Gal kas žinot, kur rasti tokių panašių uždavinių internete?

Kokių konkrečiai norėtum uždavinių? Ta prasme su for ciklu?

Geriausiai su for ciklu, nes su juo sunkiausiai man, kol kas.

Bus ir su for ir su while ciklu:

1. Nesinaudodami skaičiaus kėlimo laipsniu funkcija parašykite programą, kuri pakeltu norimą natūralų skaičių n tam tikru natūraliu laipsnio rodikliu m. Pavyzdžiui, kai n=3, o m=4, tai rezultate turime gauti 81.

2. Iš n kvadratinių plytelių reikia sudėlioti vienos plytelės storio kvadratus: pirmiausia sudėti didžiausią galimą kvadratą, iš likusių plytelių - vėl didžiausią ir t.t. Parašykite programą, kuri išskaidytų nurodytą plytelių skaičių į dalis, reikalingas kiekvieno kvadrato statybai. Pavyzdžiui, kai n=75, turėtume gauti 64, 9, 1, 1.https://www.ematematikas.lt/upload/images/1514037834_2093.png

3. Martynas labai mėgsta saldainius. Mamos slėptuvėje berniukas rado m saldainių. Pirmą dieną jis suvalgė 1 saldainį, antrą - 2. trečią - 3. Kiekvieną kitą dieną jis suvalgydavo vienu saldainiu daugiau nei prieš tai buvusią dieną. Per kelias dienas d Martynas suvalgys visus saldainius? Paskutinei dienai gali likti mažiau saldainių. Pasitikrinkite: Kai m=11, tai d=5.

4. Pristigo žmogus pinigų ir nuėjo pasiskolinti jų iš kaimyno. Tas sutiko paskolinti, bet paprašė grąžinti juos kitą mėnesį tokia tvarka: pirmą mėnesio dieną - 1 eurą, antrąją - 2 eurus, trečiąją - 4 eurus, t.y. kiekvieną dieną du kartus daugiau nei prieš tai buvusią. Tą dieną, kai skola galės būti padengta, visvien reikės atiduoti visą tos dienos normą. Tai, kas bus atiduota daugiau, ir bus kaimyno palūkanos. Parašykite programą, kuri apskaičiuotų, kiek palūkanų eurais gaus kaimynas už paskolintus n eurų. Pasitikrinkite: Kai n = 11, tai palūkanos=4

5. Suma 1+11+111+...+11...1 turi n dėmenų, kiekvienas dėmuo turi vienetu didesnį skaitmenų skaičių (taigi paskutinis dėmuo sudarytas iš n vienetų). Parašykite programą, kuri apskaičiuotų šią sumą.
Pavyzdžiui, kai n=5 programa turi išvesti: 12345.

6. Parašykite programą šiai sumai paskaičiuoti: 1*3+3*5+5*7+...+(2n-1)(2n+1). Pasitikrinkite: Kai n=3, tai rezultatas: 53

7. Parašykite programą, kuri paskaičiuotų nurodytame intervale [m;n] esančių skaičių:
a) sumą;
b) kvadratų sumą;
c) lyginių skaičių sumą;
d) nelyginių skaičių sumą;
Pasitikrinkite, kai m=10, n=18, tai:
a) 126; b) 1824; c) 70; d) 56.

pakeista prieš 6 m

Užduotis:

1. Nesinaudodami skaičiaus kėlimo laipsniu funkcija parašykite programą, kuri pakeltu norimą natūralų skaičių n tam tikru natūraliu laipsnio rodikliu m. Pavyzdžiui, kai n=3, o m=4, tai rezultate turime gauti 81.

Sprendimas: #include <iostream>

using namespace std;

int main()
{
    int n;
    int m;

    cout << "Iveskite skaiciu, kuri noresite pakelti laipsniu: ";
    cin >> n;

    cout << "Ivekiste laipsni, kuriuo noresite pakelti skaiciu: ";
    cin >> m;

    int x = n;

    for(int i = 1; i < m; i++)
    {
        x *= n;
    }

    cout << x;

    return 0;
}

Užduotis: 3. Martynas labai mėgsta saldainius. Mamos slėptuvėje berniukas rado m saldainių. Pirmą dieną jis suvalgė 1 saldainį, antrą - 2. trečią - 3. Kiekvieną kitą dieną jis suvalgydavo vienu saldainiu daugiau nei prieš tai buvusią dieną. Per kelias dienas d Martynas suvalgys visus saldainius? Paskutinei dienai gali likti mažiau saldainių. Pasitikrinkite: Kai m=11, tai d=5.

Sprendimas:#include <iostream>

using namespace std;

int main()
{
    int m;

    cout << "Kiek Martynas sleptuveje rado saldainiu: ";
    cin >> m;

    int s = 0;

    int sald = 0;

    int d = 0;

    while(sald <= m)
    {
        s += 1;
        sald += s;
        d++;
    }

    cout << d;

    return 0;
}

Dėl šito uždavinio sprendimo abejoju :/

Nori sudalyvauti šioje temoje ir parašyti savo pranešimą? Prisijungti »