编写一个学生和教师数据输入和显示程序

【5.18】编写一个学生和教师数据输入和显示程序,学生数据有编号、姓名、班别和成绩,教师数据有编号、姓名、职称和部门。要求将编号、姓名输入和显示设计成一个类person,并将学生数据操作类student和教师数据操作类teacher的基类。
代码:

#include<iostream>    
using namespace std;
class person {
public:
    void input()
{ cout<<" 编号:";  cin>>no;
      cout<<" 姓名: "; cin>>name;
}
    void display()
{ cout<<" 编号:"<<no<<endl;
      cout<<" 姓名: "<<name<<endl;
}
private:
   int no;
   char name[10];
};
class student:public person{
  public:
    void input()
	{ person::input();
      cout<<" 班号:"; 
cin>>depart;
      cout<<" 成绩:"; 
cin>>degree;
}
    void display()
    { person::disp();
      cout<<" 班号:"<<depart<<endl;
      cout<<" 成绩:"<<degree<<endl;
    }
private:
     char depart;
     int degree;
};
class teacher:public person{
private:
    char prof;
    char depart;
public:
    void input()
{ person::input();
cout<<" 职称:"; 
cin>>prof;
cout<<" 部门:";
cin>>depart;
}
   void display()
{ person::display();
cout<<" 职称:"<<prof<<endl;
cout<<" 部门:"<<depart<<endl;
}
};
int  main()
{ student s1;
teacher t1;
cout<<" 输入一个学生数据:\n";
s1.input();
cout<<" 输入一个教师数据:\n"; 
t1.input();
cout<<" 显示一个学生数据:\n"; 
s1.display();
cout<<" 显示一个教师数据:\n"; 
t1.display();
return 0;
}

在MATLAB中,你可以创建一个名为`cluster_measures`的函数,用于计算DBI (Davies-Bouldin Index)、CHI (Calinski-Harabasz Index)、DI (Dunn Index)和轮廓系数的值。这些指标常用于评估聚类效果的质量。以下是该函数的一个简单实现: ```matlab function [dbi, chi, di, silhouette] = cluster_measures(data, labels) % 数据集矩阵 data 和聚类结果索引向量 labels 作为输入 % 确保输入合法 if ~isnumeric(data) || size(data, 2) ~= size(labels, 1) error('Invalid input! Data should be a matrix and labels should match the number of rows in data.'); end % 轮廓系数(Silhouette Coefficient) silhouette_values = silhouette(data, labels); silhouette = mean(silhouette_values); % 计算DBI (Davies-Bouldin Index) n_clusters = length(unique(labels)); dbi = zeros(1, n_clusters); for i = 1:n_clusters centroids = mean(data(labels == i), 1); distances = pdist2(centroids, data(labels == i)); % 计算簇内距离 inter_class_distances = max(distances, [], 2); % 最大对角线距离 intra_class_distances = min(distances, [], 2); % 最小对角线距离 dbi(i) = mean(inter_class_distances) / mean(intra_class_distances); end dbi = -sum(dbi) / n_clusters; % 取负数因为通常越低越好 % 计算CHI (Calinski-Harabasz Index) chi = (n_clusters * trace(var(data, 0))) / sum((length(labels) - n_clusters) * var(data(labels == labels(1)), 0)); % 计算DI (Dunn Index) di = Inf; for i = 1:n_clusters [min_dist, min_idx] = min(pdist2(data(labels == i))); for j = i+1:n_clusters [max_dist, max_idx] = max(pdist2(data(labels == i), data(labels == j))); if max_dist > min_dist di = min(di, min_dist / max_dist); end end end % 返回结果 [~, ind] = sort([dbi, chi, di], 'descend'); disp(['Cluster Measures: DBI: ', num2str(dbi(ind)), ', CHI: ', num2str(chi), ', DI: ', num2str(di), ', Silhouette: ', num2str(silhouette)]); end ``` 在这个函数中,我们首先检查输入的有效性,然后依次计算每个指标。最后,我们将各项指标按照从高到低排序并显示结果。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值