eMatematikas Prisijunk Forumas Užduotys Testai Pradžia

C++ Problema su sumos skaiciavimo algoritmu naudojant cikla for


https://www.ematematikas.lt/upload/uploads/users/1000/1/tmp/thumb/p195rm4ipa1ga41nr61src115dp921.png

Nesigauna y reiksme kazkodel

https://www.ematematikas.lt/upload/uploads/users/1000/1/tmp/thumb/p195rmab6814bd186t1b0s1oeceum2.png

#include <iostream>
#include <conio.h>
#include <cmath>
#include <iomanip>

using namespace std;

int main()
{
    float x;
    float xp=-1;
    float xg=1;
    float h=0.5;
    float t=0;
    int y=0;

    cout << "Pradiniai duomenys: " << "\n\n" << "Reiksmiu intervalas: ["  << xp << "," << xg << "]" << "\n" << "Kitimo zingsnis h: " << h << "\n\n";
    for (x=xp; x<=xg; x=x+h)
    {
    if(x<0)
    {
    cout << fixed << setprecision(1) << "Saknies istraukti is neigiamo skaiciaus neimanoma (x = " << x << ")." << endl;
    }
    else
    t = (sqrt(pow(sin(x), 2))) / (x - 2);
    y = sqrt((2 * t + x));
    cout << "t = " << t << " , y = " << y << " , x = " << x << setprecision(1) << fixed << endl << "\n";
    }
    _getch();
}


y int, nes jei padaryciau float rasytu nan (not a number). Gal kas galit patart ?

Kodą reikėtų išlygiuoti, nes dabar sunku suprasti ką jis daro (pvz., po else tikriausia trūksta laužtinių skliaustų, kurie apgaubtų visą sakinių bloką kuris eina po to, juk kam skaičiuoti ir atspausdinti y reikšmę, jei to padaryti turėtų būti neįmanoma). y tikrai turėtų būti float, NaN gauni, nes trauki šaknį iš neigiamo skaičiaus. Tai, kad x yra neigiamas dar nereiškia, kad kur nors bus problemų traukiant šaknį. Va jei (2 * t + x) yra neigiamas, tai tada negerai. Panašu, kad tuose rėžiuose visada taip ir bus (be taško x=0).

Dekui :)
int main()
{
    float x;
    float xp=-1;
    float xg=1;
    float h=0.5;
    float t=0;
    float y=0;

    cout << "Pradiniai duomenys: " << "\n\n" << "Reiksmiu intervalas: ["  << xp << "," << xg << "]" << "\n" << "Kitimo zingsnis h: " << h << "\n\n";
    for (x=xp; x<=xg; x=x+h)
    {
        t = ( sqrt (pow(sin(x), 2) ) ) / (x - 2);
    if ( (2 * t + x) < 0)
    {
        cout << fixed << setprecision(1) << "Saknies istraukti is neigiamo skaiciaus neimanoma: " << "(2*t+x) = " << (2*t+x) << "\n\n";
    }
    else
    {
        y = sqrt((2 * t + x));
        cout << fixed << setprecision(1) << "t = " << t << " , y = " << y << " , x = " << x << "\n\n";
    }
    }
    _getch();
}

Dabar spausdina lyg ir gerai
http://i.imgur.com/M586SEX.png

Gal kas galėtų padėti,

Užduotis:
Jonas gautą atlyginimą paskirstė taip: a išleido dovanai, pirko n litrų bendzino po b Lt, trečdalį likusių pinigų atidavė dukrai, o sau pasiliko 1250 Lt. Apskaičiuoti Jono atlyginimą.

Viską kaip ir suprasčiau tik nežinau kaip užrašyti kintamuosius.

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