cpp:Double Dimensional Array using vector
// StudentArry.cpp :
//练习案例:学生数组成绩显示方法 StudentArry
//案例描述:学生数组成绩显示方法
#include "StudentArry.h"
#include <iostream>
#include <string>
#include <vector>
#include <memory>
#include <iostream>
#include <list>
using namespace std;
/**
* @brief
* \author geovindu.
* \date 20230-4-10
*/
namespace geovindu
{
/// <summary>
/// 学生成绩
/// 数组用法
/// </summary>
void StudentArry::displayStudent()
{
//
int SubjectScore = 0;
//
int grossScore = 0;
string name[5] = { "张三","李四","王五","涂聚文","Geovin" };
const int nameCount = size(name);
string Subject[4] = { "语文","数学","英语","物理" };
const int SubjectCount = size(Subject);
string strname = "";
//前人数 后分数
int ScoreList[nameCount][SubjectCount] = { { 100,100,100,99 },{ 90,50,100,60 },{ 60,70,80,77 },{ 20,30,40,27 },{ 10,20,50,17 } };
//表标题
cout << "\t";
for (int i = 0; i < SubjectCount; i++)
{
cout << Subject[i] + "\t";
}
cout << "总分";
cout << endl;
//内容列表
for (int i = 0; i < nameCount; i++)
{
grossScore = 0;
cout << name[i] << "\t";
for (int j = 0; j < SubjectCount; j++)
{
cout << ScoreList[i][j] << "\t";
grossScore = grossScore + ScoreList[i][j];
}
cout << grossScore;
cout << endl;
}
//求总分和平均分
int sum = 0;
int ver[SubjectCount];
cout << "科总分 ";
for (int i = 0; i < SubjectCount; i++)
{
SubjectScore = 0;
for (int j = 0; j < nameCount; j++)
{
SubjectScore = SubjectScore + ScoreList[j][i];
}
sum = sum + SubjectScore;
ver[i] = SubjectScore / nameCount;
cout << SubjectScore << "\t";
}
cout << sum;
cout << endl;
//显示分均分行
cout << "平均分 ";
for (int i = 0; i < SubjectCount; i++)
{
cout << ver[i] << "\t";
}
cout << endl;
cout << "***********************************" << endl;
/*
for (int i = 0; i < 3; i++)
{
ge = 0;
for (int j = 0; j < 3; j++)
{
ge = ge + chengji[i][j];
}
strname = name[i] + to_string(ge);
cout << name[i] << "个人总分:" << ge << endl;
//cout <<"个人总分:"<< strname << endl;
yuwen = 0;
for (int j = 0; j < 3; j++)
{
yuwen = yuwen + chengji[j][i];
}
cout << cheng[i] << "课程总分数:" << yuwen << endl;
}
*/
}
/// <summary>
/// 学生成绩
/// </summary>
/// <param name="name">学生姓名列表</param>
/// <param name="Subject">课程列表</param>
/// <param name="ScoreList">分数列表</param>
void StudentArry::displayStudent(string name[5], string Subject[4], int ScoreList[5][4])
{
//
int SubjectScore = 0;
//
int grossScore = 0;
const int nameCount = sizeof(name);
const int SubjectCount = sizeof(Subject);
string strname = "";
//表标题
cout << "\t";
for (int i = 0; i < SubjectCount; i++)
{
cout << Subject[i] + "\t";
}
cout << "总分";
cout << endl;
//内容列表
for (int i = 0; i < nameCount; i++)
{
grossScore = 0;
cout << name[i] << "\t";
for (int j = 0; j < SubjectCount; j++)
{
cout << ScoreList[i][j] << "\t";
grossScore = grossScore + ScoreList[i][j];
}
cout << grossScore;
cout << endl;
}
//求总分和平均分
int sum = 0;
int ver[SubjectCount];
cout << "科总分 ";
for (int i = 0; i < SubjectCount; i++)
{
SubjectScore = 0;
for (int j = 0; j < nameCount; j++)
{
SubjectScore = SubjectScore + ScoreList[j][i];
}
sum = sum + SubjectScore;
ver[i] = SubjectScore / nameCount;
cout << SubjectScore << "\t";
}
cout << sum;
cout << endl;
//显示分均分行
cout << "平均分 ";
for (int i = 0; i < SubjectCount; i++)
{
cout << ver[i] << "\t";
}
cout << endl;
cout << "***********************************" << endl;
}
/// <summary>
/// 学生成绩
/// </summary>
/// <param name="name">学生姓名列表</param>
/// <param name="Subject">课程列表</param>
/// <param name="ScoreList">分数列表</param>
void StudentArry::displayStudentVector(vector<string> name, vector<string>Subject, vector<vector<int>> ScoreList)
{
//
int SubjectScore = 0;
//
int grossScore = 0;
const int nameCount = name.size();
const int SubjectCount = Subject.size();
//const int vCout = SubjectCount;// Subject.size();
const int geovindu= Subject.size();
string strname = "";
//表标题
cout << "\t";
for (int i = 0; i < SubjectCount; i++)
{
cout << Subject[i] + "\t";
}
cout << "总分";
cout << endl;
//内容列表
for (int i = 0; i < nameCount; i++)
{
grossScore = 0;
cout << name[i] << "\t";
for (int j = 0; j < SubjectCount; j++)
{
cout << ScoreList[i][j] << "\t";
grossScore = grossScore + ScoreList[i][j];
}
cout << grossScore;
cout << endl;
}
//求总分和平均分
int sum = 0;
const int vcout = Subject.size();
int* verScore =new int[vcout];
cout << "科总分 ";
for (int i = 0; i < SubjectCount; i++)
{
SubjectScore = 0;
for (int j = 0; j < nameCount; j++)
{
SubjectScore = SubjectScore + ScoreList[j][i];
}
sum = sum + SubjectScore;
verScore[i] = SubjectScore / nameCount;
cout << SubjectScore << "\t";
}
cout << sum;
cout << endl;
//显示分均分行
cout << "平均分 ";
for (int i = 0; i < SubjectCount; i++)
{
cout << verScore[i] << "\t";
}
cout << endl;
cout << "***********************************" << endl;
}
}
// StudentArry.h : 此文件包含 "StudentArry" 类。学生数组成绩显示方法 C++ 14
// 2023年4月9日 涂聚文 Geovin Du edit.
//(1)vec1.size() 就是”二维数组”的行数
//(2)vec1[0].size() 就是”二维数组”的列数
//vector<vector<double>> geovindu
#pragma once
#ifndef STUDENTARRY_H
#define STUDENTARRY_H
#include <iostream>
#include <string>
#include <vector>
#include <memory>
#include <iostream>
#include <string>
#include <ctime>
#include <cstdlib>
#include <list>
using namespace std;
/**
*
*/
namespace geovindu
{
/// <summary>
/// 学生数组成绩显示方法
/// </summary>
class StudentArry
{
private:
public:
void displayStudent();
/// <summary>
/// 学生成绩
/// </summary>
/// <param name="name">学生姓名列表</param>
/// <param name="Subject">课程列表</param>
/// <param name="ScoreList">分数列表</param>
void displayStudent(string name[5], string Subject[5], int ScoreList[5][4]);
/// <summary>
/// 学生成绩
/// </summary>
/// <param name="name">学生姓名列表</param>
/// <param name="Subject">课程列表</param>
/// <param name="ScoreList">分数列表</param>
void displayStudentVector(vector<string> name, vector<string>Subject, vector<vector<int>> ScoreList);
};
}
#endif
void Geovin::displayScore()
{
string name[5] = { "张三","李四","王五","涂聚文","Geovin" };
string Subject[4] = { "语文","数学","英语","物理" };
int ScoreList[5][4] = { { 100,100,100,99 },{ 90,50,100,60 },{ 60,70,80,77 },{ 20,30,40,27 },{ 10,20,50,17 } };
StudentArry arry;
//1
arry.displayStudent();
/**/
vector<string> sname;
vector<string> sbject;
int c = 0;
for (auto i : name)
{
sname.push_back(i);
//cout << i << endl;
//sname[c] = i;
c++;
}
c = 0;
for (auto i : Subject)
{
sbject.push_back(i);
//sbject[c] = i;
//cout << i << endl;
c++;
}
const int nameCount = name->size();
const int SubjectCount = Subject->size();
vector<int> w(10, 1); // w: width 即列数
vector< vector<int> > arr(9, w); // 9行10列 二维数组
//vector<vector<int>> sscore[5][4];
vector<vector<int> > sscore(nameCount, vector<int>(SubjectCount));
for (int i = 0; i < nameCount; i++)
{
for (int j = 0; j < SubjectCount; j++)
{
//cout << ScoreList[i][j] << endl;
int geovindu = ScoreList[i][j];
sscore[i][j] = geovindu;// ;
}
}
//显示
/*
for (int i = 0; i < sscore.size(); ++i) {
for (int j = 0; j < sscore[0].size(); ++j) {
cout << sscore[i][j] << " ";
}
cout << endl;
}
*/
arry.displayStudentVector(sname, sbject, sscore);
}
调用:
Geovin geovin; //成绩显示 geovin.displayScore();
输出:


哲学管理(学)人生, 文学艺术生活, 自动(计算机学)物理(学)工作, 生物(学)化学逆境, 历史(学)测绘(学)时间, 经济(学)数学金钱(理财), 心理(学)医学情绪, 诗词美容情感, 美学建筑(学)家园, 解构建构(分析)整合学习, 智商情商(IQ、EQ)运筹(学)生存.---Geovin Du(涂聚文)
浙公网安备 33010602011771号