本文介绍了C:在扫描数组忽略的值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在分析一个数组,并使用一个结构来保存位置和每个项目的价值,我想获得这个数组的三个最小值。这样做的问题是,我已经忽略在此情况下的值,-5。如果我试图忽略这个值,指数弄乱了,我不知道该怎么办了。

这是我的尝试:

 的#include< cstdlib>
#包括LT&;&stdio.h中GT;
#包括LT&;&iostream的GT;
#包括LT&;&string.h中GT;
#包括LT&;&stdlib.h中GT;使用命名空间std;
typedef结构对{
        int值,列;
    }对;
INT CMP(常量无效*一,常量无效* B);INT主(INT ARGC,字符** argv的){    一对data_pair [8];    INT行[8] = {0,3,-1,-5,1,2,3,4};
    的for(int i = 0; I< 8; ++ I){
        如果(行[I]!= -5){//忽略值-5从数组
              data_pair [I]。价值=行[我]
              data_pair [I] .column = I;
        }
    }    的printf(\\ n \\ n此此行三个最低值是:);
    的qsort(data_pair,8的sizeof(对),CMP);
    对(INT I = 0;我3; ++ⅰ)
        的printf(\\ n值=%d个,列=%d个,data_pair [I] .value的,data_pair [I] .column);    返回0;
} INT CMP(常量无效*一,常量无效* B){
     对* PA =(对*)一个;
     对* PB =(对*)B:
     返回的PA>价值 - PB->价值; }

这是我遇到的退出:

When the desired solution is:

What I'm doing wrong? I would like to have a solution just changing some parts of the exposed code.
Thanks in advance

解决方案
if (row[i] != -5){ // Ignore the value -5 from the array
    data_pair[i].value = row[i];
    data_pair[i].column = i;
} else {// add
    data_pair[i].value = INT_MAX;//#include <limits.h>
    data_pair[i].column = i;
}

这篇关于C:在扫描数组忽略的值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-24 17:42