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

c++ ciklas ir rekursija


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

Labas vakaras, reikia pagalbos issprendziant sia uzduoti

#include <iostream>
#include <cmath>
using namespace std;

void meniu()
{
cout<<"a) cikla "<<endl;
cout<<"b) rekursija"<<endl;

}


int ciklas(int y)
{
int rez;
while(y!=1)
{

}

}



int rekursija(int a)
{
    int rez;
    if(a==1)
    {
        rez=1;
    }
    else
    rez=a*rekursija(a-1);

    return rez;
}


int main()
{
	char pas;
	meniu();
	int c;
	cin>>pas;
	if(pas == 'b')
	{
	cout<<"iveskite skaiciu"<<endl;
	cin>>c;
    rekursija(c);
    cout<<rekursija(c);
	}
	else if(pas == 'a')
	{
	cout<<"iveskite skaiciu"<<endl;
	
	}
	else return 0;
    return 0;
}

 

Capture.PNG

Nuoroda į komentarą
Dalintis per kitą puslapį

SIŪLAU PAČIAM DAR BANDYT PRIEŠ SKAITANT!!! Nes priešingu atveju taip suvokimo ir neįgausi. Tai ką tu padaręs aš kiek matau yra "kažkokie fragmentai" niekaip nesusiję su uždavinio sąlyga todėl net nematau tikslo jų taisyti.

Sugalvojau sprendimą, bet jis pateiks tik suapvalintą reikšmę. Tačiau sąlygoj nieko apie tai nepaminėta tai gal viskas ok turėtų būt.

a) Principas toks, kad einama iš antro galo įsimenant praeitą skaitiklio reikšmę ir taip vis dalinant suapvalintas reikšmes (it's not so good, nes gaunama netiksli reikšmė, bet kaip ir minėjau pats nesu užtikrintas dėl sąlygos).

b) Nurodomas base case (a>256) kada reikia nutraukt recursive funkcija ir pateikt ats. Kitas case manau aiškus turėtų būt.

#include <iostream>
#include <cmath>

using namespace std;

double SolveUsingLoop(double x) {
    double y = pow(x,2) + 256/pow(x,2);

    if (x == 0)
        throw invalid_argument("Esant tokiam argumentui funkcija neturi reikšmės!");

    int prev = 256;
    for (int i = 0; i < 8-1; i++) {
        prev /= 2;
        y = pow(x,2)+prev/y;
    }
    return 1/y;
}

double SolveUsingRecursion(double x, int a = 1) {
    if (x == 0)
        throw invalid_argument("Esant tokiam argumentui funkcija neturi reikšmės!");
    if (a > 256)
        return 0;
    else
        return a/(pow(x,2)+SolveUsingRecursion(x, 2*a));
}

int main()
{
    double x;

    cout << "Įveskite x: ";
    cin >> x;

    cout << "a) y = " << SolveUsingLoop(x) << endl;
    cout << "b) y = " << SolveUsingRecursion(x) << endl;

    return 0;
}

 

Redaguota , nario Magax
Silly mistake
Nuoroda į komentarą
Dalintis per kitą puslapį

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