⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 13折线.cpp

📁 用C++实现通信原理中相当重要的A律13折线编码
💻 CPP
字号:
#include "math.h"
#include <iostream>
using namespace std;

int result[8];
int init[3][8];
int base;
int signal;

void Dowith();
void innerdeal();
void output();

void INIT()
{
	int i;
	for(i = 0; i < 8; i++)
	{
		init[0][i] = i + 1;
		init[1][i] = pow(2 , i + 3);
	}
	init[1][0] = 0;
	init[2][0] = 1;
	init[2][1] = 1;

	for(int j = 3; j <= 8; j++)
	{
		init[2][j - 1] = pow(2 , j - 2);
	}
}

int main()
{
	cout<<"请输入样值信号的值:";
	cin>>signal;
	INIT();
	Dowith();
	innerdeal();
	cout<<"编码结果为:"<<endl;
	output();
	return 0;
}

void Dowith()
{
	if(signal > 0)
	{
		result[0] = 1;
	}
	else
	{
		result[0] = 0;
		signal = 0 - signal;
	}
	
	if(signal > 128)
	{
		result[1] = 1;
		if(signal > 512)
		{
			result[2] = 1;
			if(signal > 1024)
			{
				result[3] = 1;
			}
			else
			{
				result[3] = 0;
			}
		}
		else
		{
			result[2] = 0;
			if(signal > 256)
			{
				result[3] = 1;
			}
			else
			{
				result[3] = 0;
			}	
		}
	}
	else
	{
		result[1] = 0;
		if(signal > 32)
		{
			result[2] = 1;
			if(signal > 64)
			{
				result[3] = 1;
			}
			else
			{
				result[3] = 0;
			}
		}
		else
		{
			result[2] = 0;
			if(signal > 16)
			{
				result[3] = 1;
			}
			else
			{
				result[3] = 0;
			}
		}
	}

	base = 4 * result[1] + 2 * result[2] + 1 * result[3] + 1;
}
    
void innerdeal()
{
	int temp;
	temp = init[1][base - 1] + 8 * init[2][base - 1];
	if(signal >temp)
	{
		result[4] = 1;
	}
	else
	{
		result[4] = 0;
	}

	temp = init[1][base - 1] + 8 * init[2][base - 1] * result[4] + 4 * init[2][base - 1];
	if(signal > temp)
	{
		result[5] = 1;
	}
	else
	{
		result[5] = 0;
	}

	temp = init[1][base - 1] + 8 * init[2][base - 1] * result[4] 
		   + 4 * init[2][base - 1] * result[5] + 2 * init[2][base - 1];
	if(signal > temp)
	{
		result[6] = 1;
	}
	else
	{
		result[6] = 0;
	}

	temp = init[1][base - 1] + 8 * init[2][base - 1] * result[4] 
		   + 4 * init[2][base - 1] * result[5]
		   + 2 * init[2][base - 1] * result[6] + init[2][base - 1];
	if(signal > temp)
	{
		result[7] = 1;
	}
	else
	{
		result[7] = 0;
	}
}

void output()
{
	for(int i = 0; i < 8; i++)
	{
		cout<<result[i];
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -