Los errores son:
-No puedes guardar mas de una letra en un char 'si' es ilegal, legal es 's' por ejemplo.
-Lo mismo pasa con switch. No puedes poner 'Si' solo puedes poner 'a' o un entero, float etc switch no compara strings, para eso use if que va tener mismo efecto.
Una forma de arreglarlo seria:
Código C++:
Ver original#include <iostream>
#include <windows.h>
using namespace std;
int main() {
do {
int num1, num2;
//Escanear digitos;
cout << "Escribe dos numeros;" << endl;
cin >> num1 >> num2;
//Ordenar de mayor a menor;
if ( num1 > num2 ) {
cout << "" << num1 << " es mayor que " << num2 << endl;
} else if ( num1 < num2 ) {
cout << "" << num1 << " es menor que " << num2 << endl;
}
//Es igual;
else cout << "" << num1 << " es igual a " << num2 << endl;
//Repetición
bool salir = false;
while ( !salir ) {
cout << "¿Desea usted continuar?" << endl;
string opcion;
cin >> opcion;
if ( opcion == "si" || opcion == "SI" || opcion == "Si" || opcion == "sI" ) {
salir = true;
} else if ( opcion == "no" || opcion == "NO" || opcion == "No" || opcion == "nO" ) {
salir = true;
//al decir no saliremos de este bucle interno y tambien del externo
} else {
cout << "No existe esta opcion. ";
}
}
return 0;
}
Hay muchas formas de salir. Esta no es la mejor ni la más efectiva, pero cumple lo que propone.
PD: Sobre lo de no compilar es solo quitar el archivo ese header stdafx, ese archivo es de visual studio y en codeblocks no hace falta.
Añadir cstdlib o windows.h para el system("cls"); y el system("pause");. Lo mejor seria no usar nunca system ya que no es una solución portable.