Ver Mensaje Individual
  #4 (permalink)  
Antiguo 30/03/2015, 16:47
Avatar de vangodp
vangodp
 
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 10 años, 6 meses
Puntos: 38
Respuesta: Reinicio del programa

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
  1. #include <iostream>
  2. #include <windows.h>
  3. using namespace std;
  4.  
  5.  
  6. int main() {
  7.     bool exit = false;
  8.    
  9.     do {
  10.         int num1, num2;
  11.         //Escanear digitos;
  12.         cout << "Escribe dos numeros;" << endl;
  13.         cin >> num1 >> num2;
  14.        
  15.         //Ordenar de mayor a menor;
  16.         if ( num1 > num2 ) {
  17.             cout << "" << num1 << " es mayor que " << num2 << endl;
  18.         } else if ( num1 < num2 ) {
  19.             cout << "" << num1 << " es menor que " << num2 << endl;
  20.         }
  21.         //Es igual;
  22.         else cout << "" << num1 << " es igual a " << num2 << endl;
  23.        
  24.         //Repetición
  25.         bool salir = false;
  26.        
  27.         while ( !salir ) {
  28.             cout << "¿Desea usted continuar?" << endl;
  29.             string opcion;
  30.             cin >> opcion;
  31.            
  32.             if ( opcion == "si" || opcion == "SI" || opcion == "Si" || opcion == "sI" ) {
  33.                 salir = true;
  34.                 system ( "cls" );
  35.             } else if ( opcion == "no" || opcion == "NO" || opcion == "No" || opcion == "nO" ) {
  36.                 salir = true;
  37.                 exit = true;
  38.                 system ( "cls" );
  39.                 //al decir no saliremos de este bucle interno y tambien del externo
  40.             } else {
  41.                 system ( "cls" );
  42.                 cout << "No existe esta opcion. ";
  43.             }
  44.         }
  45.     } while ( !exit );
  46.    
  47.     system ( "pause" );
  48.     return 0;
  49. }
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.