1. I goto non vanno usati se non in situazioni estremamente particolari; nel caso specifico, tutti quei goto vanno sostituiti con un do...while;
2. In questo codice ci sono errori molto grossolani di sintassi; il C++ è un linguaggio molto complicato, approcciarlo inventandosi la sintassi a caso non può portare a nulla di buono.
Venendo agli errori specifici:
Non saprei cosa aggiungere a quanto già ti dice il compilatore... cosa ti aspetti che faccia il break se sei fuori da un ciclo?
Stai facendo un uso molto creativo dell'=... l'operatore di confronto è ==, mentre = è solo operatore di assegnamento. Per questo motivo, in tutti gli if vorrai usare ==. Inoltre, le espressioni booleane sono normali espressioni, non puoi inventarti sintassi come "terzo=primo or =secondo" - il compilatore non è umano, non comprende il "linguaggio naturale", ma devi rispettare la sintassi attesa (terzo==primo || terzo==secondo).error: non l-value in assignment(line : 41,57,65)
error: expected primary-expression before '=' token(line: 49)
Infine, se è vero che gli "alias testuali" per gli operatori relazionali (and, or, xor, ...) sono ammessi dal C++, in pratica non li usa nessuno e sono abbastanza malvisti; usa i simboli "veri" (vedi qui).