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

Pagalba su while


Gin te

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

Programuotojui moka a eurų atlyginimą. Darbdavys pažadėjo kiekvieną mėnesį padidinti atlyginimą x eurų, parašykite programą (būtinai naudodami ciklą while), kuri surastų:

·       koks atlyginimas bus po metų;

·       koks atlyginimas bus po n mėnesių;

·       po kiek mėnesių jo atlyginimas bus daugiau nei dvigubai didesnis;

·       po kiek mėnesių jo atlyginimas bus nemažesnis už b litų;

(kiekvienam punktui atskiras while)

 

Nuoroda į komentarą
Dalintis per kitą puslapį

Trečias punktas while neišeina

 

#include <iostream>
using namespace std;
int main()
{
    int a, x, n, aa = 0, m = 2, l= 2, ab = 0, h = 0, ac = 0, ad = 0, k = 1, b;
    cout<<"Iveskite atlyginimo suma: "; cin >> a;
    cout <<"Iveskite padidinimo suma: "; cin >> x;
    cout <<"Iveskite n menesiu skaiciu: "; cin >> n;
     cout <<"Iveskite b litu skaiciu: "; cin >> b;
     aa= a;
     ab = a;
     ac = a;
     ad = a;
    while (m<=12)
    {
    aa = aa + x;
    m++;
    }
    
    while (l<=n)
    {
    ab = ab + x;
    l++;
    }
    while (ac <= 2 * a)
    {
    ac = ac + x;
    h++;    
    } 
   
    while (ad <= b)
    {
    ad = ad + x;
    k++;
    }
if (ac == 2 * a)
    h++;
cout << "Atlyginimas po metu: "<< aa << endl;
cout << "Atlyginimas po " << n << " menesiu: "<< ab << endl;
cout <<"Atlyginimas bus daugiau nei dvigubai didesnis po:  "<< h << " menesiu"<< endl;    
cout <<"Atlyginimas nemazesnis uz b litu po " << k << " menesiu"<<endl;
return 0; 
}

Nuoroda į komentarą
Dalintis per kitą puslapį

55 minutes prieš, Gin te parašė:

Trečias punktas while neišeina

 

#include <iostream>
using namespace std;
int main()
{
    int a, x, n, aa = 0, m = 2, l= 2, ab = 0, h = 0, ac = 0, ad = 0, k = 1, b;
    cout<<"Iveskite atlyginimo suma: "; cin >> a;
    cout <<"Iveskite padidinimo suma: "; cin >> x;
    cout <<"Iveskite n menesiu skaiciu: "; cin >> n;
     cout <<"Iveskite b litu skaiciu: "; cin >> b;
     aa= a;
     ab = a;
     ac = a;
     ad = a;
    while (m<=12)
    {
    aa = aa + x;
    m++;
    }
    
    while (l<=n)
    {
    ab = ab + x;
    l++;
    }
    while (ac <= 2 * a)
    {
    ac = ac + x;
    h++;    
    } 
   
    while (ad <= b)
    {
    ad = ad + x;
    k++;
    }
if (ac == 2 * a)
    h++;
cout << "Atlyginimas po metu: "<< aa << endl;
cout << "Atlyginimas po " << n << " menesiu: "<< ab << endl;
cout <<"Atlyginimas bus daugiau nei dvigubai didesnis po:  "<< h << " menesiu"<< endl;    
cout <<"Atlyginimas nemazesnis uz b litu po " << k << " menesiu"<<endl;
return 0; 
}

Prisitaikyk pagal save:
 

int menesiai = 0, altyginimas = a;
while(atlyginimas <= a * 2) {
	atlyginimas += x;
	menesiai ++;
}

 

Nuoroda į komentarą
Dalintis per kitą puslapį

Prieš 1 valandą, Gin te parašė:

Aš tą patį ir parašius, bet jeigu atlyginimas lygus dvigubai didesniam, o reikia, kad būtų didesnis nei dvigubai didesnis

Tai čia ir bus DAUGIAU nei dvigubai didesnis, nes <=, jeigu būtų < ir x būtų tinkamas, tada tik gautum lygiai dvigubai didesnį.

Nuoroda į komentarą
Dalintis per kitą puslapį

1.

int a,x,n;
        a = 1000;
        x = 200;
        n=1;
        while(n<=12) {
                cout << n <<  " "  << a << endl;
                a+=x;
                n++;
        }
        return 0;

Rezultatas:
1 1000
2 1200
3 1400
4 1600
5 1800
6 2000
7 2200
8 2400
9 2600
10 2800
11 3000
12 3200

2. Ėmiau pradinį programuotojo atlyginimą kaip pirmą mėnesį.

{
        int a,x,n, men;
        a = 1000;
        x = 200;
        men = 3;
        n=1;
        while(n<=men) {
                cout << n <<  " "  << a << endl;
                a+=x;
                n++;
        }
        return 0;
}
Rezultatas: 
1 1000
2 1200
3 1400

3.

{
        int a,x,n,index,apradinis;
        a=1000;
        x=200;
        index=1;
        n=1;
        apradinis=a;
        while(n>0) {
                a+=x;
                index++;
                if(a==2*apradinis) {
                        n=-1;
                }
        }
        cout << index << endl;
        return 0;
}

