Come al solito non trovo l'errore[aiuto]

di il
2 risposte

Come al solito non trovo l'errore[aiuto]

#include <stdio.h>

#define N 10

void flush(void);
void Riempi(int[],unsigned long);
void Qsort(int[],unsigned long,unsigned long);
void Stampa (int[],unsigned long);

main(){
       int v [N];
       unsigned short scelta;
       unsigned long inf, sup;
       do{
            printf("\n1-riempi");
            printf("\n2-ordina");
            printf("\n3stampa");
            printf("inserisci la scelta: ");
            scanf("%u",&scelta);
            flush();
            switch(scelta){
                           case 1: Riempi(v,N);
                                   break;
                           case 2: Qsort(v,inf,sup);
                                   break;
                           case 3: Stampa(v,N);
                                   break;
                                   }
                                   }while(scelta<4);
                                   }
void flush (){
     while(getchar()!='\n');
     }
void Riempi (int v[],unsigned long dim){
     unsigned long i;
                     for(i=0;i<=dim;i++){
                                          printf("elemento in posizione [%d]: ",i);
                                          scanf("%d",&v[i]);
                                          }
                                          }
void scambia (int v[],unsigned long i,unsigned long j){
     int temp=v[i];
                               v[i]=v[j];
                               v[j]=temp;
                               }
void Qsort(int v[],unsigned long inf,unsigned long sup){
     int pivot=v[(inf+sup)/2];
     unsigned long i,j;
     i=inf;
     j=sup;
     do{
           while(v[i]<pivot) i++;
           while(v[j]>pivot) j--;
           if(i<j)
                scambia(v,i,j);
           if(i<=j) {
                    i++;
                    j--;
           }
     } while(i<=j);
     if(inf<j) Qsort(v,inf,j);
     if(i<sup) Qsort(v,i,sup);
}

void Stampa (int v[],unsigned long dim){
      unsigned long i;
                     for(i=0;i<dim;i++){
                                          printf("\n%d",v[i]);
}}

2 Risposte

  • Re: Come al solito non trovo l'errore[aiuto]

    Qualcuno l'ho risolto, ora è rimasto solo uno: il primo elemento del vettore mi da sempre 0,come mai?
    #include <stdio.h>
    
    #define N 10
    
    void flush(void);
    void Riempi(int[],unsigned long);
    void Bsort(int[],unsigned long);
    void Stampa (int[],unsigned long);
    
    main(){
           int v [N];
           unsigned short scelta;
           unsigned long inf, sup;
           do{
                printf("\n1-riempi");
                printf("\n2-ordina");
                printf("\n3stampa");
                printf("inserisci la scelta: ");
                scanf("%u",&scelta);
                flush();
                switch(scelta){
                               case 1: Riempi(v,N);
                                       break;
                               case 2: Bsort(v,N);
                                       break;
                               case 3: Stampa(v,N);
                                       break;
                                       }
                                       }while(scelta<4);
                                       }
    void flush (){
         while(getchar()!='\n');
         }
    void Riempi (int v[],unsigned long dim){
         unsigned long i;
                         for(i=0;i<dim;i++){
                                              printf("elemento in posizione [%d]: ",i);
                                              scanf("%d",&v[i]);
                                              }
                                            }
    void Bsort(int v[],unsigned long dim){
         unsigned long i,j;
         int t;
    for (i=0; i<dim-1; i++)
        for (j=0; j<dim-i-1; j++)
            if (v[j] > v[j+1])
            {
                t=v[j];
                v[j]=v[j+1];
                v[j+1]=t;
            }
    }
    void Stampa (int v[],unsigned long dim){
          unsigned long i;
                         for (i=0; i <dim; i++)
    printf("%d\n",v[i]);
    }
    
  • Re: Come al solito non trovo l'errore[aiuto]

    Qualcuno saprebbe anche adattare lo stesso programma pero con un vettore dinamico?
Devi accedere o registrarti per scrivere nel forum
2 risposte