Indice del massimo di un array

di il
17 risposte

Indice del massimo di un array

Buongiorno a tutti, ho un problema con il codice di un esercizio che mi chiede di indicare l'indice del massimo di un array, tuttavia attraverso il ciclo for se provo a stampare il valore massimo lo fa senza problemi, per quanto riguarda invece l'indice non riesco a far trovare quello giusto. Cosa sbaglio?

#include <stdlib.h>
#include <stdio.h>

int array_max_index(float array[], int size)
{

					int i,j,max=0,posizione;
					float temp;

					

					for(i=0;i<size;i++)
					{	

								if (array[i]>max)
								{
								
									max = array[i];
									posizione = i;
								}
								
					}	



					printf("%d\n",posizione);

		return max;
}

int main(int argc, char const *argv[])
{
	

	int i;
	float array1[]={6,346,647,1,3};
	int size1=5;

	array_max_index(array1,size1);


	return 0;
}

17 Risposte

  • Re: Indice del massimo di un array

    Scusa ma usare un semplice sort?
  • Re: Indice del massimo di un array

    Cioè? Purtroppo studio da pochissimo il C, non sono esperto del linguaggio
  • Re: Indice del massimo di un array

    Perché non riesci ? Cosa succede ?

    (il sort non c'entra in questo caso ...)
  • Re: Indice del massimo di un array

    Esiste la funzione sort che ti permette di ordinare in ordine crescente (o decrescente) gli elementi si un array. nel tu caso si imposta così:
    
    std::sort (array1, array1+5);
    cout<<array1 [4]; //se vuoi il valore max
    cout<<array1 [0]; // se vuoi il valore min
    
    prima dell'int main dovari però mettere
    #include <algorithm>
  • Re: Indice del massimo di un array

    @spingar ... Il sort non c'entra nulla
  • Re: Indice del massimo di un array

    oregon ha scritto:


    Perché non riesci ? Cosa succede ?

    (il sort non c'entra in questo caso ...)

    Il sort l'avevo visto in giro, ma avevo letto che seriva solo per ordinare un array.

    Succede che quando stampo la posizione prende quello del ciclo for, e cioè avendo inserito 5 valori nell'array mi stampa come posizione "4".
  • Re: Indice del massimo di un array

    spingar ha scritto:


    Esiste la funzione sort che ti permette di ordinare in ordine crescente (o decrescente) gli elementi si un array. nel tu caso si imposta così:
    
    std::sort (array1, array1+5);
    cout<<array1 [4]; //se vuoi il valore max
    cout<<array1 [0]; // se vuoi il valore min
    
    prima dell'int main dovari però mettere
    #include <algorithm>

    Si ma io non devo ordinare un array, devo solo stamparne l'indice del valore massimo
  • Re: Indice del massimo di un array

    Non capisco qual è il problema, così non te lo stampa?
  • Re: Indice del massimo di un array

    Ah no ok ho capito cosa intendi
  • Re: Indice del massimo di un array

    Fix96 ha scritto:



    Succede che quando stampo la posizione prende quello del ciclo for, e cioè avendo inserito 5 valori nell'array mi stampa come posizione "4".
    No, a me visualizza 2 (che è corretto)

    Ci sono delle imperfezioni nel codice ma non capisco il tuo problema.
  • Re: Indice del massimo di un array

    Si pure a me funziona
  • Re: Indice del massimo di un array

    oregon ha scritto:


    Fix96 ha scritto:



    Succede che quando stampo la posizione prende quello del ciclo for, e cioè avendo inserito 5 valori nell'array mi stampa come posizione "4".
    No, a me visualizza 2 (che è corretto)

    Ci sono delle imperfezioni nel codice ma non capisco il tuo problema.

    Non è corretto perchè se vedi il valore maggiore è nella posizione 3.

    I valori sono
    float array1[]={6,346,647,1,3}
    e quello maggiore è 647, che sta nella posizione 3, dunque dovrebbe stampare 3.
  • Re: Indice del massimo di un array

    Nulla, ho capito adesso che il problema è che giustamente parte a contare da 0.

    Quali sono le imperfezioni nel codice?
  • Re: Indice del massimo di un array

    In ogni caso non arriva a 4. E che comincia da 0 l'hai scritto tu nel tuo ciclo for, non dovevi "capirlo".

    Le imperfezioni riguardano il tipo di dato trattato. Se usi un array di float la funzione deve restituire un float e max deve essere un float non int.

    Ma "sei sicuro" che la funzione debba restituire il max ? Secondo il nome che hai scelto (e per il fatto che restituisce un int) la funzione deve restituire il valore di 'posizione' che devi poi visualizzare nel main e non nella funzione.
Devi accedere o registrarti per scrivere nel forum
17 risposte