Nie jest źle jak na osobę początkującą, ale da się to napisać lepiej.
Przede wszystkim: można podać tekst w miejscu gdzie program spodziewa się liczby (testowane na Linuxie, kompilowane pod g++), podobnie program się sypie gdy poda się liczbę zmiennoprzecinkową,
(uwaga: kod był typowy pod Windowsa więc przeszedł parę modyfikacji: [link])
Jeżeli chodzi o sam kod, to rzeczy które można się przyczepić (wypisuje jedynie pierwsze wystąpienie danego błędu):
- skoro to kod C++ więc nie stosuj nagłówków '*.h', lecz zaczynające się od 'c*', np nie stosuj <time.h>, lecz <ctime>
- linia 38 (względem oryginalnego kodu) nieskończona pętla, którą spokojnie można było zastąpić ładnym warunkiem
- linia 65 - wiele instrukcji w jednej linii
- linia 69 - zastosowanie exit(0), [1]
- linia 79 - system("cls")
- linia 98 - brak konsekwencji we wcięciach, np linia 97 należąca do tego samego bloku co l98 ma wcięcie składające się z 4 spacji, podczas gdy 98 ma 1 dodatkowe wcięcie, czyli 8 spacji
- linia 103 - nie ma to sensu, "punkty" to zmienna lokalna więc i tak jest niszczona
- linia 269 - brak konsekwencji w stylu pisania funkcji, np poprzednia funkcja jest nazwana przy użyciu snake_case, podczas gdy w tej linii mamy nagle CamelCase
- linia 271 - potencjalny błąd, tutaj używasz AND jako operację na bitach, powinno być && w warunkach zamiast &, wtedy nawiasy przestaną być potrzebne
Te rzeczy jakoś mocno rzuciły się w oczy