Skaiciavimai.h : #include using namespace std; #include #include static double ln2 = 0.693147180559945; class Skaic { public: int Redukcija(); double Teikrou(double x1, double eps1); void Pagr_skaic(); double gx(); double geps(); double gx2(); int gind1(); int gind2(); int gind3(); double gtv_red1(int i); double gtv_red2(int i); double gtv_te1(int i); int git(); double gte(); void ix(double xi); void ix2(double xi2); void ieps(double epsi); void iind1(int i ); void iind2(int i); void iind3(int i); Skaic(); ~Skaic(); private: int ind1, ind2, ind3; int it, t; double x, x2 ; double eps, te; double tv_red2[1000]; double tv_red1[1000]; double tv_te1[1000]; }; ----------------------------------- Skaiciavimai.cpp : #include "Skaiciavimai.h" #include "DuomRez.h" using namespace std; double Skaic::gx() { return x; } double Skaic::geps() {return eps; } double Skaic::gx2() { return x2; } int Skaic::gind1() { return ind1; } int Skaic::gind2() {return ind2; } int Skaic::gind3() { return ind3; } double Skaic::gtv_red1(int i) {return tv_red1[i]; } double Skaic::gtv_red2(int i) {return tv_red2[i]; } double Skaic::gtv_te1(int i) {return tv_te1[i]; } int Skaic::git() { return it; } double Skaic::gte() {return te; } void Skaic::ix(double xi) { x = xi; } void Skaic::ix2(double xi2) { x2 = xi2; } void Skaic::ieps(double epsi) { eps = epsi; } void Skaic::iind1(int i ) { ind1 = i; } void Skaic::iind2(int i) { ind2 = i; } void Skaic::iind3(int i) { ind3 = i; } Skaic::Skaic() {} int Skaic::Redukcija() { x++; int t = 0; while (x>=2) { x=x/2; tv_red2[ind2] = x; ind2 = ind2 +1; t++; } if (t==0) while (x<1) { x=x*2; tv_red1[ind1] = x; ind1 = ind1+1; t--;} x--; cout << "ind2 = " << ind2 << "ind1 = " << ind1; return t; } double Skaic::Teikrou(double x1, double eps1) { double y,bn1,r,an, bn=1; y=x1; double z = y; double pi=1; int k=0, n=1; while (fabs(z) > eps1) { bn1=bn; an=n*x1; if ( k==1) { k=0; bn=2*n+1; n=n+1;} //k==1 else { k=1; bn=2; } //k==0 r=an/(bn1*bn); pi=1/(1+pi*r); z=z*(pi-1); y=y+z; tv_te1[ind3] = t*ln2+y; ind3 = ind3+1; it++; } return t*ln2+y; } void Skaic::Pagr_skaic() { bool taip = false; t = Redukcija(); te = Teikrou(x, eps); cout << "[=-{-----------------------------\n"; cout << "[=-{ Skaiciavimai atlikti!\n"; cout << "[=-{-----------------------------\n\n"; } ---------------------------- DuomRez.h #include #include #include using namespace std; class DuomRez { public: DuomRez(); ~DuomRez(); void IvestiIsF(char file[]); void IvestiIsK(double k, double l); void TRezultatai(char TRezFailas[]); void GRezultatai(char GRezFailas[]); }; --------------------------------------- DuomRez.cpp #include #include #include using namespace std; class DuomRez { public: DuomRez(); ~DuomRez(); void IvestiIsF(char file[]); void IvestiIsK(double k, double l); void TRezultatai(char TRezFailas[]); void GRezultatai(char GRezFailas[]); }; #include "DuomRez.h" #include "Skaiciavimai.h" Skaic* s = new Skaic(); DuomRez::DuomRez() {} void DuomRez::IvestiIsF(char file[]) { double fx, feps; s->iind1(0); s->iind2(0); s->iind3(0); if(file != NULL) { ifstream f(file); f >> fx >> feps; s->ix(fx); s->ieps(feps); s->ix2(fx); f.close(); } else cout << "[=-{ Failas tuscias !\n"; if(s->gx2() <= -1) { cout << "[=-{ Ivesti Duomenys yra blogi !\n"; } else cout << "[=-{ Duomenys Ivesti !\n\n"; } void DuomRez::IvestiIsK(double k, double l) { s->iind1(0); s->iind2(0); s->iind3(0); s->ix(k); s->ieps(l); s->ix2(k); cout << s->gx() << " " << s->geps(); if(s->gx2() <= -1) cout << "[=-{ Ivesti Duomenys yra blogi !\n"; else cout << "[=-{ Duomenys Ivesti !\n\n"; } void DuomRez::TRezultatai(char TrezFailas[]) { if (TrezFailas != NULL) { int j = 1; int k = 1; ofstream f(TrezFailas); f<<"[==----------------------------+!+-----------------------------\n"; f<<"[=-{ Tarpiniai Rezultatai: \n"; f<<"[=-{\n"; f<<"[=-{ Ivestas x = " << s->gx2() << "\n"; f<<"[=-{\n"; for (int i = 0; i < s->gind2(); i++) { f<<"[=-{ Redukcijos ciklas " << j << " ; Tarpiniai redukuoti x, kai ivestas x >=2 : " << s->gtv_red2(i) << "\n"; } f<<"[=-{\n"; for (int i = 0; i < s->gind1(); i++) { f<<"[=-{ Redukcijos ciklas " << j << " ; Tarpiniai redukuoti x, kai ivestas x < 1 : " << s->gtv_red1(i) << "\n"; } f<<"[=-{\n"; for (int i = 0; i < s->gind3() ; i++) { f<<"[=-{ Iteracijos cinklas " << j++ << " ; Teikrou algoritmo reiksmiu seka : " << s->gtv_te1(i) << "\n" ; } f<<"[==----------------------------+!+-----------------------------\n"; f.close(); cout << "Failo issaugojimas baigtas\n"; cout << "[==----------------------------+!+-----------------------------\n"; cout <<"[=-{ Tarpiniai Rezultatai: \n"; cout << "[=-{\n"; cout << "[=-{ Ivestas x = " << s->gx2() << "\n"; cout << "[=-{\n"; for (int i = 0; i < s->gind2(); i++) { cout << "[=-{ Redukcijos ciklas " << k << " ; Tarpiniai redukuoti x, kai ivestas x >=2 : " << s->gtv_red2(i) << "\n"; } cout << "[=-{\n"; for (int i = 0; i < s->gind1(); i++) { cout << "[=-{ Redukcijos ciklas " << k << " ; Tarpiniai redukuoti x, kai ivestas x < 1 : " << s->gtv_red1(i) << "\n"; } cout << "[=-{\n"; for (int i = 0; i < s->gind3(); i++) { cout << "[=-{ Iteracijos ciklas " << k++ << " ; Teikrou algoritmo reiksmiu seka : " << s->gtv_te1(i) << "\n"; } cout << "[==----------------------------+!+-----------------------------\n\n"; } else cout << "Failas neisrinktas\n"; } void DuomRez::GRezultatai(char rezFailas[]) { if (rezFailas != NULL) { ofstream f(rezFailas); f <<"[==----------------------------+!+-----------------------------"; f <<"[=-{ Galutiniai Rezultatai: "; f <<"[=-{"; f <<"[=-{ Ivestas x = " << s->gx2() << "\n"; f <<"[=-{ Tikroji Ln(1+x) reiksme = " << log(1+s->gx2()) << "\n"; f <<"[=-{ Gauta reiksme naudojant Teikrou algr. = " << s->gte(); f <<"[=-{ Ivykusiu iteraciju skaicius = " << s->git(); f <<"[=-{ Busimo grafiko absiciu reziu intervalas : (-1 ; " << s->gx2() << " ]"; f <<"[==----------------------------+!+-----------------------------\n"; f.close(); cout << "[=-{ Failo issaugojimas baigtas\n"; cout <<"[==----------------------------+!+-----------------------------\n"; cout <<"[=-{ Galutiniai Rezultatai: \n"; cout <<"[=-{\n"; cout <<"[=-{ Ivestas x = " << s->gx2() << "\n"; cout <<"[=-{ Tikroji Ln(1+x) reiksme = " << log(1+s->gx2()) <<"\n"; cout <<"[=-{ Gauta reiksme naudojant Teikrou algr. = " << s->gte() << "\n"; cout <<"[=-{ Ivykusiu iteraciju skaicius = " << s->git() ; cout <<"[=-{ Busimo grafiko abscisiu reziu intervalas : (-1 ; " << s->gx2() << " ]\n"; cout <<"[==----------------------------+!+-----------------------------\n\n"; } //[=-{ Failas neisrinktas arba negalima irasyti � nurodyta vieta"); else cout << "[=-{ Failas neisrinktas\n\n"; } -------------------------------- main.cpp : #include "DuomRez.h" #include "Skaiciavimai.h" #include #include using namespace std; int main(int argc, char *argv[]) { ifstream f; int sk; char eil[20]; double xklav; double epsklav; DuomRez* duom = new DuomRez(); Skaic* skaic = new Skaic(); while (true) { while (true) { cout << "[=-{----------------!+!----------------\n"; cout << "[=-{ Galimos Komandos : "; cout << "[=-{----------------!+!----------------\n"; cout << "[=-{ 1. Nuskaityti faila; \n"; cout << "[=-{ 2. Ivesti duom. klaviatura; \n"; cout << "[=-{ 3. Skaiciuoti; \n"; cout << "[=-{ 4. Isvesti Tarpinius Rezultatus; \n"; cout << "[=-{ 5. Isvesti Galutinius Rezultatus; \n"; cout << "[=-{ 6. Iseiti is programos. \n"; cout << "[=-{----------------!+!----------------\n"; cout << "[=-{ Pasirinkite: \n\n"; cin >> sk; break; } switch (sk) { case 1: { char fpav[20]; cout << "[=-{ Prasome ivesti duomenu failo pavadinima: \n"; cin >> fpav; duom->IvestiIsF(fpav); break; } case 2: { cout << "[=-{-----------------------------\n"; cout << "[=-{ Iveskite duomenis is klaviaturos: Pirmiausia Argumenta x, tada eps !\n"; cin >> xklav >> epsklav; duom->IvestiIsK(xklav,epsklav); cout <<"[=-{-----------------------------\n\n"; break; } case 3: { skaic->Pagr_skaic(); break; } case 4: { cout << "[=-{ Iveskite Tarpiniu Rezultatu failo varda: \n"; cin >> eil; duom->TRezultatai(eil); break; } case 5: { cout << "[=-{ Iveskite Galutiniu Rezultatu failo pavadinima: \n"; char grfpav[20]; cin >> grfpav; duom->GRezultatai(grfpav); break; } case 6: { exit(0); } } } }