Salve a tutti!
Traccia programma: Dato un vettore di interi 10 elementi:a)popolarlo interamente b)ordinarlo usando un qualsiasi algoritmo 3)stampare prima il primo elemento poi l'ultimo quindi il secondo e il penultimo ecc...(vettore ordinato:0123456789 stampa richiesta:0918273645).
Codice:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX = 100
void sel_sort(int A[],int n);
int leggi_array(int x[]);
void stampa_array(int x[], int n);
void scambia (int x[]);
int leggi_array(int x[])
{
int i;
int n = 10;
for(i = 0; i < n; i++)
{
printf("Inserire un numero nella posizione %d\n", i);
scanf("%d", &x[i]);
}
return n;
}
void stampa_array(int x[], int n)
{
int i;
printf("\n-----------------\n");
for(i = 0; i < n; i++)
{
printf("%d\n", x[i]);
}
}
void sel_sort(int A[], int n)
{
int i, j, p, min;
for (i=0; i<n-1; i++) {
min = A[i];
p = i;
for (j=i+1; j<n; j++){
if (A[j]<min)
{
min = A[j];
p = j;
A[p] = A[i];
A[i] = min;
}
}
}
}
void scambia (int x[], int size)
{
int i;
int j;
printf("\n---------------------\n");
for (i=0; i<=j; i++)
{ printf ("%d\n", x[i]);
printf ("%d\n", x[j]);
j--; }
}
/*
* Funzione principale
*/
int main(void) {
int v[ 100 ];
int n;
n = leggi_array(v);
stampa_array(v, n);
sel_sort(v, n);
stampa_array(v, n);
scambia (v, n) ;
system("PAUSE");
return(1);
}
L'ordinamento che ho usato è il selection sort, così come si può comunque usare il bubble sort o insertion sort..
Oltra alla stampa richiesta dalla traccia ci sono queste 2:
Codice:
5678901234
void scambia (int x[], int size)
{
int i;
int j;
printf("\n---------------------\n");
for (j=5; j<=9; j++)
{ printf ("%d\n", x[j]);}
for(i=0; i<=4; i++)
{ printf("%d\n", x[i]);}
}
0516273849
void scambia (int x[], int size)
{
int i;
int j=5;
printf("\n---------------------\n");
for (i=0; i<=4; i++)
{ printf ("%d\n", x[i]);
printf("%d\n", x[j]);
j++;}
}
Tra le altre l'unica che mi da errore(di segmentazione) è questa: 9876543210...e cioè stampare il vettore in senso decrescente...voi come la fareste???