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

📄 xiasanjiaojuzhen.cpp

📁 下三角矩阵的算法 程序有简单的下三角矩阵的输入
💻 CPP
字号:
// 这是使用应用程序向导生成的 VC++ 
// 应用程序项目的主项目文件。

#include "stdafx.h"

#using <mscorlib.dll>

using namespace System;



#include <iostream>
using namespace std;

#define Ture 1
#define False 0
#define Ok 1
#define Error 0
#define Overflow -2

typedef int Status;
typedef int Selemtype;
typedef Selemtype  ET;



//二维下标为( i , j ),存储空间的一维下标为k,给出k与 i , j 
//的关系(1<= i, j <= n ,  0<= k < n*(n+1)/2);
ET Tok(int i,int j)
{
	if(i<1||j<1)
		return Error;
	else if(i>=j)
		return ((i-1)*i/2+j-1);
	else
		return((j-1)*j/2+i-1);
}





//输入并存储下三角矩阵;(以行序为主序)
void Input(ET a[],int &n)
{
//	cout<<"输入n:"<<endl;
//	cin>>n;
	cout<<"输入下三角矩阵的元素:"<<endl;
	for(int k=0;k<(n+1)*n/2;k++)
		cin>>a[k];

}





//读取下三角矩阵中某个元素
Status Getelem(ET a[],int i,int j, ET &e)
{
	int k;
    k=Tok(i,j);
	if(i>=j)
	{
		e=a[k];
		return Ok;
	}
	else 	
	{
		e=0;
		return Error;
	}
}






//修改下三角矩阵中某元素
Status  Change(ET a[] ,int i, int j, ET e)
{
	int k;
	k=Tok(i,j);
	if(i>=j)
	{
		a[k]=e; 
		return Ok;
	}
	else   
		return Error;
} 




//输出下三角矩阵
void Print(ET a[],int &n)
{
	int e;
	for(int i=1;i<=n;i++)
	{
		cout<<endl;
		for(int j=1;j<=n;j++)
		{
			Getelem(a,i,j,e);
			printf("%3d",e);
		}
	}
}


//读取下三角矩阵中某个元素
Status Search(ET a[],int n)
{
	int i,j,e;
	cout<<"输入你要读取元素的坐标:"<<endl;
	cout<<"输入i:";
	cin>>i;
	cout<<endl<<"输入j:";
	cin>>j;
	if(i>n||j>n)
	{
		cout<<"##你输入的i或j大于矩阵的维数,错误!!!"<<endl;
		return Error;
	}
	Getelem(a,i,j,e);
	cout<<"你查找下标为("<<i<<","<<j<<")的元素是:"<<e<<endl;
	return Ok;
}




//修改下三角矩阵中某元素
Status Change(ET a[],int n)
{
	int i,j,e;
	cout<<"输入你要改变元素的坐标:"<<endl;
	cout<<"输入i:";
	cin>>i;
	cout<<endl<<"输入j:";
	cin>>j;
	if(i<j)
	{
		cout<<"##你所输入的i,j,不是矩阵的下三角坐标,错误!!"<<endl;
		return Error;
	}
	if(i>n||j>n)
	{
		cout<<"##你输入的i或j大于矩阵的维数,错误!!!"<<endl;
		return Error;
	}
	cout<<"输入e的值:"<<endl;
	cin>>e;
	Change(a,i,j,e);
	cout<<"已成功修改!!"<<endl;
	return Ok;
}





void windows()   
{

	printf("\n             --------------------------------------------- \n");
	printf("             =                                              =\n");
	printf("             =            简单下三角矩阵的操作              =\n");            
	printf("             =                                              =\n");
	printf("             -----------------------------------------------=\n");
	printf("             =                                              =\n");
	printf("             =     1.  建立、输入并存储下三角矩阵           =\n");
	printf("             =                                              =\n");
	printf("             =     2.  读取下三角矩阵中的某个元素           =\n");
	printf("             =                                              =\n");
    printf("             =     3.  修改下三角矩阵中某元素               =\n");
	printf("             =                                              =\n");
	printf("             =     4.  输出矩阵                             =\n");
	printf("             =                                              =\n");
	printf("             =     0.  退出单链表操作                       =\n");
	printf("             =                                              =");
	printf(" \n             ---------------------------------------------\n");
}



int main()
{
	int a[100];
	static int n;
	cout<<"输入对称三角矩阵的维数n:"<<endl;
	cin>>n;
	

    int choice;
	while(1)       //  进行一个操作后又回到窗口,  是用户选择下一操作!
	{
		//system("cls");
		windows();
		printf("           欢迎简单栈的操作系统!!请输入您的选择 (0-10): ");
		cin>>choice;
		getchar();
		switch(choice)
		{
			case 1 : system("cls");   Input(a,n);               break;
			case 2 : system("cls");   Search(a,n);              break;
			case 3 : system("cls");   Change(a,n);              break;
		    case 4 : system("cls");   Print(a,n);               break;
			case 0 :                                            break;
			default:system("cls");printf("输入不正确! 请再次输入!!\n");
		}
		if(choice==0)
			break;
	}
	return 0;
}








⌨️ 快捷键说明

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