排序算法问题(购买商品)(崩溃)

时间:2018-09-30 21:28:52

标签: c++ algorithm sorting console-application

我对排序算法有一点点复杂的问题。 而且我的程序不停崩溃(对不起,我英语不好。)计划目标 是从预算中购买最昂贵的商品,然后将每个商品排序到列表中,但是,正如您所看到的,我对此很反感,并导致程序崩溃(再次对不起,很粗鲁)。

#include <iostream>
using namespace std;

int main()
{
double pare; //budget
int n; //numbers of articles
cin>>pare>>n;

string kod[n];//name of article

bool check[n]; //checker

double cena[n]; //price

int m,j; //max and extend for him(j)
m=cena[1];
j=0;

 for(int b = 0; b<n;b++){ //input
      cin>>cena[b];
}


for(int x = 0; x<n;n++){
    if(cena[x]==pare){
        pare-=cena[x];

           check[x] = true;
         }else if(cena[x]>pare){
             check[x] = false;

         }else if(cena[x] < pare){
                check[x] = true;
         }

for(int i2 = 0;i2<n;i2++){
    if(cena[i2] == true){
        if(m<cena[i2]){
            m=cena[i2];
            j=m;
        }
    }
}
 pare-=j;

}

 for(int i3 = 0; i3<n;i3++){   //output
     if(check[i3] == true){
        cout<<kod[i3]<< " " << cena[i3]<<endl;
    }
 }
 if(pare>0){
    cout<<pare<<endl;
 }




return 0;
}

对不起,如果我有什么想念的。

1 个答案:

答案 0 :(得分:-1)

 hello I'm not sure if I understood your code or not,
 but it supposed to be something like this 

 #include <iostream>
 //#include <string>
 #include <vector>
 using namespace std;

        int main(){

            double pare; //budget
            int n; //numbers of articles

            cin >> pare >> n;

            vector<string> kod(n); // name of article

            vector<bool> check(n); // checker

            vector<double> cena(n); // price

            for(int i = 0; i < n; i++){ //initilize
                kod[i] = "";
                check[i] = false;
                cena[i] = 0.0;
            }

            for(int b = 0; b < n; b++){ //input
                cin >> cena[b];
            }

            for(int x = 0; x < n; n++){
                if(cena[x] == pare){
                    pare -= cena[x];
                    check[x] = true;
                }
                else if(cena[x] > pare){
                    check[x] = false;
                }
                else if(cena[x] < pare){
                    check[x] = true;
                }
            }

            //max and extend for him(j)
            int m = cena[0];
            int j = 0;

            for(int x = 0; x < n; x++){
                for(int i2 = 0; i2 < n; i2++){
                    if(check[i2]){
                        if(m < cena[i2]){
                            j = m = cena[i2];
                        }
                    }
                }
                pare -= j;
            }

            for(int i = 0; i < n; i++){ // to string 
                kod[i] = to_string(cena[i]);
            }

            for(int i3 = 0; i3 < n; i3++){   //output
                if(check[i3]){
                    cout << kod[i3] << " " << cena[i3] << endl;
                }
            }
            if(pare > 0){
                cout << pare << endl;
            }
        }