RISOLTO: Ho un problema su questo esercizio sugli array come parametri delle funzioni in c++

di il
2 risposte

RISOLTO: Ho un problema su questo esercizio sugli array come parametri delle funzioni in c++

Il compilatore non dà errore, ma la funzione selection sort non gira se l'array ha più di 6 elementi e non capisco come fare per rendere la mediana double o float per renderla più precisa.
grazie a chi risponderà




/*Programma che acquisisce un numero
minore di 10 e le componenti di un
vettore e le riordina in senso
decrescente e ne calcola la mediana*/
#include <stdio.h>
#include <math.h>
int lettura_dimensione (int []);
int controllo_dimensione (int);
void selection_sort (int [], int);
int mediana (int [], int);
int main ()
{int n, a[n];
n=lettura_dimensione (a);
if (controllo_dimensione (n)==0) return 0;
selection_sort (a, n);
int med=mediana (a, n);
printf ("\nMediana=%d", a[med]);
return 0;}

int lettura_dimensione (int v[])
{int a; printf ("Inserire un intero minore di 11="); scanf("%d", &a);
if (controllo_dimensione (a)==0) {printf ("Numero maggiore di 11"); return 0;}
for (int i=0; i<a; i++) {printf ("Inserire componente %d=", i+1); scanf ("%d", &v);} return a;}

int controllo_dimensione (int a)
{if (a>10) return 0;}

void selection_sort(int a[], int n)
{int i, j, min, temp;
for(i=0;i<n-1;i++) {min=i;
for(j=i+1;j<n;j++) {if(a[min]<a[j])
{min=j;}
}
temp=a[min];
a[min]=a;
a=temp;}
printf("\nIl vettore ordinato=");
for(int i=0;i<n;i++) {printf("%d ",a);}
}

int mediana (int a[], int x)
{double m;
if (x%2==1){m=(x+1)/2; return (m-1);}
else {if (x%2==0) {m=x/2; return ((m-1)+((m)/2));
}
}
}

2 Risposte

  • Re: RISOLTO: Ho un problema su questo esercizio sugli array come parametri delle funzioni in c++

    Utilizza i tag CODE per postare il codice (correggi il tuo messaggio, vedi regolamento) o non si capisce molto.

    Intanto sicuramente questa

    a[n]

    inserita in quel punto è sbagliata perché n non sai ancora quanto vale. Ricorda che le istruzioni sono eseguite in sequenza.



    P.S. Non scrivere in rosso.
  • Re: RISOLTO: Ho un problema su questo esercizio sugli array come parametri delle funzioni in c++

    Ci sono un po di errori.

    ho provato a vedere , se non ho aggiunto altri errori.
    [CODE] /*Programma che acquisisce un numero minore di 10 e le componenti di un vettore e le riordina in senso decrescente e ne calcola la mediana*/ #include <stdio.h> #include <math.h> #include <conio.h> #define MAX 11 int lettura_dimensione (int []); void selection_sort (int [], int); int mediana (int [], int); int main () { int n, a[MAX], med; n=lettura_dimensione (a); selection_sort (a, n); med=mediana (a, n); printf ("\nMediana=%d", a[med]); getch(); return 0; } int lettura_dimensione (int v[]) { int a=MAX+1,i; while(a>MAX) { printf ("Inserire un intero minore di 11="); scanf("%d", &a); if (a>MAX) printf ("Numero maggiore di 11\n");; } for (i=0; i<a; i++) { printf ("Inserire componente %d=", i+1); scanf ("%d", &v[i]); } return a; } void selection_sort(int a[], int n) { int i, j, min, temp; for(i=0;i<n-1;i++) { min=i; for(j=i+1;j<n;j++) { if(a[min]>a[j]) { min=j; } } temp=a[min]; a[min]=a[i]; a[i]=temp; } printf("\nIl vettore ordinato="); for(i=0;i<n;i++) { printf("%d ",a[i]); } } int mediana (int a[], int x) { double m; if (x%2==1) { m=(x+1)/2; return (m-1); } else { if (x%2==0) { m=x/2; return ((m-1)+((m)/2)); } } }
Devi accedere o registrarti per scrivere nel forum
2 risposte