本文介绍了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:在扫描数组忽略的值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!