#include <stdio.h>
#include <stdlib.h>
#define maxDim (100)
void vettore (int a[], int dimensione1, int b[], int x, int y,
int *dimensione2);
int
main (void)
{
int a[maxDim];
int b[maxDim];
int index;
int indice;
int x;
int y;
int dimensione1;
int dimensione2;
//Inserimento delle dimensioni
printf ("Inserisci la dimensione dell'array (max%d): ", maxDim);
scanf ("%d", &dimensione1);
printf ("Inserisci il valore dell'intero x: ");
scanf ("%d", &x);
printf ("Inserisci il valore dell'intero y: ");
scanf ("%d", &y);
//Controllo di allocazione statica
if ((dimensione1 > 0) && (dimensione1 <= maxDim))
{
//Lettura dell'array
for (index = 0; index < dimensione1; index++)
{
printf ("Inserisci il valore %d-esimo:\n", index);
scanf ("%d", &a[index]);
}
//Chiamata della funzione
vettore (a, dimensione1, b, x, y, &dimensione2);
//Stampa del vettore
if (dimensione2 > 0)
{
for (indice = 0; indice < dimensione2; indice++)
{
printf ("b[%d] = %d\n", indice, b[indice]);
}
}
}
else
{
printf ("Errore: la dimensione inserita e' maggiore di %d", maxDim);
}
return 0;
}
#define maxDim (100)
void
vettore (int a[], int dimensione1, int b[], int x, int y, int *dimensione2)
{
int index;
int indice;
int alto;
int swap;
//Calcolo degli elementi compresi tra x e y
(*dimensione2) = 0;
indice = 0;
for (index = 0; index < dimensione1; index++)
{
if (x < a[index] && a[index] < y)
{
b[indice] = a[index];
indice++;
(*dimensione2)++;
}
}
//Ordinamento dell'array (bubble sort)
alto = *dimensione2;
while (alto > 0)
{
for (indice = 0; indice < (*dimensione2) - 1; indice++)
{
if (b[indice] > b[indice + 1])
{
swap = b[indice];
b[indice] = b[indice + 1];
b[indice + 1] = swap;
}
}
alto--;
}
}