Rezultatas: 6.

4.

{
        int a,x,n,b,index;
        a = 1000;
        x = 200;
        b = 1500;
        index=1;
        n=1;
        while(n>0) {
                a+=x;
                index++;
                if(a>=b) {
                        n=-1;
                }
        }
        cout << index << endl;
        return 0;
}


Rezultatas: 4.

 

Nuoroda į komentarą
Dalintis per kitą puslapį

prieš 2 valandas(-ų), Gin te parašė:

Tai kodėl įvedus a = 10 ir x = 5, ats rodo po 3 mėnesių, kai po 3 mėn atlyginimas bus 20, kas bus lygu 2*a

Na tai tiesiog pridėk papildomai vienetą rastiem mėnesiam, menesiai ++; po while ir viskas. Parašiau kodą galvodamas, kad jau pirmą mėnesį irgi bus padidėjimas atlyginimo, todėl per mažas gaunasi dabar mėnesis.

prieš 2 valandas(-ų), feshas parašė:

{         int a,x,n,index,apradinis;         a=1000;         x=200;         index=1;         n=1;         apradinis=a;         while(n>0) {                 a+=x;                 index++;                 if(a==2*apradinis) {                         n=-1;                 }         }         cout << index << endl;         return 0; } Rezultatas: 6.

Čia visiškai nereikalingas "n" kintamasis, geriau iškart tikrinti while'o sąlygoj ar dabartinis atlyginimas daugiau nei dvigubai didesnis, taip kaip aš parašiau prieš tai.

Nuoroda į komentarą
Dalintis per kitą puslapį

2 minutes prieš, Inn#Progress parašė:

Na tai tiesiog pridėk papildomai vienetą rastiem mėnesiam, menesiai ++; po while ir viskas. Parašiau kodą galvodamas, kad jau pirmą mėnesį irgi bus padidėjimas atlyginimo, todėl per mažas gaunasi dabar mėnesis.

Kodėl naudoji kintamasis++ vietoj ++kintamasis?

Nuoroda į komentarą
Dalintis per kitą puslapį

59 minutes prieš, NTQ parašė:

Jeigu nėra skirtumo matematine prasme, tai nebūtų protingiau naudoti efektyvesnį variantą? Šiaip yra aiški priežastis, kodėl pirmasis lėtesnis nei  pastarasis.

Kaip matau simple type'ams performance skirtumo jokio nėra. Bet suprantu ką turi omeny.
http://www.cs.technion.ac.il/users/yechiel/c++-faq/increment-pre-post-speed.htmlimage.png.d2d3fae7c09bf0cb104487b9e5bde14f.png

Redaguota , nario Inn#Progress
Nuoroda į komentarą
Dalintis per kitą puslapį

8 minutes prieš, Inn#Progress parašė:

Kaip matau simple type'ams performance skirtumo jokio nėra. Bet suprantu ką turi omeny.
http://www.cs.technion.ac.il/users/yechiel/c++-faq/increment-pre-post-speed.htmlimage.png.d2d3fae7c09bf0cb104487b9e5bde14f.png

Pagal bencharmarkus, daugelį situacijų ++i yra 2x - 3x greitesnis. Žinoma, ne vien greitis svarbus, bet ir logika.

int i = 1; cout << i++; // 1

int i = 1; cout << ++i; // 2

while(atlyginimas <= a * 2) {

atlyginimas+= x;

menesiai++;

}

Mūsų situacijoje menesiai++ yra paskutinis ir dėl to sena reikšmė neaktuali. Keičiame į ++menesiai. Naudojame programavimo ypatybes pagal paskirtį bei logiką.

P.s. praktiškai visuose programavimo kalbose ++i yra greitesnis nei i++. Tai niekur nepadarysi klaidos naudodamas šiuos principus kitur. Anyway, čia smulkmena, bet jeigu turi daug ciklų ar ilgų, tai tokios klaidelės virs į sekundes + CPU deginimas.

Nuoroda į komentarą
Dalintis per kitą puslapį

Prieš 1 valandą, NTQ parašė:

Pagal bencharmarkus, daugelį situacijų ++i yra 2x - 3x greitesnis. Žinoma, ne vien greitis svarbus, bet ir logika.

int i = 1; cout << i++; // 1

int i = 1; cout << ++i; // 2

while(atlyginimas <= a * 2) {

atlyginimas+= x;

menesiai++;

}

Mūsų situacijoje menesiai++ yra paskutinis ir dėl to sena reikšmė neaktuali. Keičiame į ++menesiai. Naudojame programavimo ypatybes pagal paskirtį bei logiką.

P.s. praktiškai visuose programavimo kalbose ++i yra greitesnis nei i++. Tai niekur nepadarysi klaidos naudodamas šiuos principus kitur. Anyway, čia smulkmena, bet jeigu turi daug ciklų ar ilgų, tai tokios klaidelės virs į sekundes + CPU deginimas.

Yes, apie išvedimą cout'e taip pat pagalvojau ir tai aišku makes more sense to do, kai pabaigoj lieka viena paprasta aritmetinė operacija skaičiaus padidinimo.

Nuoroda į komentarą
Dalintis per kitą puslapį

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