Advertisement
kaunas163

Skaičiuotuvas

Feb 18th, 2014
132
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.51 KB | None | 0 0
  1. /* Programa - skaičiuotuvas, galima skaičiuoti kiek norime kartų. - 2013.12.07
  2. Skaičiavimai išvedami į atskirą failą. - 2013.12.07
  3. Ieva Jakšaitytė (KTU gr. IF-3/4) */
  4. #include <iostream>
  5. #include <fstream>
  6. #include <iomanip>
  7. #include <time.h>
  8. using namespace std;
  9. static const int maks = 100;            // maksimalus galimas masyvo dydis
  10. const char REZ[] = "Skaiciavimai.txt";  // failas, į kurį išvedami visi skaičiavimai
  11.  
  12. // klasė saugojanti kiekvieną skaičiavimą atskirai -----------------------------
  13. class Skaiciavimas
  14. {
  15. private:
  16.     double  skaicius1,      // pirmas skaičius
  17.             skaicius2,      // antras skaičius
  18.             atsakymas;      // gautas atsakymas
  19.     char    veiksmas;       // naudotas veiksmas
  20. public:
  21.     void Dėti(double sk1, double sk2, double ats, char veiksm);
  22.     double  GetSk1()    { return skaicius1; }
  23.     double  GetSk2()    { return skaicius2; }
  24.     double  GetAts()    { return atsakymas; }
  25.     char    GetVks()    { return veiksmas;  }
  26. };
  27.  
  28. // sąsajos metodas -------------------------------------------------------------
  29. void Skaiciavimas::Dėti(double sk1, double sk2, double ats, char veiksm) {
  30.     skaicius1 = sk1;
  31.     skaicius2 = sk2;
  32.     atsakymas = ats;
  33.     veiksmas = veiksm;
  34. }
  35.  
  36. // prototipai ------------------------------------------------------------------
  37. void Skaiciuoti(Skaiciavimas s[], int & kiek);
  38. void Isvesti(Skaiciavimas s[], int kiek);
  39.  
  40. // main funkcija ---------------------------------------------------------------
  41. int main()
  42. {
  43.     setlocale(LC_ALL, "Lithuanian");
  44.     Skaiciavimas s[maks];   // klasės objektas (masyvas), saugojantis gautą informaciją
  45.     int kiek;               // kiek kartų buvo atlikti skaičiavimai
  46.  
  47.     cout << "Skaičiuotuvas.\n\n"
  48.          << "Norint skaičius rašyti per kablelį rašykite tašką vietoj kablelio, pvz 5.5.\n"
  49.          << "Norint baigti įrašykite '0 0 0'.\n\n";
  50.  
  51.     Skaiciuoti(s, kiek);
  52.     Isvesti(s, kiek);
  53.  
  54.     cout << "Visi skaičiavimai buvo išvesti į failą \"Skaiciavimai.txt\"\n\n\n\n\n\n\n\n\n";
  55.  
  56.     system("pause");
  57.     return 0;
  58. }
  59.  
  60. // funkcijos -------------------------------------------------------------------
  61.  
  62. // funckija, kuri leidžia pateikti veiksmus, suskaičiuoja atsakymą ir viską sudeda į masyvus
  63. void Skaiciuoti(Skaiciavimas s[], int & kiek)
  64. {
  65.     double sk1, sk2,        // pirmas ir antras skaičiai
  66.             ats;            // gautas atsakymas
  67.     char veiksmas;          // veiksmas
  68.     bool skaiciuoti = true; // reiškmė rodanti ar dar skaičiuoti
  69.  
  70.     for (int i = 0; skaiciuoti == true; i++)
  71.     {
  72.         cout << "Įveskite skaičių, veiksmą ir skaičių.\n";
  73.         cin >> sk1 >> veiksmas >> sk2;
  74.  
  75.         if (sk1 == 0 && veiksmas == '0' && sk2 == 0) {
  76.             skaiciuoti = false;
  77.             cout << "\n\n\n\n\n\n\n"
  78.                  << "\nPrograma baigė darbą.\n\n";
  79.             break;
  80.         }
  81.  
  82.         switch (veiksmas)
  83.         {
  84.         case '+':
  85.             ats = sk1 + sk2;
  86.             break;
  87.         case '-':
  88.             ats = sk1 - sk2;
  89.             break;
  90.         case '*':
  91.             ats = sk1 * sk2;
  92.             break;
  93.         case '/':
  94.             ats = sk1 / sk2;
  95.             break;
  96.         default:
  97.             cout << "blogas veiksmas..";
  98.             break;
  99.         }
  100.         cout << "Atsakymas: " << ats << endl;
  101.         s[i].Dėti(sk1, sk2, ats, veiksmas);
  102.         kiek = i;
  103.         cout << endl;
  104.     }
  105. }
  106.  
  107. // funckija išvedanti visus skaičiavimus į atskirą failą
  108. void Isvesti(Skaiciavimas s[], int kiek) {
  109.     char date[9];
  110.     _strdate(date);
  111.  
  112.     ofstream fout(REZ, ios::app);
  113.     fout << "Skaičiavimai atlikti: " << date << endl;
  114.     for (int i = 0; i <= kiek; i++)
  115.     {
  116.         fout << setw(10) << right << s[i].GetSk1() << " "
  117.              << setw(1) << left << s[i].GetVks() << " "
  118.              << setw(10) << left << s[i].GetSk2() << " = "
  119.              << s[i].GetAts() << endl;
  120.     }
  121.     fout << "\n\n\n";
  122.     fout.close();
  123. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement