Visualizzazione dei risultati da 1 a 5 su 5

Visualizzazione discussione

  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2014
    Messaggi
    29

    [C] funzione: cerca più occorrenze in un vettore int

    ciao, ho riscontrato un problema in un esercizio dove bisogna scrivere una funzione in c che deve cercare un numero all'interno di un vettore e restituire tutte le sue occorrenze, ma quando chiamo la funzione nel main l'esecuzione si blocca e non riesco a capire dove sbaglio. La funzione che ho scritto è questa:


    codice:
    int *cerca (int *vettore,int elem,int n)
    {
        int i, *vett=(int*)malloc(n*sizeof(int)),j=0;/*dichiaro le variabili locali*/
        if (vett==NULL)
            return NULL;
        for(i=0;i<n;i++)
            vett[i]=-1;
        for (i=j=0;i<n;i++)/*faccio un ciclo che mi cerca l'elemento*/
            if (vettore[i]==elem) vett[j++]=i;
            
        return vett;        
    }

    vi posto anche il main:


    codice:
    int main()
    {
        int *vettore,n,i, elem, *vett;/*dichiaro le variabili locali al main e il puntatore*/
        /*chiedo e alloco il numero di elementi del vettore*/
        printf("Quanti numeri si vogliono nel vettore? ");
        scanf("%d",&n);
        vettore=(int*)malloc(n*sizeof(int));
        if (vettore==NULL){/*controllo che l'allocazione sia andata a buon fine*/
            printf("Errore nell\'allocazione");
            exit(EXIT_FAILURE);
        }
        /*genero casualmente il vettore*/
        printf("\n\nVettore generato casualmente:");
        srand(time(NULL));
        for(i=0;i<n;i++)
        {
            vettore[i]=(rand()%100);
            printf("%d ",vettore[i]);
        }
        /*chiedo che elemento si deve cercare all'interno del vettore*/
        printf("\n\nChe numero si desidera cercare?");
        scanf("%d",&elem);
        /*cerco l'elemento nel vettore non ordinato*/
        printf("\n\nLa posizione dell\'elemento inserito è: ");
        if((vett=cerca(vettore,elem,n)==NULL))
            {
                printf("Errore nell\'allocazione");
                return 1;
            }
        for(i=0;i<n &&  vett[i]!=-1;i++)
            printf(" %d",vett[i]+1);
        /*ordino il vettore attraverso la funzione "ordina" e lo stampo*/
        printf("\n\nVettore ordinato: ");
        ordina(vettore,n);
        for(i=0;i<n;i++)
            printf("%d ",vettore[i]);
        /*cerco l'elemento nel vettore ordinato attraverso la funzione "cerca_ordinato" e stampo la sua posizione*/
        printf("\nLa posizione del valore inserito è: %d",cerca_ordinato(vettore,elem,n));    
        /*dealloco il vettore*/
        free(vettore);
        
        return 0;
    }
    Ultima modifica di LeleFT; 14-11-2014 a 14:18 Motivo: Aggiunti i tag CODE

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 © 2025 vBulletin Solutions, Inc. All rights reserved.