拉丁方阵(易语言版)

本文介绍了使用易语言实现拉丁方阵的方法,包括面向过程的编程思路。同时提及了面向对象的概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

面向过程版

#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();
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值