W odpowiedzi na komentarz.
Błędu w kodzie nie masz, ale kod nie spełnia założeń zadania (wcześniej go nie czytałem). Rejestr, według tego, co przeczytałem, powinien mieć 10 pozycji, a u Ciebie, nie wiedzieć czemu, jest 9. To może powodować błędy związane z dostępem do pamięci.
Tu masz kod, który powinien działać:
int main()
{
int a, b, result, reg[10];
char zn;
while (std::cin >> zn >> a >> b) {
switch(zn) {
case 'z': reg[a] = b; continue;
case '+': result = reg[a] + reg[b]; break;
case '-': result = reg[a] - reg[b]; break;
case '*': result = reg[a] * reg[b]; break;
case '/': result = reg[a] / reg[b]; break;
case '%': result = reg[a] % reg[b]; break;
default: continue;
}
std::cout << result << '\n';
}
return 0;
}