Я пытаюсь найти, какие элементы в этом массиве c ++ содержат наибольшее значение, а затем вывести ключ этого элемента, но он продолжает выводить список чисел, например 9044007. Я хочу знать, как мне вывести первое число только потому, что я предполагаю, что он выводит все ключи элементов с одинаковым значением.
double max = 0;
for (int i = 1; i <= 9; i++) {
if (responselayer[i] > max) {
max = responselayer[i];
}
}
for (int i = 1; i < 10; i++) {
if (responselayer[i] == max) {
return i;
break;
}
}
Вот часть кода, которая заполняет все это. Код много, поэтому сложно сделать его минимальным. Это моя первая попытка стека, поэтому я не знаю, как здесь все работает.
//final layer input calculation and output//
for (int j = 1; j <= 10; j++) {
double subval = 0;
if (j == 1) {
for (int i = 0; i < 5; i++) {
subval = (midlayerweight4[i] * midlayer3[i]) + subval;
responselayer[j] = subval;
}
responselayer[j] = 1 / (1 + exp(-responselayer[j]));
}
else if (j == 2) {
int k = 0;
for (int i = 5; i < 10; i++) {
subval = (midlayerweight4[i] * midlayer3[k]) + subval;
responselayer[j] = subval;
k++;
}
responselayer[j] = 1 / (1 + exp(-responselayer[j]));
}
else if (j == 3) {
int k = 0;
for (int i = 10; i <15; i++) {
subval = (midlayerweight4[i] * midlayer3[k]) + subval;
responselayer[j] = subval;
k++;
}
responselayer[j] = 1 / (1 + exp(-responselayer[j]));
}
else if (j == 4) {
int k = 0;
for (int i = 15; i < 20; i++) {
subval = (midlayerweight4[i] * midlayer3[k]) + subval;
responselayer[j] = subval;
k++;
}
responselayer[j] = 1 / (1 + exp(-responselayer[j]));
}
else if (j == 5) {
int k = 0;
for (int i = 20; i <25; i++) {
subval = (midlayerweight4[i] * midlayer3[k]) + subval;
responselayer[j] = subval;
k++;
}
responselayer[j] = 1 / (1 + exp(-responselayer[j]));
}
else if (j == 6) {
int k = 0;
for (int i = 25; i <30; i++) {
subval = (midlayerweight4[i] * midlayer3[k]) + subval;
responselayer[j] = subval;
k++;
}
responselayer[j] = 1 / (1 + exp(-responselayer[j]));
}
else if (j == 7) {
int k = 0;
for (int i = 30; i <35; i++) {
subval = (midlayerweight4[i] * midlayer3[k]) + subval;
responselayer[j] = subval;
k++;
}
responselayer[j] = 1 / (1 + exp(-responselayer[j]));
}
else if (j == 8) {
int k = 0;
for (int i = 35; i < 40; i++) {
subval = (midlayerweight4[i] * midlayer3[k]) + subval;
responselayer[j] = subval;
k++;
}
responselayer[j] = 1 / (1 + exp(-responselayer[j]));
}
else if (j == 9) {
int k = 0;
for (int i = 40; i <45; i++) {
subval = (midlayerweight4[i] * midlayer3[k]) + subval;
responselayer[j] = subval;
k++;
}
responselayer[j] = 1 / (1 + exp(-responselayer[j]));
}
}
double max = 0;
for (int i = 1; i <10; i++) {
if (responselayer[i] > max) {
max = responselayer[i];
}
}
for (int i = 1; i < 10; i++) {
if (responselayer[i] == max) {
return i;
}
}
}
} midlayerweight4 [] был заполнен массивом до него таким же образом, как и другие за ним. Это объявление для responselayer, и все остальные используемые массивы имели тип double, и все они были объявлены вне массива.
double responselayer[10];