Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    24

    [C]Piccolo aiuto vettori

    codice:
    #include<stdio.h>
    #define N 3
    #define M 4
    #define C 7
    float v1[N],v2[M],v3[C];
    
    void flush(void);
    void riempi(float [],int);
    void stampa(float [],int);
    void scambia(float [],unsigned long,unsigned long);
    void bubblesort(float[],int); 
    
    main(){
           unsigned long i,j,k;
           riempi(v1,N);
           riempi(v2,M);
           
           
           bubblesort(v1,N);
           bubblesort(v2,M);
           stampa(v1,N);
           stampa(v2,M);
           
           while(i<N && j<M){
                             if(v1[i]<v2[j])v1[i++]=v3[k++];
                             else if(v2[j]<v1[i])v2[j++]=v3[k++];
    }
    
           while(i<N)v1[i++]=v3[k++];
           while(j<M)v2[j++]=v3[k++];
           
           stampa(v3,C);
     
     
     
     getchar();
    
    
           
    }
    
    void flush(void){
         fflush(stdin);
    }
    void riempi(float v[],int dim){
         unsigned long i;
         
         for(i=0;i<dim;i++){
                            printf("inserisci l'elemento v[%lu]",i);
                            scanf("%f",&v[i]);
                            flush();
    }
    }
    void stampa(float v[],int dim){
    
                                   unsigned long i;
                                   for(i=0;i<dim;i++) printf("v[%lu]=%f",i,v[i]);
                                   getchar();
    }
    void scambia(float v[],unsigned long i, unsigned long j){
    
                                                             float tmp;
                                                             tmp=v[i];
                                                             v[i]=v[j];
                                                             v[j]=tmp;
    }
    void bubblesort(float v[],int dim){
                                       unsigned long i,j;
                                       
                                       short ordinato =0;
                                       for(j=0;j<dim-1 && !ordinato;j++){
                                                                         ordinato=1;
                                                                         for(i=dim-1;i>j;i--)
                                                                         if(v[i]<v[i-1]){
                                                                                 scambia(v,i,i-1);
                                                                                 ordinato=0;
    }         
    }     
    }
    Praticamente il programma funziona fino alla funzione stampa dopodichè va in blocco..Adesso il resto del codice , so che così non si poteva fare però l'ho lasciato per fare capire quello che volvo fare...Praticamente dopo che questi due vettori venivano ordinati, il vettore v3 dovrebbe essere la somma dei due vettori e dovrebbe anch'esso essere ordinato...Il problema è che io non saprei come farlo l'ho fatto così perchè so che una volta usata la funzione riempi il vettore resta in quel modo perchè riempendolo, vengono modificate le aree di memoria relative al vettore...Solo che il programma non va..Volevo sapere come bisognava fare...Grazie in anticipo

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Scusa ... riesci a spiegare un po' meglio qual è il problema?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    24
    Hai ragione, mi sono perso in chiacchiere...praticamente il programma funziona fino a stampa(v1,N) e stampa(v2,N) dopo va in crash...Siccome il mio scopo era dati questi due vettori v1,v2 ordinarli tramite bubblesort e creare un vettore v3 che fosse somma di questi due vettori...Adesso ,fino a stampa(v2,N) credo sia giusto, quello che c'è dopo come si sistema..

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Tanto per cominciare i e j non sono inizializzati prima di essere usate nella while e questa cosa deve essere corretta.

    Poi, non si capisce cosa tu voglia fare con le while ... spiegacelo ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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.