es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cambiar un grupo de números a letras correspondientes.

Hay cinco tipos de codificación de bits: 11, 10, 01, 001, 000. El mensaje correspondiente para cada codificación de bits es:

11 -> A
10 -> B
01 -> C
001 -> D
000 -> E

El resultado de compilación se verá así:
Ingresa una secuencia de bits: 01100001100110
CBEADB

He escrito esto, pero no funciona.

cpp
#include <iostream>
#include <string>
using namespace std;
int main()
{
int A, B, C, D, E;
string code;
cout << "Ingresa una secuencia de bits: ";
cin >> code;
int i = 0;
while (i < code.length())
{
if (code[i] == '1' && code[i + 1] == '1')
{
cout << 'A';
i += 2;
}
else if (code[i] == '1' && code[i + 1] == '0')
{
cout << 'B';
i += 2;
}
else if (code[i] == '0' && code[i + 1] == '1')
{
cout << 'C';
i += 2;
}
else if (code[i] == '0' && code[i + 1] == '0' && code[i + 2] == '1')
{
cout << 'D';
i += 3;
}
else if (code[i] == '0' && code[i + 1] == '0' && code[i + 2] == '0')
{
cout << 'E';
i += 3;
}
}
cout << endl;
return 0;
}

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Hay un error lógico en el código. En las sentencias if, la condición que comprueba si un dígito es igual a 1 o 0 debería actualizarse para comprobar si es igual al carácter ‘1’ o ‘0’, ya que la entrada es una cadena de texto. Una versión corregida del código es:

    “`c++
    #include
    #include
    using namespace std;

    int main()
    {
    string codigo;
    cout << “Introduzca una secuencia de bits: “;
    cin >> codigo;
    int i = 0;
    while (i < codigo.length())
    {
    if(codigo[i] == ‘1’ && codigo[i + 1] == ‘1’)
    {
    cout << ‘A’;
    i += 2;
    }
    else if(codigo[i] == ‘1’ && codigo[i + 1] == ‘0’)
    {
    cout << ‘B’;
    i += 2;
    }
    else if(codigo[i] == ‘0’ && codigo[i + 1] == ‘1’)
    {
    cout << ‘C’;
    i += 2;
    }
    else if(codigo[i] == ‘0’ && codigo[i + 1] == ‘0’ && codigo[i + 2] == ‘1’)
    {
    cout << ‘D’;
    i += 3;
    }
    else if(codigo[i] == ‘0’ && codigo[i + 1] == ‘0’ && codigo[i + 2] == ‘0’)
    {
    cout << ‘E’;
    i += 3;
    }
    }
    cout << endl;
    return 0;
    }
    “`

    Este código debería funcionar y producir la salida esperada.

Comments are closed.