2015-11-26 4 views
0

Часть кода, чтобы найти самое большое и самое малое число на массиве, если это необходимо. Мне нужен индекс сейчас. Позиция этих чисел в этом массиве.Программа для поиска Наибольшее и самое низкое значение и его индекс массива (программирование на языке C)

////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////

#include <stdio.h> 
#include <stdlib.h> 
#define DIM 5 

void lerArray (int x[DIM]); 
int maximo(int x[DIM]); 
int minimo(int x[DIM]); 


int main(){ 
    int a[DIM],l,g; 
    lerArray(a); 
    g = maximo(a); 
    l = minimo(a); 

    printf("Minimo:%d \t Maximo:%d ",g,l); 


    return 0; 
} 


void lerArray (int x[DIM]){ 
    int i,numb; 

    for(i=0;i<DIM;i++) 
    { 
     printf("Intoduza o %dº elemento\n",i); 
      scanf("%d",&numb); 
      x[i]= numb; 
    } 
} 


int maximo(int x[DIM]){ 
    int i,max; 
    max =x[0]; 

    for(i=0;i<DIM;i++){ 
     if (max>x[i]) 
      max = x[i]; 
    } 
    return max; 
} 

int minimo(int x[DIM]){ 
    int i,min; 
    min =x[0]; 

    for(i=0;i<DIM;i++){ 
     if(min<x[i]) 
      min=x[i]; 
    } 

    return min; 
} 

ответ

3

Если вам нужен индекс массива максимального значения, верните его вместо максимального значения. Затем вызывающая функция может легко распечатать само значение, если необходимо, с помощью индекса. Кстати, у вас ваши сравнения неверны.

int maximo(int x[DIM]){ 
    int i, max, maxind; 
    max =x[0]; 
    maxind = 0;    // added this 

    for(i=0;i<DIM;i++) { 
     if (max < x[i]) {  // reversed the conditional test 
      max = x[i]; 
      maxind = i;  // remember this too 
     } 
    } 
    return maxind;   // return the index instead of the value 
} 
0

Чтобы получить значение и индекс максимального/минимального значения в вашем массиве, вам необходимо сохранить последний индекс i, из которого вы изменили значение максимального/минимального значения в ваших функциях.

В C вы не можете вернуть несколько значений в функцию.

Существует несколько способов достижения этого.

Одним из решений было бы дать указатель на целое число на ваши функции в качестве дополнительного аргумента, в котором вы сохранили бы индекс значения.

Другим решением будет создание простого массива размера 2 для хранения результата (минимальное/максимальное значение) и связанного с ним индекса и использование его в качестве параметра для ваших вызовов maximo и minimo.

Или вы даже можете создать структуру, содержащую как ваш результат, так и индекс.