将数组从最低到最大排序

时间:2014-04-18 03:26:22

标签: c++ arrays sorting

所以我在我的第一个编程课程中,并且在完成任务时遇到了一些麻烦。分配是制作一个代码,询问用户六个整数和六个字母,并将它们存储在数组中。然后打印条形图,数据从最低到最高排序。这是我遇到麻烦的部分。我把它命名为安排功能,对我而言,一切看起来都是正确的。我只是希望有人可以告诉我在交换最低整数时出错了。对代码的任何其他评论将不胜感激!谢谢(我也不能使用库中的排序函数或指针)

#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;
}
}

1 个答案:

答案 0 :(得分:0)

如果您有安排和交换的单独功能,那么可视化和实施可能会更容易。

void arrangeNum(int num[])
void arrangeChar(char char[])
void swapInt(int x, int y)
void swapChar(char x, char y)

然后排列函数将只是泡沫排序。但是在调用swap时你也会失去范围,因此他们实际上并没有做任何事情。在Arrange函数中交换它们会更容易。