Kodėl praleidai antrą, kas neišeina? Tikrai nesunkus uždavinys. Patarimas: Naudok šaknies traukimo operaciją. Tam reikia bibliotekos #include <math.h>. O šitame kode yra menkutė klaida, nereikia ciklo sąlygoje lygybės. Pasitikrink, kai m=15 turi būti ne 6, o 5.
Nelabai supratau antro uždavinio salygos, dabar spręsiu visus kuriuos, manau, galiu savarankiškai išspręsti, o poto prašysiu pagalbos :)
Dėl antro įdėsiu paveiksliuką, jog būtų aiškiau :)
Užduotis:
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ų litais gaus kaimynas už paskolintus n eurų. Pasitikrinkite: Kai n = 11, tai palūkanos=4
Sprendimas: #include <iostream>
#include <iomanip>
using namespace std;
int main()
{
int n;
cout << "Kiek pasiskolino: ";
cin >> n;
int a = 1;
int x = 0;
while(n > x)
{
a *= 2;
x += a;
}
x += 1;
int palukanos;
palukanos = x - n;
cout << "Kaimynas uz paskolintus pinigus gavo: " << palukanos << setw(5) << " litus" << endl;
cout << setw(39) << setprecision(3) << double(palukanos) / 3.45280 << " eurus" << endl;
return 0;
}
Uždavinio sąlygoje viena kartą litais parašyta, kita eurais, todėl nesupratau ir paverčiau litus į eurus.
Spręsk, jog visur būtų eurai. Originali sąlyga buvo litais. Matyt ne visur pakeičiau. Norėjau, jog sąlyga būtų aktuali šiandienai ;).
Uždavinys:
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.
Sprendimas: #include <iostream>
using namespace std;
int main()
{
int n;
cout << "n = ";
cin >> n;
int x = 0;
for(int i = 1; i <= n; i++)
{
x += 1;
cout << x;
}
return 0;
}
Nežinau ar galėjo taip išspręsti, ar ne, bet kitaip nesugalvoju.
Dėl 5. Na matau bandei tiesiog pastebėti dėsningumą. Iš tiesų tau reiktų pagalvoti kaip gali užrašyti naują dėmenį prieš tai buvusio dėmens pagalba. Verta pastebėti, jog jei prieš tai buvęs dėmuo yra x, tai po jo einantis yra 10x+1. Gal tai pagelbės? Šiaip šis sprendimas (t.y. tavasis) duoda teisingus atsakymus tik ribotam n skaičiui.
Na va šaunu, nemažai išsprendei gerai. Dabar pamėgink spręsti tuos, kurie nepavyko ir kuriuose buvo klaidų.