Buonasera, sono bloccato in questo esercizio in cui dovrei la funzione "int invertipari (int v[], int dim)" solo che non riesco a venirci a capo, quella che ho scritto è una mia idea però non so se sia corretta...
La funzione riceve come argomenti un vettore di interi e la sua dimensione. La funzione deve invertire il contenuto del vettore limitatamente ai numeri pari (cioè scambiando le coppie di elementi in posizioni simmetriche solo se entrambi hanno valore pari). Inoltre, la funzione deve restituire il numero di scambi effettuati.
Grazie in anticipo
#include <stdio.h>
#include <stdlib.h>
void swap_int (int *pa, int *pb);
int invertipari (int v[], int dim)
{
int cnt = 0;
int i, j;
int *pa = 0, *pb = 0;
for (i=0; i< (dim/2); i++)
{
if (v[i] % 2 == 0)
{
// il numero è pari
*pa = v[i];
cnt++;
}
}
for (j=(dim-1); j >= (dim/2); j-- )
{
if (v[j] %2 == 0)
{
// il numero è pari
*pb = v[j];
}
}
swap_int (pa, pb);
return cnt;
}
/* NON MODIFICARE NULLA NELLA PARTE CHE SEGUE */
#define DIMMAX 1000
int invertipari (int v[], int dim);
int leggi_vettore (int vettore[], int dim_max);
void stampa_vettore (int vettore[], int dim);
int main()
{
int v[DIMMAX];
int dim;
/* leggi il vettore */
dim = leggi_vettore (v, DIMMAX);
/* stampa il vettore originale */
printf ("vettore originale:\n");
stampa_vettore (v, dim);
/* inverti il vettore */
printf ("numero di elementi invertiti: %d\n", invertipari (v, dim));
/* stampa il vettore */
printf ("vettore con inversioni:\n");
stampa_vettore (v, dim);
return EXIT_SUCCESS;
}
int leggi_vettore (int vettore[], int dim_max)
{
int n, i;
// printf ("inserisci il numero di valori da scrivere nel vettore: ");
scanf ("%d", &n);
if (n > dim_max)
{
printf ("attenzione: il valore massimo consentito e` %d, il numero di valori è stato ridotto\n", dim_max);
n = dim_max;
}
for (i = 0; i < n; i++)
{
// printf ("v[%d] = ", i);
scanf ("%d", &vettore[i]); /* NOTA: vettore e` un indirizzo, vettore[i] e` un intero */
}
return n; /* NOTA: i e` arrivato allo stesso valore */
}
void stampa_vettore (int vettore[], int dim)
{
int i;
for (i = 0; i < dim; i++)
{
printf("v[%d] = %d\n", i, vettore[i]);
}
return;
}
void swap_int (int *pa, int *pb)
{
int t;
t = *pa;
*pa = *pb;
*pb = t;
return;
}