Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2008
    Messaggi
    9

    Verifica presenza elementi in vettore[C]

    Buona sera a tutto il forum

    espongo ora il mio problema che persiste da un pò sperando in un vostro aiuto:
    ecco, io vorrei riuscire a creare una funzione che riceva in input un variabile int e controlli la presenza del numero inserito in input in un vettore dichiarato all'interno della stessa.
    A questo punto con un ciclo leggo il contenuto dell'array e poi ritorno 0 se è stato trovato il numero nel vettore; oppure ritorno 1(aggiungendo quindi il numero al vettore con un certo indice) se non viene trovato.
    Ciò per evitare che più numeri in input si ripetano più volte durante l'esecuzione del programma generale, pongo quindi il seguente quesito sostenuto da un codice che aiuterà a capire(almeno spero) ciò che io intendo fare:
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    int verify(int n);
    
    main()
    {
        int n, k;
        
        do{
        printf("Inserisci un numero: ");
        scanf("%d", &n);
        
        k = verify(n);
        if(k == 1)
         printf("Non e' nel vettore\n");
        else
         printf("E' nel vettore\n");
        }while(k!=1455578855);
        
     system("PAUSE");
    return 0;
    }
    
    int verify(int n) { 
        int i, a, count=0;
        int arr[count]; 
        for(i=0; i<=count; ++i) {
                 a = arr[i];
                 if(n == a) 
        return 0;    
        }
        n = arr[count]; count++;
     return 1;
    }
    sono agli inizi, e spero in un vostro cordiale aiuto...

  2. #2

    Re: Verifica presenza elementi in vettore[C]

    Visto che sei all'inizio è meglio se decidi di dare una dimensione prefissata al vettore di interi e
    soprattutto di dichiararlo nella funzione principale main(), e di aggiungerlo ai parametri della funzione verify().
    La soluzione che hai adottato tu non ha alcun senso, anche in vertù del fatto che sono tutte
    variabili dichiarate localmente in una funzione secondaria, e che quindi scompariranno
    quando questa terminerà l'esecuzione.
    01010011 01100001 01101101 01110101 01100101 01101100 01100101 01011111 00110111 00110000
    All errors are undocumented features waiting to be discovered.

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2008
    Messaggi
    9
    scusami, forse non ho ben capito, ma ho prestato particolare attenzione a ciò che hai sottolineato, ovvero "scompariranno".
    Dunque, è vero sì che si tratta di una funzione secondaria, ma ponendo il caso di volerla utilizzare in tale modo, è impossibile?! No, perchè ciò che ti ho appena chiesto è semplicemente il dubbio che mi è nato leggendo la tua risposta.
    E poi, dato che non mi sembra di leggere che sia impossibile utilizzare una tal funzione, mi spiegheresti come mantenere le variabili all'interno del vettore impostato nella funzione?
    magari con un piccolo esempio di ciò che intendi...

    intanto grazie per la disponibilità

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Quello che Samuele ti ha detto e' che l'array

    int arr[count];

    esiste solamente all'interno della funzione e quindi non ha senso utilizzarlo per controllare i dati immessi.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    il vettore così dichiarato (oltra al fatto che non ha senso dichiararlo nella funzione) ha dimensione 0 quindi vuoto.. anche se tu chiamassi la funzione n volte il vettore sarebbe sempre "nuovo" e quindi vuoto e all'uscita verrebbe deallocato perchè locale..

    Quindi, dichiaralo nel main e passalo alla funzione..

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2008
    Messaggi
    9
    ho fatto un bel pò di prove implementando tutto all'interno del main e poi con la funzione passandogli l'array...
    ragazzi ma ad una funzione un vettore come glielo si passa?
    mi sa che sbaglio qui...

    io faccio:
    codice:
    #include blablabla
    int ciao(int n, int vet[20]);
    
    int main() 
    {
       int vet[20];
       int a, n;
       a = ciao(n, vet);
       
    }
    
    int ciao(int n, int vet[20]) {
    
    ....codice...
    
    }
    più o meno è così?
    :master:

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    E quindi ... ? Hai provato il resto del codice ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2008
    Messaggi
    9
    ora abb stanco l'ho rifatto così, i precedenti(scusa per la precedente risposta poco chiara) non andavano:
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    int verify(int n, int arr[40]);
    
    main()
    {
        int n, k;
        int arr[40];
        
        do{
        printf("Inserisci un numero: ");
        scanf("%d", &n);
        
        k = verify(n, arr);
        if(k == 1)
         printf("Non e' nel vettore\n");
        else
         printf("E' nel vettore\n");
        }while(k!=1455578855);
        
     system("PAUSE");
    return 0;
    }
    
    int verify(int n, int arr[40]) { 
        int i, a, count=0;
         
        for(i=0; i<=count; ++i) {
                 a = arr[i];
                 if(n == a) 
        return 0;    
        }
        n = arr[count]; count++;
     return 1;
    }
    e anche questo come gli altri che ho tentato danno sempre "non è nel vettore"
    idee ragazzi? :master:

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Ok ... ma cosa dovrebbe fare la verify?

    Quando inserisci i dati nel vettore?

    Che senso ha

    for(i=0; i<=count; ++i) {

    se count e' 0?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  10. #10
    Utente di HTML.it
    Registrato dal
    Aug 2008
    Messaggi
    9
    il ciclo for dovrebbe essere così:

    for(i=0; i<=40; ++i)

    tuttavia passo a spiegare ciò che vorrei a parole piuttosto che con altri codici che magari confondono solo le idee...

    Dunque, una volta passato l'intero n(es. 1) alla funzione essa controllo tutti e 40( 41 partendo da zero) gli indici del vettore in esame.
    Se viene trovato il numero 1 all'interno del vettore suddetto la funzione ritorna 0(dovrebbe stampare a video "E' nel vettore").
    Se invece durante lo 'scansionamento' degli indici dell'array il numero in input nn viene trovato la funzione ritorna 1 (e quindi dovrebbe stampare 'Non è nel vettore') e lo aggiunge(il numero in input) all'indice immediatamente successivo libero nel vettore(indice definito da una variabile-contatore qual'è count).

    Ciò per evitare che più numeri uguali siano dati in input...

    Spero di essere stato chiaro nella spiegazione...

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.