拉丁方阵(易语言版)

面向过程版

#include<iostream>
#include<conio.h>
using namespace std;

struct Node;
#define N 11
typedef Node* 节点针;
struct Node{
	wchar_t data;
	节点针 nextPos;
};

Node 拉丁表[N + 1];
const Node*尾哨兵 = &拉丁表[N-1];
wchar_t*大写阿拉伯数字 = L"零壹贰叁肆伍陆柒捌玖拾";//----11个

void 循环表(){
	for (int i = 0; i < N; i++){
		拉丁表[i].nextPos = &拉丁表[i + 1];
		拉丁表[i].data = 大写阿拉伯数字[i];
	}
	拉丁表[N - 1].nextPos = &拉丁表[0];
	拉丁表[N - 1].data = 大写阿拉伯数字[N - 1];
}

void 测试(){
	节点针 p = 拉丁表;

	for (int i = 0; i < 15; i++, p = p->nextPos){
		wcout << p->data;	
	}
	wcout <<endl<< p->data;
}

void 打印拉丁表(){
    节点针 p = 拉丁表;

	cout <<endl<<"拉丁方阵表生成如下:"<<endl<<endl;
	for (int i = 0; i != N; i++)
	{
		wcout << endl;
		p = p->nextPos;
		p = p->nextPos;
		p = p->nextPos;
		for (int j = 0; j != N; j++){
			wcout << p->data;
			p = p->nextPos;
		}
	}
}

int main(){
	setlocale(LC_ALL, "chs");
	循环表();
	打印拉丁表();

	return _getch();
}


面向对象

#include<iostream>
#include<conio.h>
using namespace std;

#define N 11
struct Node;
typedef Node* 节点针;

struct Node{
	wchar_t data;
	节点针 nextPos;
};

class 拉丁方阵类{
	Node *拉丁表;
	节点针 尾哨兵;
	wchar_t*大写阿拉伯数字;//----11个
	int 拉丁表边长,
		横向位移调节杆
		;
	void
		循环表(),
		测试(),
		打印拉丁表()
		;
public:
	拉丁方阵类(int , int );
};

拉丁方阵类::拉丁方阵类(int 拉丁边长 = N, int 调节杆 = 3){
	拉丁表边长 = 拉丁边长;
	横向位移调节杆 = 调节杆;
	拉丁表 = new Node[拉丁边长];
	尾哨兵 = 拉丁表+拉丁边长 - 1;
	大写阿拉伯数字 = L"零壹贰叁肆伍陆柒捌玖拾";

	if (!拉丁表){
		cout << "new错误!";
		exit(1);
	}
		
	循环表();
	//测试();
	打印拉丁表();
}

void 拉丁方阵类::循环表(){
	int i = 0;

	while (拉丁表 != 尾哨兵){
		拉丁表[0].nextPos = 拉丁表 + 1;
		拉丁表[0].data = 大写阿拉伯数字[i++];
		拉丁表++;
	}
	拉丁表->nextPos = &拉丁表[-拉丁表边长 + 1];
	拉丁表->data = 大写阿拉伯数字[拉丁表边长 - 1];
}

void 拉丁方阵类::测试(){
	节点针 p = 拉丁表;

	for (int i = 0; i < 15; i++, p = p->nextPos){
		wcout << p->data;
	}
	wcout << endl << p->data;
}

void 拉丁方阵类::打印拉丁表(){
	节点针 p = 拉丁表;

	//cout << "\n" << "拉丁方阵表生成如下:";
	for (int i = 0; i != 拉丁表边长; i++)
	{
		wcout << endl;
		for (int i = 0; i != 横向位移调节杆;i++)
		p = p->nextPos;
		for (int j = 0; j != 拉丁表边长; j++){
			wcout << p->data;
			p = p->nextPos;
		}
	}
	cout << endl;
}

int main(){
	setlocale(LC_ALL, "chs");
	
	拉丁方阵类 
		A,
		B(8, 5),
		C(5,2)
		;

	return _getch();
}

    原文作者:拉丁方阵问题
    原文地址: https://blog.csdn.net/walsfy168/article/details/48682711
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