Ir ao conteúdo

C++ Nao consigo decodificar código RN;


Ir à solução Resolvido por Ansi C,

Posts recomendados

Postado

Faça um programa que leia uma sequência de bits provenientes de um código Rn, que podem ter sido corrompidos por ruído e recupere a informação original.

Entrada

A entrada consiste de duas linhas:

- a primeira linha contém um inteiro N (N<=10), que corresponde ao número de repetições de cada bit;

- a segunda linha contém os bits a serem processados, e finaliza com o FLAG  -1.

Saída

Na saída, o programa deve mostrar a informação recuperada

Exemplo de entrada    Exemplo de saída   

3
0 1 0 1 1 0 0 1 0

 

#include <iostream>
#include <iomanip>

using namespace std;

int main(int argc, char** argv)
{
	int n, x, z;
	char bit[10];

	do
	{
		cout << " Entre com numero de codigo RN : " ;
		cin >> n;
	}
	while(n > 10);

	cout << " Digite numero do bits : " ;
	cin >> bit[n];

	while(bit[n] != -1)
	{
		x = 0;
		z = 0;

		for(int i = 0 ; i < n - 1; i++)
		{
			if(bit[n] == 0)
				x++;
			else
			{
				z++;
			}
		}

		cout << " Digite numero do bits : " ;
		cin >> bit[n];

	}

	return 0;
}

 

Postado

@emanuelrichard Bom Dia.

 

Você consegue sintetizar a tarefa do problema para mim. Existem essas etapas (processos) na tarefa:

  1. Ler N: Número não negativo <= 10.
  2. Ler BIT: Sequência (indeterminada) de dígitos binários.
  3. Exibir N * BIT [ i ]: Sequência (indeterminada) de bit em BIT por N.

 

É isso?

O código não me ficou claro também.

  • Curtir 1
Postado

@Mauro Britivaldo Isso mesmo ... o exemplo da saida nao saiu ali , vou escrever de novo ...

 

Faça um programa que leia uma sequência de bits provenientes de um código Rn, que podem ter sido corrompidos por ruído e recupere a informação original.

Entrada

A entrada consiste de duas linhas:

- a primeira linha contém um inteiro N (N<=10), que corresponde ao número de repetições de cada bit;

- a segunda linha contém os bits a serem processados, e finaliza com o FLAG  -1.

Saída

Na saída, o programa deve mostrar a informação recuperada

Exemplo de entrada    Exemplo de saída   

3                                    0 1 0
0 1 0 1 1 0 0 1 0 

 

E aqui tem um video pra tirar sua duvida 

 

Postado

@emanuelrichard Ótimo.

 

Retificando: O número N também representa o subconjunto de bits a se examinar, pois no exato número N aconteceu o ruído na mensagem recepção da mensagem. A saída ajudou, e o vídeo mais ainda.

 

Com disse anteriormente N é o número de repetições na mensagem por Bit, e também os subgrupos para recuperação da mensagem. Se dividir o problema em 3 tarefas teremos: entrada, processamento e saída.

 

O processamento é entender o vetor mensagem codificada Rn em sub-vetores de tamanho n em que cada sub-vetor tem a mensagem original se tiraramos o ruído.

Então você pode por exemplo:

 

  1. Copiar os n primeiros elementos do vetor Rn para segundo sub-vetor auxiliar de tamanho n.
  2. Examinar o vetor auxiliar e determinar qual é o maior número de 0s ou de 1s.
  3. Salvar no vetor mensagem corrigida Mn em sua primeira posição 0 ou 1 que depende do resultado na etapa 2.
  4. Repetir as etapas 1...3 do processo até que não resta mais sub-vetores para se examinar em Rn. E fácil concluir que o número de sub-vetores em Rn é igual ao número de elementos Rn / n. Ainda se diz que; existe proporção de 1 pra n entre os vetores Mn e Rn, ou seja, cada elemento de Mn depende de n elementos de Rn.

 

Consegue implementar essa parte?

Postado

@Mauro Britivaldo Ta dando muito certo nao cara ...

#include <iostream>
#include <iomanip>

using namespace std;

int main(int argc, char** argv)
{
	int n, x = 0, z = 0, j = 0, i = 0;
	int bit[10], b[10];

	do
	{
		cout << " Entre com numero de codigo RN : " ;
		cin >> n;
	}
	while(n > 10);

	cout << "Entre com os bits : " << endl;
	cin >> bit[j];

	while(bit[j] != -1)
	{

		b[i] = bit[j];

		if(x == 3)
			b[i] = 0;
		else if(z == 3)
			b[i] = 1;
		i++;

		cout << "Entre com os bits : " << endl;
		cin >> bit[j];

	}

	for (int i = 0 ; i < n; i ++)
	{
		if(b[i] == 0)
			x++;
		else if (b[i] == 1)
			z++;
			}


	for (int i = 0 ; i < n ; i++)
	{
		if(x == 3)
		{
			b[i] = 0;


		}
		else if(z == 3)
			b[i] = 1;
	}

	for(int i = 0; i < n; i++)
	{
		cout << " E : " << b[i];
	}

	return 0;
}

 

  • Solução
Postado

@emanuelrichard Bom dia.

 

 

eryO9szimsIt-d9_GLUgIFF2_mJ1xUph3SuwQnDe

Se uma rotina é muito complexa então pense nas rotinas menores. 

Em 30/10/2019 às 09:24, emanuelrichard disse:

@Mauro Britivaldo Ta dando muito certo nao cara ...

 

O rotina (em 4 etapas) da maneira como proponho fica complexa mesmo, fica mais complexa ainda quando tenta-se de uma só vez implementa-la. Para ter sucesso nesse caso é necessário dividir tudo em 3 partes e trabalhar com suas etapas individualmente. Não funcionou pra você.

 

Vamos tentar do seu jeito! Entada+Processamento+Saída tudo de uma só vez. Então...

 

 

1# A entrada do receber o Rn, a entrada não determinada de bits, o que sabemos é que a entradas param com -1. Seria que tamanho esse vetor? Como armazenar essas informações de bits sem largura fixa em C++?

 

Exemplo.

#include <iostream>
#include <string>

int main(void)
{
        std::string bits  ("");
        std::string plusbits ("");

        for (;;) {
                std::cin >>(bits);

                if (bits == "-1") break;

                plusbits = plusbits + bits;
        }
        std::cout <<(plusbits)<< std::endl;
        return 0;
}

Experimente entrar: 101 101 101 101 -1

 

 

 

 

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!