Wie der Titel halt sagt: Warum haben die eine unterschiedliche Lösung, wenn sich nur die Position vom int return ändert?
Code 1:
#include <cstdio>
int second_smallest(int array[], int size) {
int check = array[0];
int s_pos;
for (int i = 0; i < size; ++i) {
if (array[i] < check) {
check = array[i];
s_pos = i;
}
}
int result;
for (int j = 0; j < size; ++j) {
if (array[j] < result && j != s_pos) {
result = array[j];
}
}
return result;
}
int main() {
int arr[6] = { 3, 6, 6, 9, 3, 9 };
int r = second_smallest(arr, 6);
printf("%i", r);
}
Code 2:
#include <cstdio>
int second_smallest(int array[], int size) {
int check = array[0];
int s_pos;
int result;
for (int i = 0; i < size; ++i) {
if (array[i] < check) {
check = array[i];
s_pos = i;
}
}
for (int j = 0; j < size; ++j) {
if (array[j] < result && j != s_pos) {
result = array[j];
}
}
return result;
}
int main() {
int arr[6] = { 3, 6, 6, 9, 3, 9 };
int r = second_smallest(arr, 6);
printf("%i", r);
}