我的C 程序不起作用

My C++ program is not working ...just got stuck in this dont know what to do

本文关键字:不起作用 程序 我的      更新时间:2023-10-16

我想从用户中获取值并想对其进行排序...所以我在字符串数组中的两个数组中取值,另一个在int array中...如果我排序字符串数组的排序很好。.我无法相应地对int数组进行排序。...但是它仍然无法正常工作...我希望你们能帮助

所以我搜索了NET,并尝试使用STL

中的对功能
void sortItems(char array[][10],int y[],int n){
    pair<char,int>pairt[n];
    for (int i = 0; i < n; i++)  
    { 
        pairt[i].first = array[i][10]; 
        pairt[i].second = y[i]; 
    } 
    char t[20];
    int i,j,k,p=1;
    for(i=1; i<=n; i++)
    {
        for(j=1; j<11; j++)
        {
            if(strcmp(pairt[j-1], pairt[j])>0)
            {
                strcpy(t, pairt[j-1]);                          
                strcpy(pairt[j-1], pairt[j]);               
                strcpy(pairt[j], t);
                p=i;
            }
        }
    }
    std::cout<<"Dokemon in alphabetical order : n";
    for(i=1; i<=n; i++)
    {
        std::cout<<array[i]<<endl;
    }
}

[error]不能将'std :: pair'转换为'const char*'for参数'1'到'int strcmp(const char*,const char*('

m获得这种类型的4个错误

这是一个完整的解决方案。我使用了字符串和数字的临时向量,但是您可以将它们作为参数传递。以下代码使用C 11功能:

#include <iostream>
#include <vector>
#include <string>
using namespace std;
#include <algorithm>
void main()
{
    auto nums = vector < int > {1, 2, 3, 4, 5};
    auto words = vector < string > {"hello", "world", "apples", "oranges", "bananas"}; 
    // collect into pairs
    using MyPair = pair<string, int>;
    vector<MyPair> pairs;
    for (size_t i = 0; i < nums.size(); i++) pairs.push_back(make_pair(words[i], nums[i]));
    // sort in place the pairs according to the words 
    std::sort(pairs.begin(), pairs.end(), [](MyPair p1, MyPair p2) {return p1.first < p2.first; });
    // re-write original vectors
    for (size_t i = 0; i < nums.size(); i++) {
        nums[i] = pairs[i].second;
        words[i] = pairs[i].first;
    }
    // now print and check
    for (size_t i = 0; i < nums.size(); i++) {
        cout << words[i] << ", " << nums[i] << endl;
    }
}

首先,我创建两个向量。接下来,我将它们收集成对。为此,我将一个别名用于一对代码和我也不使用合格的名称空间,除了算法库(。另外,我应该在匿名函数中使用const pair &,但是在这种情况下,我对简短代码的重量更大。

(顺便说一句,C 14甚至会让您使用auto p1, auto p2。但是我使用了Visual Studio 2013不支持它(这就是为什么我可以将main()称为CC_3。G 不会让您摆脱困境。..((

随后出现分类功能,具有lambda(或匿名(函数,该功能在每2对的字符串之间进行比较。

最终我将成对分配给两个向量。我希望这可以更好地了解分类对的方法,并且通常使用C 。