Ver Mensaje Individual
  #2 (permalink)  
Antiguo 01/11/2014, 07:50
Avatar de leosansan
leosansan
 
Fecha de Ingreso: mayo-2012
Ubicación: GRAN CANARIA
Mensajes: 194
Antigüedad: 11 años, 10 meses
Puntos: 49
Respuesta: Crear programa que use el método RLE

Cita:
Iniciado por Frnxu Ver Mensaje
Hola, buenas!

Os escribo a ver si me dais un poco de luz sobre la resolución de este ejercicio que me han propuesto en la facultad. Sé que es relativamente sencillo, pero será que hoy estoy más espeso de lo normal, y no consigo hacerlo sin usar temario más avanzado (cosa que no se permite).
Dice así:

Realizar un programa que lea una secuencia de números naturales terminada con un número negativo y la codifique mediante el método RLE.
Por ejemplo:
Entrada: 1 1 1 2 3 3 4 5 5 5 6 -1
Salida: 3 1 1 2 2 3 1 4 3 5 1 6


.................................................. ...

El problema de esta aproximación es que no trabaja del todo bien y muestra por pantalla cada vez que se cambia de número cuando debería dar la salida que he indicado antes. Con el uso de arrays y demás sería trivial pero no puedo usar nada de eso.

Si a alguien se le ocurre algo..
Muchas gracias!
Creo que esto te funcionará:

Código C++:
Ver original
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. int main ( void ) {
  6.    int i , numero, numero_2, suma ;
  7.    cout << "Introduzca numeros ( -1 para terminar ): \n";
  8.    cin >> numero;
  9.     while ( numero != -1 ){
  10.         suma = 1 ;
  11.         cin >> numero_2 ;
  12.         if ( numero_2 == -1 )
  13.           break ;      
  14.      
  15.         while ( numero_2 == numero ){
  16.             suma ++;
  17.             cin >> numero_2;
  18.             if ( numero_2 == -1 )
  19.               return 2 ;
  20.         }
  21.     if ( suma == 1 )
  22.        cout << " " << numero << endl ;
  23.     else if ( suma > 1 ) {
  24.       cout << " " << suma << " "  ;
  25.       for ( i = 0 ; i < suma - 1 ; i++ )  
  26.         cout << " " << numero << " "  ;
  27.     }
  28.  
  29.     cout << endl ;
  30.     numero = numero_2;
  31.    }
  32.    return 0 ;}

¡¡¡Saluditos!!!


Última edición por leosansan; 01/11/2014 a las 07:57