/*
 * arquivo: ordena_1.c
 * -------------------
 * Este programa ordena crescentemente um vetor real com n elementos
 * (n < 100).
 *
 * Ordem dos dados: n (inteiro), vetor real x com n elementos.
 */

#include <stdio.h>

#define NMAX 100

void leia_vetor(double v[], int n);
void imprima_vetor(double v[], int n);
void ordena_vetor(double v[], int n);

/************************************************************/

int main()
{
    double x[NMAX];
    int n;

    printf("Forneca o valor de n: ");
    scanf("%d", &n);

    leia_vetor(x, n);
    imprima_vetor(x, n);
    ordena_vetor(x, n);
    printf("O vetor foi ordenado.");
    imprima_vetor(x, n);

    return 0;
}

/*----------------------------------------------------------*/
/*
 * leia_vetor():
 * =============
 * Recebe um vetor de double v[] e um inteiro n.
 * Le n reais e os coloca em em v[], isto e', em
 * v[0],...,v[n-1].
 */
void leia_vetor(double v[], int n)
{
    int i;

    printf("Forneca os %d doubles: ", n);
    for (i = 0; i < n; i++)
	scanf("%lf", &v[i]);
}

/*-----------------------------------------------------------*/
/*
 * imprima_vetor():
 * ================
 * Recebe um vetor de n doubles v[] e o inteiro n
 * e imprime v[], isto e', imprime v[0],...,v[n-1].
 */
void imprima_vetor(double v[], int n)
{
    int i;

    printf("Os elementos do vetor sao ");
    for (i = 0; i < n; i++)
	printf("%g ", v[i]);
    printf("\n");
}

/*-----------------------------------------------------------*/
/*
 * ordena_vetor():
 * ==============
 * Recebe um vetor de n doubles v[0..n-1], um inteiro n,
 * e ordena esse vetor em ordem crescente.
 */

void ordena_vetor(double v[], int n)
{
    int i, j, index_min;
    double min;
    for (i = 0; i < n - 1; i++) {
	min = v[i];
	index_min = i;

	for (j = i + 1; j < n; j++)
	    if (v[j] < min) {
		min = v[j];
		index_min = j;
	    }
	v[index_min] = v[i];
	v[i] = min;

    }

}