Fajnie, że chciało Ci się pisać kalkulator. To co mógłbym w nim poprawić, to :
-zmienne globalne
-liczby mógłbyś zastąpić znakami, przez co kod byłby nieco bardziej przyjazny
- Zamiast cin.fail(), dobrym pomysłem byłoby użycie użycie (!cin), który sprawdza, czy w strumieniu wszystko jest w porządku
- cin.sync(), można zastąpić lepszą std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'), kóry ignoruje dane aż do długości linii
- Masz bardzo dużą redundację i to czasami normalne. Równocześnie w Twoim przypadku duża część instrukcji można zamknąć w funkcji, ot np. wczytywanie danych, lub ich przypisywanie
- Twój kod zadziała tylko dla Windowsa(windows.h,conio.h)
system("cls");
- Nie wiem, czy jest to dobrym pomysłem. System jest wolne, wymaga spawnowania innego procesu, uruchomiania shella, wykonania skryptu startowego shella, po czym wywołania faktycznej komendy, deinicjalizacji wszystkiego i zamknięciu procesu. To co jest istotne, to fakt że antywirusy mogą traktować to jako wirusa, gdyż znane są przypadku błędów bezpieczeństwa związanych z użyciem system(). Poza tym czyszczenie ekranu moim zdaniem jest nie w porządku, a zwłaszcza w kalkulatorze. Wyobraź sobie, że liczysz coś. To coś jest na górze ekranu i nagle znika. W moim odczuciu nie jest to do końca ciekawe.
Sleep(500);
-W moim odczuciu przy dłuższym użytkowaniu, będzie to raczej męczyło koniecznością czekania nawet tej pół sekundy za każdym razem
- Ostatnią kwestią, którą chciałbym poruszyć, to używanie przestrzeni nazw standardowych, czyli std. Oczywiście to tylko wspomnienie, gdyż w przypadku tak prostych programów, problem nie występuje.
Podsumowując: Mimo tej krytyki, napisanie takiego programu po 2 tygodniach jest naprawdę bardzo dobrym wynikiem, nazywasz zmienne po imieniu(a nie np, a,b,c), co jest naprawdę bardzo dobrym rezultatem. Tak trzymać!