View Single Post
Old 17-04-2010, 16:10   #1
InformaticoRC
Member
 
Iscritto dal: Apr 2010
Messaggi: 50
[C]Ordinamento e stampa di un vettore

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???
InformaticoRC è offline   Rispondi citando il messaggio o parte di esso