没有合适的资源?快使用搜索试试~ 我知道了~
资源详情
资源评论
资源推荐
山东大学 软件 学院
数据结构 课程实验报告
学号:
姓名:
班级:
实验题目:矩阵
实验学时:4 小时
实验日期:2018.10.25
实验目的:
掌握矩阵结构。
硬件环境: 笔记本电脑
软件环境:Win10+Vistual Studio 2017
实验步骤与内容:
实验内容:
1、创建三对角矩阵类,采用按列映射方式,提供 store 和 retrieve 方法。
2、创建下三角矩阵类,采用按列映射方式,提供 store 和 retrieve 方法。
3、创建稀疏矩阵类,采用行主顺序把稀疏矩阵映射到一维数组中,实现稀疏矩阵的转置和两个稀
疏矩阵的加法操作。
实验步骤:
term.h
#pragma once
class Term
{
friend class sparseMatrix;
private:
int row, col;
int value;
};
tridiagonalMatrix.h
#pragma once
#include "term.h"
#include <iostream>
using namespace std;
class tridiagonalMatrix
{
public:
tridiagonalMatrix(int size = 10);
void store(int row, int column, int value);
int retrieve(int row, int column);
//矩阵输入函数
void input(istream& in, ostream& out);
//矩阵输出函数
void output(ostream& out);
//重载>>
friend istream& operator>> (istream& in, tridiagonalMatrix& matrix)
{
matrix.input(in, cout);
return in;
}
//重载<<
friend ostream& operator<< (ostream& out,tridiagonalMatrix& matrix)
{
matrix.output(out);
return out;
}
private:
int *element;//存储所有元素
int size;
};
tridiagonalMatrix.cpp
#include "tridiagonalMatrix.h"
#include <iostream>
using namespace std;
tridiagonalMatrix::tridiagonalMatrix(int size)
{
if (size < 1)
exit(EXIT_FAILURE);
element = new int[3 * size - 2];
this->size = size;
}
void tridiagonalMatrix::store(int row, int column, int value)
{
if (row < 1 || row > size || column < 1 || column > size|| (row - column) > 1 || (row - column) < -1)
exit(EXIT_FAILURE);
element[2 * column + row - 3] = value;
}
int tridiagonalMatrix::retrieve(int row, int column)
{
if (row < 1 || row > size || column < 1 || column > size|| (row - column) > 1 || (row - column) < -1)
exit(EXIT_FAILURE);
return element[2 * column + row - 3];
}
void tridiagonalMatrix::input(istream& in, ostream& out)
{
out << "请按列主顺序依次输入三对角矩阵元素,元素个数必须是" << (3 * size - 2) << "个: "
<< endl;
for (int j = 0; j < size; j++)
{
for (int i = j - 1; i <= j + 1; i++)
{
if (j == 0 && i == -1)
continue;
if (j == size - 1 && i == size)
continue;
int element;
in >> element;
store(i + 1, j + 1, element);
}
}
}
void tridiagonalMatrix::output(ostream& out)
{
for (int i = 0; i < size; i++)
{
for (int j = 0; j < size; j++)
if ((i - j) > 1 || (i - j) < -1)
out << "0\t";
else
{
out << element[2 * j + i] << "\t";
}
out << endl;
剩余15页未读,继续阅读
以墨健康道
- 粉丝: 25
- 资源: 307
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0