Non so come costruire questo programma in c sui vettori

di il
7 risposte

Non so come costruire questo programma in c sui vettori

Mi si chiede di leggere in input 20 numeri, ognuno dei quali compreso tra 10 e 100.Ogni volta che leggete un numero visualizzatelo qualora non sia un duplicato di uno già letto. Preparatevi al caso peggiore in cui i numeri siano tutti differenti. Utilizzate il vettore piu piccolo possibile per risolvere.
beh...immagino che vadano creati gli spazi e poi inizializzati coi numeri, messi in ordine ascendente...e credo utilizzato un algoritmo di ricerca binaria...ma..non ho idea di come modificarlo...

#include <stdio.h>
#include <conio.h>

int ricercabinaria[int [], int, int]);

int 

main()
{
      int risultato, doppi = 0, j, pass;
      
      int numeri[20] = {30,32,65,10,22,55,100,55,33,54,78,36,63,15,76,32,12,59,80,60};
      
       for(pass = 0; pass <= 19; pass++){
      
      for(i = 0; i <= 19; i++)
      
         if(numeri[i] > numeri[i + 1]){
                 
         hold = numeri[i];
         
         numeri[i] = numeri[i + 1];
         
         numeri[i + 1] = hold;
         }
         }
         i++;
         }
         
         
      
      
      
      for(j = 0; j <= 19; j++){
      
      risultato = ricercabinaria(numeri, 0, 20);
      
      if(risultato == 1)
      
      printf("%d", numero[j]);
      
      else
      
          doppi += 1;
      
      }
      
      printf("\n\nI numeri non letti sono:%d", doppi);
      
      getch();
      }
      
int ricercabinaria(int b[],int low, int high)
{
    int mezzo;
    
    while(low <= high){
              
        mezzo = (low + high

7 Risposte

  • Re: Non so come costruire questo programma in c sui vettori

    
    Utilizzate il vettore piu piccolo possibile per risolvere.
    
    Per me il vettore + piccolo è questo:
    
    int *vett = NULL;
    
    ovvero il vettore senza celle. Ad ogni inserimento controlli se c'è nel vettore, se non c'è allochi una nuova cella e metti il numero, se c'è lo visualizzi.
  • Re: Non so come costruire questo programma in c sui vettori

    Scusa sky...ma...non capisco...cioè...devo utilizzare comunque una ricerca binaria?
  • Re: Non so come costruire questo programma in c sui vettori

    E certo come verifichi se il dato è nel vettore? La ricerca binaria presume che il vettore sia ordinato quindi anche una ricerca sequenziale può andar bene. Il testo non parla di che tipo di recerca eseguire.
  • Re: Non so come costruire questo programma in c sui vettori

    Ora non per fare il duro ma...la ricerca del vettore, è proprio basata sul concetto della ricerca di se stesso...all'interno di un gruppo di numeri...cioè...facendone una lineare o una binaria, troverà sempre se stesso...e non so come escludere se stesso dalla ricerca...credo di esserenel pallone...
  • Re: Non so come costruire questo programma in c sui vettori

    Ora non per fare il duro ma...la ricerca del vettore, è proprio basata sul concetto della ricerca di se stesso...all'interno di un gruppo di numeri...cioè...facendone una lineare o una binaria, troverà sempre se stesso...e non so come escludere se stesso dalla ricerca...credo di esserenel pallone...
  • Re: Non so come costruire questo programma in c sui vettori

    Il problema è che tu parti da un vettore finito. Guarda il problema sotto un altro punto di vista. Lanci il programma: leggi i dati da tastiera o da file non so. Ad ogni lettura dato tu cerchi nel vettore se il dato esiste. Se non esiste allochi uno spazio nel vettore per contenere il dato. Se il dato esiste stampa su output il dato. Alla fine il vettore conterrà solo dati univoci. In poche parole il problema ti sta dicendo: fai un algoritmo che dato una serie di dati ne scarti quelli ripetuti.
  • Re: Non so come costruire questo programma in c sui vettori

    Si, hai ragione sky, certe volte mi perdo in un bicchier d'acqua...mi ostinavo a pensarla come se avessi un vettore finito...e nno consideravo un input...poi mi sono svegliato...
    ecco, dovrebbe essere corretto:
    
    
    #include <stdio.h>
    
    main()
    
    {
          int valori[20] = {0};
          
          int x, y, chiave, z, f = 0;
          
          for(x = 0; x < 20; x++){
          counter = 0
          printf("Inserisci il numero: ");
           scanf("%d", &chiave);
           printf("\n");
            
          for(y = 0; y < 20; y++){
                
            if(chiave == valori[y])
            
              counter = 1;
              
              }
            
            
          if(counter == 0){
          
           valori[f] = chiave;
           
           f++;
          
           }
           }
           
           for(z = 0; z < 20; z++)
          
          printf("%2d", valori[z]);
          
        
          
         return 0;
          
          }
    
Devi accedere o registrarti per scrivere nel forum
7 risposte