Если структура является локальной переменной (переменная объявлена внутри функции), тогда используйте
int trova_max(struct rettangolo r[], int k);
и вызвать функцию, используя
int main() {
struct rettangolo r[50];
int k = 10;
trova_max(r, k)
return 0;
}
еще
#include <stdio.h>
struct rettangolo {
int ei, ej, b, h, a;
} r[50];
int trova_max(int k) { // No need the struct array since it is a global variable
int max, maxi, i;
for (i = 0; i < k + 1; i++) {
if (r[i].a > max) {// Assumed that you are comparing variable a of struct
max = r[i].a;
maxi = i;
}
}
return maxi;
}
int main() {
printf("%d\n", trova_max(2));
return 0;
}
// Повторно использовать одну и ту же функцию для сравнения a, b и h
#include <stdio.h>
enum COMP { A_COMPARE, B_COMPARE, H_COMPARE };
struct rettangolo {
int ei, ej, b, h, a;
} r[50];
int compare(struct rettangolo *elem, int max, enum COMP value_to_compare) {
switch (value_to_compare) {
case A_COMPARE:
return elem->a > max;
case B_COMPARE:
return elem->b > max;
case H_COMPARE:
return elem->h > max;
default:
printf("Default statement executed\n");
}
return 0;
}
int trova_max(int k, enum COMP value_to_compare) { // No need the struct array since
// it is a global variable
int max, maxi, i;
for (i = 0; i < k + 1; i++) {
if (compare(&r[i], max,
value_to_compare)) { // Assumed that you are comparing variable
// a of struct
max = r[i].a;
maxi = i;
}
}
return maxi;
}
int main() {
printf("%d\n", trova_max(2, A_COMPARE));
printf("%d\n", trova_max(2, B_COMPARE));
printf("%d\n", trova_max(2, H_COMPARE));
return 0;
}