Visualizzazione dei risultati da 1 a 7 su 7

Visualizzazione discussione

  1. #1
    Utente bannato
    Registrato dal
    Oct 2013
    Messaggi
    23

    Aiuto programma c funzioni

    Salve, il mio problema è questo:

    Si scriva una funzione in C, denominata cerca, che ricerchi la presenza di un elemento in un vettore di interi. La funzione riceve in ingresso tre parametri: 1. un vettore di interi vettore[] nel quale ricercare il valore; 2. un valore intero dimensione che indica quanti elementi contiene il vettore; 3. il valore intero elem che deve essere ricercato. La funzione deve restituire un valore intero, ed in particolare: 1. se il valore elem è presente nel vettore, allora la funzione restituisce l’indice della posizione alla quale si trova tale valore; 2. se il valore elem è presente più volte, si restituisca l’indice di tutte le occorrenze; 3. se il valore elem non è presente nel vettore, si restituisca -1. Si modifichi poi la funzione cerca definendo la funzione cerca_vettore_ordinato che faccia le stesse cose descritte in precedenza ma sul vettore ordinato.

    Sono riuscito ad implementare il mio programma in questo modo; il problema è che non mi restituisce tutte le occorrenze di un valore, ma solo la prima occorrenza; mi potete aiutare?

    codice:
    #include <stdio.h>
    #include <stdlib.h>
    
    int cerca(int *vettore,int dimensione,int valore)
    {
          int i,indice,trovato_elem;//variabili ciclo
          for(i=0;i<dimensione;i++)//scorre il vettore
          {
             if(vettore[i]==valore)//se il valore viene trovato all'interno del vettore
             {
                return i;//restituisce l'indice in cui si trova l'elemento
             }
          }
          return -1;//se l'elemento non è presente restituisce -1
    }
    int cerca_ordinato(int *vettore,int dimensione,int valore)
    {
        int i;//variabile ciclo
        int tmp;//variabile temporanea per ordinamento
        int d=dimensione;//dimensione vettore
        int primo;//questa variabile contiene il primo nuemro dell'intervallo preso in considerazione
     int ultimo;//ultimo elemento dell'array
        primo=0;
        ultimo=dimensione-1;
     int meta;//metà intervallo
     /*CICLO PER ORDINARE IL VETTORE*/
        while(d>0)
        {
           for(i=0; i<d;i++)
           {
               if(vettore[i]>vettore[i+1])
               {
                   tmp=vettore[i];
                   vettore[i]=vettore[i+1];
                   vettore[i+1]=tmp;
               }
           }
           d--;
           }
           /*FINE ORDINAMENTO*/
        if (ultimo<0)
            return -1;
     while(primo<=ultimo)
     {
            meta=(primo+ultimo)/2;//divide il vettore il due parti
            if(vettore[meta]==valore) 
          {
           return meta;
          }
      if(vettore[meta]<valore)//se l'emento non è presente allora si restringe l'intervallo
                primo=meta+1;
          else
               ultimo=meta-1;
      }
        return -1;//se l'elemento non è presente nel vettore allora ritorna il valore -1
    }
    int main(int argc, char *argv[])
    {
      int i,valore,dimensione,*p;
      printf("Quanti numeri vuoi inserire?:" );
      scanf("%d",&dimensione);
      p=(int*)malloc(dimensione*sizeof(int));//allochiamo la memoria
      for(i=0;i<dimensione;i++)
      {
        printf("Inserire elemento del vettore: ");//chiede l'inserimento degli elementi
        scanf("%d", &p[i]);//legge i valori da tastiera
      }
      printf("Numero da cercare:");//chiede il numero da cercare nel vettore
      scanf("%d",&valore);//legge il numero da cercare
      printf("La posizione del valore inserito nel vettore e': %d\n", cerca(p++,dimensione,valore));
      printf("La posizione del valore inserito nel vettore ordinato e': %d\n", cerca_ordinato(p,dimensione,valore));
      system("pause"); 
      free(p);
      return 0;
    }
    Ultima modifica di LeleFT; 19-11-2013 a 16:49 Motivo: Aggiunta 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.