el caso 4 será poco efectivo
si lo ejecutas te darás cuenta a lo que me refiero
para que se vea bien, result debería ser de tipo float, castear como float la división, debe ser i/t y no t/i
procura hacer un poco mejor la identación
tu haces
int main(){
int menu,i,t,result;
int respuesta=1;
while(respuesta!=0){
cout<<"\n*************** Que tabla matematica quiere revisar ***************"<<endl;
/* ... */
cin>>menu;
switch(menu){
case 1:
if(menu=1);
cout<<"\nEscribre el numero de la tabla"<<endl;
cin>>t;
for(i=0;i<=12;i++){
yo creo que sería más legible
no ideantas dentro del while, ni el for
int main(){
int menu,i,t,result;
int respuesta=1;
while(respuesta!=0){
cout<<"\n*************** Que tabla matematica quiere revisar ***************"<<endl;
/* ... */
cin>>menu;
switch(menu){
case 1:
if(menu=1);
cout<<"\nEscribre el numero de la tabla"<<endl;
cin>>t;
for(i=0;i<=12;i++){
result=t+i;
por otro lado los if de las lineas 28, 37,46 y 55, no tienen sentido y en general están mal formulados (usan "=" en lugar de "==") a demás terminan en ";" lo que los finaliza apenas se evalúan quitandole todo el sentido
para mi es preferible correr sobre seguro y el while de la linea 16 no lo haría != 0 sino == 1, porque si la persona marca cualquier cosa que no sea 0 se repetirá y eso no sería correcto (para mi), desde mi punto de vista debería repetirse si y solo si es 1, que es la condición de repetición... pero es decisión de cada quien eso