私は配列を分析しており、構造体を使用して各項目の位置と値を保存し、この配列の 3 つの最小値を取得したいと考えています。これの問題は、この場合は「-5」という値を無視しなければならないことです。そして、この値を無視しようとすると、インデックスが台無しになり、その方法がわかりません。
これは私の試みです:
#include <cstdlib>
#include <stdio.h>
#include <iostream>
#include <string.h>
#include <stdlib.h>
using namespace std;
typedef struct pair {
int value, column;
} Pair;
int cmp(const void *a, const void *b);
int main(int argc, char** argv) {
Pair data_pair[8];
int row[8] = {0, 3, 1, -5, 1, 2, 3, 4};
for (int i=0;i<8;++i){
if (row[i] != -5){ // Ignore the value -5 from the array
data_pair[i].value = row[i];
data_pair[i].column = i;
}
}
printf("\n\nThe three minimum values of this line are:");
qsort(data_pair, 8, sizeof(Pair), cmp);
for(int i=0;i<3;++i)
printf("\nvalue = %d, column = %d", data_pair[i].value, data_pair[i].column);
return 0;
}
int cmp(const void *a, const void *b){
Pair *pa = (Pair *)a;
Pair *pb = (Pair *)b;
return pa->value - pb->value; }
これは私が持っている出口です:
この行の 3 つの最小値は次のとおりです:
値 = 0、列 = 0
値 = 0、列 = 0
値 = 1、列 = 4
目的のソリューションが次の場合:
この行の 3 つの最小値は次のとおりです:
値 = 0、列 = 0
値 = 1、列 = 2
値 = 1、列 = 4
私が間違っていることは何ですか?公開されたコードの一部を変更するだけの解決策が欲しいです。
前もって感謝します