Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // main.cpp
- #include <iostream>
- #include <fstream>
- #include "head.h"
- using namespace std;
- int main()
- {
- fstream plik;
- if(tworzenie_pliku(pobierz_nazwe(), plik))
- kalkulator(plik);
- else
- cout << "Nie utworzono zadnego pliku" << endl;
- return 0;
- }
- // head.h
- #include <iostream>
- #include <fstream>
- #include "head.h"
- using namespace std;
- int main()
- {
- fstream plik;
- if(tworzenie_pliku(pobierz_nazwe(), plik))
- kalkulator(plik);
- else
- cout << "Nie utworzono zadnego pliku" << endl;
- return 0;
- }
- // funkcje.cpp
- #include <iostream>
- #include <fstream>
- #include <conio.h>
- #include "head.h"
- bool tak_nie()
- {
- char wybor = '0';
- do
- {
- wybor = getch(); // funkcja pobieraj¹ca dowolny znak z klawiatury (jeden)
- } while (wybor != 't' && wybor != 'T' && wybor != 'n' && wybor != 'N');
- if(wybor == 't' || wybor == 'T')
- {
- cout << "T" << endl;
- return true;
- }
- cout << "N" << endl;
- return false;
- }
- bool tworzenie_pliku(string nazwa, fstream& plik) // uchwyt do pliku musi byæ podawany do funkcji poprzez referencjê (&), gdy¿ bêdziemy operowaæ na oryginalnym obiekcie, a nie jego kopii!
- {
- ifstream plik2;
- plik2.open(nazwa.c_str()); // metoda c_str() jest konieczna, aby funkcja open() mog³a otworzyæ obiekt typu string
- bool flaga = false; // flaga bêdzie informowaæ czy u¿ytkownik postanowi³ utworzyæ plik czy te¿ nie
- if (plik2.good()) // je¿eli plik o podanej nazwie ju¿ istnia³, flaga zostanie podniesiona
- {
- cout << "Plik o podanej nazwie juz istnieje. Czy chcesz go nadpisac? (T/N): ";
- // wybór tak/nie
- if(tak_nie())
- flaga = true;
- }
- else
- {
- cout << "Plik o podanej nazwie nie istnieje. Czy chcesz go utworzyc? (T/N): ";
- // wybór tak/nie
- if(tak_nie())
- flaga = true;
- }
- plik2.close();
- if(flaga)
- {
- plik.open(nazwa.c_str(), ios::app); // utworzenie lub otwarcie pliku (z dopisywaniem)
- return true;
- }
- else
- return false;
- }
- char menu()
- {
- cout << "Wybierz co chcesz zrobic:" << endl;
- cout << "* dodaj <1>" <<endl;
- cout << "* odejmij <2>" <<endl;
- cout << "* pomnoz <3>" <<endl;
- cout << "* podziel <4>" <<endl;
- cout << "* wyjdz z programu <0>" << endl;
- char wybor;
- do
- {
- wybor = getch();
- }
- while(wybor != '0' && wybor != '1' && wybor != '2' && wybor != '3' && wybor != '4');
- cout << wybor;
- return wybor;
- }
- string pobierz_nazwe()
- {
- cout << "Podaj nazwe pliku: ";
- string nazwa;
- cin >> nazwa;
- nazwa += ".txt";
- return nazwa;
- }
- void kalkulator(fstream& plik)
- {
- double a, b;
- char wybor;
- do
- {
- wybor = menu();
- switch(wybor)
- {
- case '0':
- cout << " - wychodze z programu" << endl;
- return; // w funkcji typu void s³owo kluczowe return nakazuje po prostu wyjœcie z funkcji
- case '1':
- cout << " - wybrales dodawanie. ";
- Podaj(a, b);
- cout << a << " + " << b << " = " << a+b << endl << endl;
- plik << a << " + " << b << " = " << a+b << endl;
- break;
- case '2':
- cout << " - wybrales odejmowanie. ";
- Podaj (a, b);
- cout << a << " - " << b << " = " << a-b <<endl << endl;
- plik << a << " - " << b << " = " << a-b <<endl;
- break;
- case '3':
- cout << " - wybrales mnozenie. ";
- Podaj (a, b);
- cout << a << " * " << b << " = " << a*b <<endl << endl;
- plik << a << " * " << b << " = " << a*b <<endl;
- break;
- case '4':
- cout << " - wybrales dzielenie. ";
- Podaj (a, b);
- while(b == 0)
- {
- cout << "Nie mozna dzielic przez 0!" << endl;
- Podaj(a, b);
- }
- cout << a << " / " << b << " = " << a/b <<endl << endl;
- plik << a << " / " << b << " = " << a/b <<endl;
- break;
- }
- }
- while(true);
- plik.close();
- }
- void Podaj(double &a, double &b)
- {
- cout << "Podaj 2 liczby rzeczywiste: ";
- cin >> a >> b;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement