Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [c] problemi funzione controllo ordine crescente

    Ciao!!

    ho creato una pagina c che inseriti dieci numeri li ordina mediante l'algoritmo del selection sort in modo crescente.

    É prevista una funzione che controlli l'eventuale caso in cui l'ordine crescente sia raggiunto in anticipo: dà problemi perchè fa bloccare subito l'algoritmo.
    Grazie!
    codice:
    #include <stdio.h> #define size 10 
    
    /* questo è il main del programma in cui si chiamano le tre funzioni per prendere in input, ordinare un array e farci una ricerca */ 
    
    void input(int [], int);
     void selectsort(int [], int); 
    void printarray(int[], int); 
    char orderer(int[], int); 
    main() 
    { 
      int numeri[size]; 
    
    input(numeri,size); 
    selectsort(numeri,size);
     system("PAUSE"); 
    } /*fine main*/ 
    
    /* inizio funzione input*/ 
    void input(int vet[], int dim) 
    { int i; 
    
    for(i=0; i<dim; i++) 
    { 
    printf("\n\n inserisci l'elemento numerico numero %d \n\n", i+1); 
    
    scanf("%d", &vet[i]); 
    } printarray(vet,dim); 
    
    } /* fine della funzione di input */ 
    
    /* inizio della funzione di selectionsort */ 
    void selectsort(int vet[], int dim) 
    { 
    
    int i, j, p, min; char flag ='d'; /* inizio doppio ciclo di for alla base del selection sort */ for(i=0; i<(dim-1) && flag == 'd'; i++) 
    { /* preset min */ min = vet[i]; for(j=i;j<dim; j++) { /* ricerca del consueto minimo */ if(min > vet[j]) { min = vet[j]; p=j; } else { if(min==vet[j]) { p=j; } } /* fine ricerca minimo*/ } /* scambio di posizioni nel caso il min non sia già memorizzato nella posizione giusta inizio */ if(p!=i) { vet[p] = vet[i]; vet[i] = min; } /* scambio di posizioni fine*/ flag = orderer(vet, dim); } /* fine doppio ciclo */ /* stampa dell'array selection ordinato*/ printarray(vet,dim); } /* stampa un array inizio*/ void printarray(int vet[], int dim) { int i; printf("\n\n"); for(i=0; i<dim; i++) { printf("%d\t", vet[i]); } printf("\n\n"); } /* stampa un array fine*/ /* inizio funzione per il controllo dell'ordine degli elementi */ char orderer(int vet[], int dim) { int i, j; char ret='d'; printf(" controllo se per caso l'ordine e' arrivato prima del tempo"); for(i=0 ; i<dim; i++) { j= i+1; if(vet[i]>vet[j]) { ret = 'o'; } } return ret; } /* fine funzione per il controllo dell'ordine degli elementi */

  2. #2
    Utente bannato
    Registrato dal
    Oct 2010
    Messaggi
    1,219
    Non mettere tutto su una riga,fa male agli occhi

  3. #3

  4. #4
    Utente bannato
    Registrato dal
    Oct 2010
    Messaggi
    1,219
    Puoi sistemare anche le ultime righe?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.