Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #define DIM 10
- /**
- Questa funzione non fa altro che prendere in input i numeri da ordinare in modo decrescente.
- in input accetta 2 parametri: int* a è un puntatore mentre int dim è una variabile che indica la dimensione dell'array. E' di tipo void perché non ritorno niente e lavoro direttamente con l'array, grazie all'uso dei puntatori.
- int* a è un array, in quanto in C un array non è altro che un puntatore al primo elemento del array :D per cui basta indicare a[i] per accedere a tutti i suoi elementi
- **/
- void inserimento(int* a, int dim){
- int i = 0;
- for(i = 0; i < dim; i++){
- printf("Inserire %d elemento :> ", i + 1);
- scanf("%d", &a[i]) ;
- }
- }
- /**
- Questa è la funzione che mi ha fatto più sudare: non fa altro che prendere come prima un puntatore o più familiare array :d
- **/
- void ordina (int *a, int dim){
- int i = 0,
- j = 0,
- t = 0;
- /** Inizializzo tre variabili, i e j sono gli indici dei due cicli for, neccessari per buble-sort (vedasi algoritmi per array), e t è una variabile temporanea che conterrà i valori da scambiare. **/
- for(i = 0; i < dim; i++){
- for(j = i + 1; j < dim; j++){
- if(a[i] < a[j]){ // se a[i] < a[i+1] scambia, cioè in modo decrescente
- t = a[i]; // una volta passato come puntatore, vi si può accedere come un array normale
- a[i] = a[j];
- a[j] = t;
- }
- }
- }
- }
- /**
- stampo l'array :D
- **/
- void stampa(int* a, int dim){
- int i = 0;
- for(i = 0; i < dim; i++){
- printf("[%d] ",a[i]);
- }
- printf("\n");
- }
- int main(){
- int array[DIM];
- inserimento(array, DIM);
- stampa(array, DIM);
- ordina(array, DIM);
- stampa(array, DIM);
- getch(); //come SYSTEM("PAUSE"); ma meno pesante per le risorse del PC
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement