比较数组中的值并删除较大的值

Compare values in array and remove bigger one

本文关键字:删除 数组 比较      更新时间:2023-10-16

所以基本上我需要比较第一个数组值和下一个数组值,如果第一个数组值更大,然后从列表中删除它。

例如:

User enters: 1 2 4 3 5 6 4
Output shpuld be : 1 2 3 5 4

Atm我不知道如何解决这个问题,也当我试图比较最后输入的数字它只是比较0。

void find_and_delete(int *vals, int len){
for (int i = 0; i < len; i++){
    if (vals[i] > vals[i+1]){
        vals[i] = ' ';
    }


oid printt(int *vals, int len){
    for (int i = 0; i < len; i++){
        if (vals[i] != ' '){
            cout << vals[i] << endl;

试试这个

void find_and_delete(int *vals,int len)
{
   if(len>0)
   {
   for (int i = 0; i < len-1; i++)
   {
         if (vals[i] > vals[i+1]){
            vals[i] = ' ';
         }
   }
   }
}

void printt(int *vals, int len){
    for (int i = 0; i < len; i++){
        if (vals[i] != ' '){
           cout << vals[i] << endl;
        }
    }
}

它不会考虑最后一个元素

对于可调整大小的数组,您可以使用std::vector#include <vector>

for循环上界为len - 1 not len

std::vector<int> results;
for (int i = 0; i < len - 1; i++){
    if (vals[i] > vals[i+1]){
    }
    else{
        results.push_back(vals[i]);
    }
}

你可以像下面这样尝试,

int[] t = {1,2,4,3,5,6,4}; // create an array of integers
    for (int i=0; i<t.length-1; i++) {
        for(int j = i+1; j<t.length; j++){
            if (t[i]<t[j]){                  // if j is bigger than i
                cout << t[i];
            }
        }
    }