#include <stdio.h>
#include <stdlib.h>
//prototipo generaione numeri random
void rnd_fill(int *numeri, int n, int n_min, int n_max);
//prototipo stampa
void stampa(int v[], int n);
//prototipo max
int max(int v[], int n);
//prototipo min
int min(int v[], int n);
//prototipo find
int find(int v[], int num, int n);
//prototipo swap
void swap(int *a, int *b);
//prototipo ordinamento
void ordina(int *d, int n, char mode);
int main(int argc, char *argv[])
{
int numeri[20];
int i,n,pos,n_min,n_max;
printf("Genero numeri casuali da ");
scanf("%d",&n_min);
printf("a ");
scanf("%d",&n_max);
//genero numeri casuali
rnd_fill(numeri, 20, n_min, n_max);
stampa(numeri, 20);
printf("\n");
system("PAUSE");
//calcolo del valore MAX. e MIN.
printf("Il valore massimo trovato vale: %d. Il valore minimo vale: %d.\n",max(numeri, 20),min(numeri, 20));
printf("\n");
system("PAUSE");
//ricerca valore inserito da utente
int val;
printf("Inserisci valore da cercare: \n");
scanf("%d",&val);
pos = find(numeri, val, 20);
//stampa a video della posizione del valore se è presente
if(pos==-1)
{
printf("Numero non presente!\n");
}
else
{
printf("Valore presente alla posizione [%d].\n",pos);
}
printf("\n");
//ordinamento valori
char mode;
printf("Premi '+' per ordinare in modo crescente o '-' per decrescente.\n");
fflush(stdin);
getch(mode);
ordina(numeri, 20, mode);
//stampa dell'array ordinato
stampa(numeri, 20);
system("PAUSE");
return 0;
}
void stampa(int v[], int n)
{
int i;
for(i=0;i<n;i++)
{
printf("%d ",v[i]);
sleep(500);
}
}
int max(int v[], int n)
{
int i, max = 0;
for(i=0;i<n;i++)
{
if(v[i] > max)
{
max = v[i];
}
}
return max;
}
int min(int v[], int n)
{
int i, min = n;
for(i=0;i<n;i++)
{
if(v[i] < min)
{
min = v[i];
}
}
return min;
}
int find(int v[], int num, int n)
{
int i, found = -1;
for(i=0;i<n;i++)
{
if(v[i] == num)
{
found = i+1;
break;
}
}
return found;
}
void rnd_fill(int *numeri, int n, int n_min, int n_max)
{
srand(time(NULL));
int i,num;
for(i=0;i<n;i++)
{
do
{
num = rand();
if((num>n_min)&&(num<=n_max))
{
break;
}
}
while(1);
numeri[i] = num;
}
}
void swap(int *a, int *b)
{
int t;
t = *a;
*a = *b;
*b = t;
}
void ordina(int *d, int n, char mode)
{
int flag,i;
if(mode=='+')
{
do
{
flag=0;
for(i=0;i<n-1;i++)
{
if(d[i] > d[i+1])
{
swap(&d[i], &d[i+1]);
flag=1;
}
}
}
while(flag==1);
printf("Array ordinato in ordine crescente\n");
}
else if(mode=='-')
{
do
{
flag=0;
for(i=0;i<n;i++)
{
if(d[i] < d[i+1])
{
swap(&d[i], &d[i+1]);
flag=1;
}
}
}
while(flag==1);
printf("Array ordinato in ordine decrescente\n");
}
}