需要帮助显示排序的数组值

Posted

技术标签:

【中文标题】需要帮助显示排序的数组值【英文标题】:Need help displaying sorted array values 【发布时间】:2018-02-04 20:42:58 【问题描述】:

我的任务是创建一个程序,该程序从用户那里获取姓名和分数的输入,然后使用数组按降序对分数进行排序。我相信除了让我的程序在分数排序后实际显示分数之外,我已经解决了所有问题。

我没有收到错误消息,但是当显示分数时,分数会无休止地生成,所有值都为零。他们应该在 x 个分数后停止生成。

非常感谢。

#include<iostream>
#include<string>

using namespace std;

void initializeArray(string*, int*, int);
void sortData(string*, int*, int);
void displayData(const string*, const int*, int);

int main()

    int SIZE;
    string *name;
    name = new string[SIZE];
    int *score;
    score = new int[SIZE];
      initializeArray(name, score, SIZE);
      sortData(name, score, SIZE);
      displayData(name, score, SIZE);

void initializeArray(string names[], int scores[], int size)

    cout<<"how many scores will you enter? ";
    cin>> size;
    for(int count = 0; count<size; count++)
    
        cout<<"name number "<<count+1<<": ";
        cin>> names[size];
        cout<<"score number "<<count+1<<": ";
        cin>> *(scores + count);
    

void sortData(string names[], int scores[], int size)


    int temp;
    bool swap;

    do
    
        swap = false;
        for(int count=0; count < (size-1); count++)  
        
            if(scores[count] > scores[count+1])
            
                temp = scores[count];
                scores[count] = scores[count+1];
                scores[count+1] = temp;
                swap = true;
            
        
    while(swap);//while there is a bool swap

void displayData(const string names[], const int scores[], int size)

    for(int count = 0; count<size; count++)  
    
        cout<<"name "<<count<<": "<< scores[count]<<endl;
        cout<<endl;
        //cout<<"score "<<count+1<<": "<< *(scores + count)<<endl;
    

【问题讨论】:

string *name; 你是认真的吗?使用std::vector&lt;std::string&gt; 即可完成。 如果输入的sizeSIZE 大,你考虑过吗? 【参考方案1】:
void initializeArray(string names[], int scores[], int size)

    cout<<"how many scores will you enter? ";
    cin>> size;
    ...

这里至少有一个问题。 size 变量是 initializeArray 的本地变量。用户输入的值永远不会在此函数之外看到。专门调用这个函数不会改变main中SIZE的值。

如果您希望输入的尺寸在其余代码中可见,您需要通过引用传递size

void initializeArray(string names[], int scores[], int& size)

    cout<<"how many scores will you enter? ";
    cin>> size;
    ...

额外的&amp; 至关重要。

【讨论】:

以上是关于需要帮助显示排序的数组值的主要内容,如果未能解决你的问题,请参考以下文章

我需要帮助以这种特殊方式根据频率对 java 中的数组进行排序

需要帮助在 perl 中对数组进行排序

Ruby 按布尔值和数字排序

需要帮助将firebase中的数据转换为string []数组。尝试了所有可用的方法,但坚持只获取最后一个值

按字母顺序对 NSDictionary 值进行排序

对数组进行排序,以便空值始终位于最后