Mooc北大郭炜 程序与算法(一) 056病人排队习题
问题:在dev上运行且输出正确,但是在OpenJudge上提交就显示Runtime Error
#include
#include
using namespace std;
int main(){
int n;
cin>>n;
string name[n];
int age[n];
for(int i=0;i>name[i]>>age[i];
}
int count=0;
//首先要将老年人往前提,若是选择排序的话会破化原有的内在顺序,因此遵循冒泡排序
for(int i=0;iif(age[i]>=60){
// cout<<"i="<for(int k=i;k>=count;k--){
string n1=name[k];
name[k]=name[k-1];
name[k-1]=n1;
int a1=age[k];
age[k]=age[k-1];
age[k-1]=a1;
}
count++;
}
}
// for(int i=0;iname[i]<for(int i=0;ifor(int j=i;j-1-i;j++){
if(age[j]1]){
string n1=name[j];
name[j]=name[j+1];
name[j+1]=n1;
int a1=age[j];
age[j]=age[j+1];
age[j+1]=a1;
}
}
}
for(int i=0;iname[i]<return 0;
}
#include <iostream>
using namespace std;
#define intMax 101
#define charMax 11
//定义病人的结构体
typedef struct patient{
char name[charMax];
int age;
}patient;
patient p[intMax];//声明一个数组存放病人
int n;//病人个数
void input(void);
void sort(void);
void output(void);
int main(){
input();
sort();
output();
return 0;
}
//输入
void input(){
cin >> n;
for(int i = 0;i < n; i++){
cin >> p[i].name >> p[i].age;
}
}
//病人排序
void sort(){
patient temp ;
int count = 0;//交换的老年人的个数
//1.先把老人都提到前面 (结果:老人和非老人各自之间都是按登记的顺序)
for(int i = 0;i < n;i++){
if(p[i].age>=60){
for(int j = i;j>count;j--){
temp = p[j];
p[j] = p[j-1];
p[j-1] = temp;
}
count++;
}
}
// cout << "count = " <<count<<endl;
//2.再把前面的老人按年龄排序
for(int i = 0;i < count ;i++){
for(int j = 0;j<count - 1 - i;j++){
if(p[j].age < p[j+1].age){
temp = p[j];
p[j] = p[j+1];
p[j+1] = temp;
}
}
}
}
//输出
void output(){
for(int i = 0;i < n;i++){
cout << p[i].name << endl;
}
}
不知道你这个问题是否已经解决, 如果还没有解决的话: