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;
}
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.