Dev - C++ - Ayuda cadena caracteres

 
Vista:
sin imagen de perfil

Ayuda cadena caracteres

Publicado por Juan (3 intervenciones) el 30/10/2017 23:51:14
Escribir un programa que codifique una secuencia de caracteres terminada en ENTER introducida desde teclado de forma que: si en la secuencia de entrada hay varios caracteres consecutivos que sean iguales, en la secuencia de salida codificada aparece ese carácter una sola vez, junto a un dígito que indica el número de ocurrencias del carácter. El dígito podrá ser un valor entre 2 y 9. Esto significa que si un carácter aparece una sola vez de forma consecutiva, el número 1 no se añade a la cadena de salida. Además, se supone que en la cadena de entrada un carácter podrá estar repetido entre 1 y 9 veces. Nunca más de 9 veces.
Ejemplo:
Secuencia de entrada: abbbccdeeeeff Secuencia de salida codificada: ab3c2de4f2
Notas para los alumnos VETERANOS:
(1) No se pueden usar arrays, cadenas (ni siquiera del tipo string) o registros. (2) No se pueden usar procedimientos y/o funciones, sólo lo visto hasta ahora.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <iostream>
using namespace std;
 
char ch,  ant=char(0);
int cont;
 
int main() {
 
    cout << "Introduzca la frase: \n";
    cin.get(ch) ;
 
    while (ch != '/n' ){
        if (ch == ant)
            cont++;
        else
        cout << ant << endl;
 
 
    }cin.get(ch);
 
 
    cout << char(ch) << endl;
 
 
    return 0;
}


Tengo algún error y no se como terminarlo.
Muchas gracias compañeros.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 417
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Ayuda cadena caracteres

Publicado por Thanatos (199 intervenciones) el 31/10/2017 06:55:35
El enunciado indica que en la entrada del programa no se repetirá un carácter más de 9 veces, por esto no hice esa verificación en el código. Si piensas que es necesario, podrías hacerlo usando el valor que contiene el contador antes de mostrarlo en pantalla; por ejemplo mostrando un mensaje de error y terminando las iteraciones del while con un break.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <iostream>
 
using namespace std;
 
int main() {
    char letraPrevia = '\0';
    char letraActual = '\0';
    int cont = 1;
 
    cout << "Ingrese la frase:\n";
 
    while (letraActual != '\n') {
        (void) cin.get(letraActual);
 
        if (letraActual == letraPrevia) {
            ++cont;
        } else if (cont > 1) {
            cout << cont;
            cont = 1;
        }
 
        if (cont == 1) {
            cout << letraActual;
        }
 
        letraPrevia = letraActual;
    }
 
    return 0;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar