Well, the code above doesn't compile, there are several errors. As for the overall approach, the switch-case mechanism here is an unwieldy approach, as there are 25 different options as well as a default (out of range).
A simpler approach would use addition and the modulo operator % to get the result with much less code.
If you wrap something in single quotes , such as '-12' it is considered by C++ as a character literal, which means that it represents a single character, like 'a'. So that is one source of errors.
Because the timezone can be negative, let's take -12 as an example, when you add the numbers:
a (=23) + (-12) , evaluates to 23 -12 = 11. Off course, you need to check for when the result goes below zero:
5-12 = -7, in which case you need to subtract 7 from 24: 24-7 = 17. (Because -7 is the amount of hours you need to subtract from the previous day. The same goes for any result higher than 7.
There is an easier way to achieve this last feature using the modulo operator.
This will give you the remainder of a division, for instance: 24%27 27%24 = 3
So suppose a= 15 and c=+10, a+c=25 => 25%24=1, so 1AM in timezone C.
Hope that clears it up for you,you don't need all those switch statements.