- Codice:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void trovaMax(int* a, int n)
{
int cont = 0;
if(*a > *(a + 1)) {printf("%d|", *a); cont++;}
int* b = a + 10;
a++;
while(a < b)
{
if((*a > *(a - 1))&&(*a > *(a + 1)))
{
printf("%d|", *a); cont++;
}
a++;
}
if(*b > *(b - 1)) {printf("%d|", *b); cont++;}
printf("\n\n%d", cont);
}
int main()
{
srand(time(0));
int n = 11;
int* a = malloc(sizeof(int)*n);
for(size_t i = 0; i < n; i++)
{
a[i] = rand()% 300;
printf("%d|", a[i]);
}
puts("\n");
trovaMax(a, n);
}
Il testo di questo esercizio chiede di trovare in un array i "max parziali", cioè quei termini che sono più grandi di quelli adiacenti. Tuttavia è richiesto che il prototipo della funzione sia del tipo: int * TrovaMaxParziale(int * a,int N); cioè si dovrebbero inserire tutti i max parziali all'interno di questo array. E' possibile quindi fare questa modifica senza complicare inutilmente il codice?