所以我在我的第一个编程课程中,并且在完成任务时遇到了一些麻烦。分配是制作一个代码,询问用户六个整数和六个字母,并将它们存储在数组中。然后打印条形图,数据从最低到最高排序。这是我遇到麻烦的部分。我把它命名为安排功能,对我而言,一切看起来都是正确的。我只是希望有人可以告诉我在交换最低整数时出错了。对代码的任何其他评论将不胜感激!谢谢(我也不能使用库中的排序函数或指针)
#include <iostream>
using namespace std;
void Arrange(int num[],int order[],char let[],char letOrder[],int cap);
void Swap(int order[],char let[],int a,int b);
void BuildGraph(int number[],char letter[],int max);
int getMax(int number[]);
int main(){
int Number[6];
char Letter[6];
int Order[6];
char LetterOrder[6];
int max;
cout<<"Please Enter 6 Integers: "; //gets 6 integers
for(int i=0;i<6;i++){
cout<<"Ineteger # "<<i+1<<" = ";
cin>>Number[i];
cout<<endl;
}
cout<<"Please Enter 6 Characters: "; //gets 6 characters
for(int i=0;i<6;i++){
cout<<"Enter a character here: ";
cin>>Letter[i];
cout<<endl;
}
max= getMax(Number);
BuildGraph(Number,Letter,max);
Arrange(Number,Order,Letter,LetterOrder,max);
BuildGraph(Order,LetterOrder,max);
return 0;
}
int getMax(int number[]){
int max=number[0];
for(int i=0;i<6;i++){
if(max<number[i]) max=number[i];
}
return max;
}
void Arrange(int num[],int order[],char let[],char letOrder[],int cap){
int i,n;
order=num;
letOrder=let;
for(i=0;i<5;i++){
for(n=0;n<6;n++){
if(order[i]>order[n]){
Swap(order,letOrder,i,n);
}
}
}
cout<<order[4];
}
void Swap(int order[],char let[],int a,int b){
int temp1=order[b];
order[b]=order[a];
order[a]=temp1;
int temp2=let[b];
let[b]=let[a];
let [a]=temp2;
}
void BuildGraph(int number[],char letter[],int max){
cout<<"Bar Chart"<<endl;
for(int row=max;row>=1;row--){
for(int col=0;col<6;col++){
if(row<=number[col]) cout<<letter[col]<<" ";
else cout<<" ";
}
cout<<endl;
}
}
答案 0 :(得分:0)
如果您有安排和交换的单独功能,那么可视化和实施可能会更容易。
void arrangeNum(int num[])
void arrangeChar(char char[])
void swapInt(int x, int y)
void swapChar(char x, char y)
然后排列函数将只是泡沫排序。但是在调用swap时你也会失去范围,因此他们实际上并没有做任何事情。在Arrange函数中交换它们会更容易。