Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    337

    [C] struct, ricerca

    ho definito un vettore di apiezza 99 con dei nomi inseriti dentro, però non riesco a ricercare da un nome specifico, ecco il codice ;

    codice:
    for (i=0; i<99; i++) {
    	trovato =(strcmp ( numero_utenti[i].name.nome, "elisabetta")); if (trovato==1){printf ("il nome %s trovato in posizione %d \n\n",numero_utenti[i].name.nome, i ); trovato=-99;}
    }
    il problema è che mi stampa tutti i nomi, e mi salta tra l'altro quello in posizione i=1

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Invia tutto quello che serve per capire il tuo codice ... la struttura, il vettore ...

    P.S. Ma a cosa serve la riga

    trovato=-99

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    337
    l'ho messa per iniziallizzarla a un valore non utile

    codice:
    # include <stdio.h>
    #include <string.h>
    int i=0;
    int trovato=-99;
    int main()
    {
    		
    typedef struct  {
    char nome[30];
    char cognome[30];
    } nominativo ;
    
    typedef struct  {
    int hh;
    int mm[15];
    int ss;
    } ora ;
    
    typedef struct {
    int gg;
    int mm[10];
    int aa;
    ora orario;
    } date ;
    
    typedef struct {
    char via[30];
    char civico[10];
    int cap;
    char comune[30];
    char prov[2];
    } indirizzo ;
    
    typedef struct {
    int area;
    int prefisso;
    int numero;
    } telefono ; 
    
    struct personanew {
    	nominativo name;
    	date registrazione;
    	indirizzo residenza;
    	telefono cellulare;
    };
    struct personanew numero_utenti[99];
     
    
    strcpy (numero_utenti[0].name.nome , "rossella");
     strcpy (numero_utenti[1].name.nome , "anna");
     strcpy (numero_utenti[2].name.nome , "massimo");
     strcpy (numero_utenti[3].name.nome , "antonio");
     strcpy (numero_utenti[4].name.nome , "luca");
     strcpy (numero_utenti[5].name.nome , "matteo");
     strcpy (numero_utenti[6].name.nome , "gloria"); 
     strcpy (numero_utenti[7].name.nome , "emanuele");
     strcpy (numero_utenti[8].name.nome , "tommaso");
     strcpy (numero_utenti[9].name.nome , "francesco");
     strcpy (numero_utenti[10].name.nome , "giovanni");
     strcpy (numero_utenti[11].name.nome , "elena");
     strcpy (numero_utenti[12].name.nome , "caterina");
     strcpy (numero_utenti[13].name.nome , "tommaso");
     strcpy (numero_utenti[14].name.nome , "agnese");
     strcpy (numero_utenti[15].name.nome , "alberto"); 
     strcpy (numero_utenti[16].name.nome , "luisa");
     strcpy (numero_utenti[17].name.nome , "pamela");
     strcpy (numero_utenti[18].name.nome , "adriano");
     strcpy (numero_utenti[19].name.nome , "alice");
     strcpy (numero_utenti[20].name.nome , "marco");
     strcpy (numero_utenti[21].name.nome , "liviana");
     strcpy (numero_utenti[22].name.nome , "rocco");
     strcpy (numero_utenti[23].name.nome , "patrizia");
     strcpy (numero_utenti[24].name.nome , "giordano"); 
     strcpy (numero_utenti[25].name.nome , "giuditta");
     strcpy (numero_utenti[26].name.nome , "antonella");
     strcpy (numero_utenti[27].name.nome , "lidia"); 
     strcpy (numero_utenti[28].name.nome , "tatiana");
     strcpy (numero_utenti[29].name.nome , "tito");
     strcpy (numero_utenti[30].name.nome , "niccolo");
     strcpy (numero_utenti[31].name.nome , "sara");
     strcpy (numero_utenti[32].name.nome , "alessandra");
     strcpy (numero_utenti[33].name.nome , "maria"); 
     strcpy (numero_utenti[34].name.nome , "ottavio");
     strcpy (numero_utenti[35].name.nome , "alice");
     strcpy (numero_utenti[36].name.nome , "giorgia");
     strcpy (numero_utenti[37].name.nome , "antonella");
     strcpy (numero_utenti[38].name.nome , "gerardo");
     strcpy (numero_utenti[39].name.nome , "sara");
     strcpy (numero_utenti[40].name.nome , "marco");
     strcpy (numero_utenti[41].name.nome , "iacopo");
     strcpy (numero_utenti[42].name.nome , "lorenzo"); 
     strcpy (numero_utenti[43].name.nome , "rossana");
     strcpy (numero_utenti[44].name.nome , "oscar");
     strcpy (numero_utenti[45].name.nome , "simona");
     strcpy (numero_utenti[46].name.nome , "gregorio");
     strcpy (numero_utenti[47].name.nome , "ivan");
     strcpy (numero_utenti[48].name.nome , "tacito");
     strcpy (numero_utenti[49].name.nome , "ilaria");
     strcpy (numero_utenti[50].name.nome , "antonella");
     strcpy (numero_utenti[51].name.nome , "veronica"); 
     strcpy (numero_utenti[52].name.nome , "greta");
     strcpy (numero_utenti[53].name.nome , "iacopo");
     strcpy (numero_utenti[54].name.nome , "andrea");
     strcpy (numero_utenti[55].name.nome , "niccolo");
     strcpy (numero_utenti[56].name.nome , "rossana");
     strcpy (numero_utenti[57].name.nome , "raul");
     strcpy (numero_utenti[58].name.nome , "alessio");
     strcpy (numero_utenti[59].name.nome , "marco");
     strcpy (numero_utenti[60].name.nome , "alberto"); 
     strcpy (numero_utenti[61].name.nome , "simonetta");
     strcpy (numero_utenti[62].name.nome , "ornella");
     strcpy (numero_utenti[63].name.nome , "ivan");
     strcpy (numero_utenti[64].name.nome , "adriana");
     strcpy (numero_utenti[65].name.nome , "simona");
     strcpy (numero_utenti[66].name.nome , "amalia");
     strcpy (numero_utenti[67].name.nome , "mattia");
     strcpy (numero_utenti[68].name.nome , "rebecca");
     strcpy (numero_utenti[69].name.nome , "adriano"); 
     strcpy (numero_utenti[70].name.nome , "simone");
     strcpy (numero_utenti[71].name.nome , "nicoletta");
     strcpy (numero_utenti[72].name.nome , "tatiana"); 
     strcpy (numero_utenti[73].name.nome , "rocco");
     strcpy (numero_utenti[74].name.nome , "pamela");
     strcpy (numero_utenti[75].name.nome , "rossella");
     strcpy (numero_utenti[76].name.nome , "caterina");
     strcpy (numero_utenti[77].name.nome , "barbara");
     strcpy (numero_utenti[78].name.nome , "veronica"); 
     strcpy (numero_utenti[79].name.nome , "raffaele");
     strcpy (numero_utenti[80].name.nome , "dante");
     strcpy (numero_utenti[81].name.nome , "ilaria");
     strcpy (numero_utenti[82].name.nome , "giulio");
     strcpy (numero_utenti[83].name.nome , "alberto");
     strcpy (numero_utenti[84].name.nome , "margherita");
     strcpy (numero_utenti[85].name.nome , "vanessa");
     strcpy (numero_utenti[86].name.nome , "alberto");
     strcpy (numero_utenti[87].name.nome , "marco"); 
     strcpy (numero_utenti[88].name.nome , "simone");
     strcpy (numero_utenti[89].name.nome , "elisabetta");
     strcpy (numero_utenti[90].name.nome , "ginevra");
     strcpy (numero_utenti[91].name.nome , "vittorio");
     strcpy (numero_utenti[92].name.nome , "sara");
     strcpy (numero_utenti[93].name.nome , "rebecca");
     strcpy (numero_utenti[94].name.nome , "laura");
     strcpy (numero_utenti[95].name.nome , "simona");
     strcpy (numero_utenti[96].name.nome , "esmeralda"); 
     strcpy (numero_utenti[97].name.nome , "luca");
     strcpy (numero_utenti[98].name.nome , "eugenio");
     
    
    for (i=0; i<99; i++) {
    	trovato =(strcmp ( numero_utenti[i].name.nome, "elisabetta")); 
    	{if (trovato==1){printf ("il nome %s trovato in posizione %d \n\n",numero_utenti[i].name.nome, i );}
    	trovato=-99;
    }
    }}

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    337
    il problema è che me li stampa tutti e inoltre mi salta il nome di indice 1

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Allora ...

    1) la for deve essere

    codice:
    for (i=0; i<99; i++)
       if(strcmp(numero_utenti[i].name.nome, "elisabetta")==0)
       {
          printf ("il nome %s trovato in posizione %d \n\n",numero_utenti[i].name.nome, i );
          break;
       }

    2) e' bene che tutte le typedef stiano FUORI dal main ... subito dopo gli include ...

    3) non capisco perche' tu scriva

    int hh;
    int mm[15];
    int ss;

    ovvero perche' i minuti siano dichiarati come vettore di 15 elementi interi ... quando, come per le ore e i minuti, basterebbe un solo int ...

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    337
    1) grazie così funziona, ma non capisco perchè il mio codice , anche se scritto molto peggio, non funzioni

    2) Da adesso le dichiarerò dopo include

    3) si è una stupiadata, è che volevo vedere solo un attimino un vettore di interi in una struct, un esperimentino che poi ho lasciato perdere


    Grazie

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Tu facevi il confronto con 1 e non con 0 e soprattutto non inserivi un break per concludere la for quando avevi trovato il nome ... e poi quell'assegnazione uguale a -99 non serve a niente ...

    Probabilmente non hai ben chiaro che numero restituisce la funzione strcmp e cosa significa ...

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    337
    ok capito,

    per quanto riguarda la strcmp so che restituisce uno se è vero il confronto altrimenti 0


    grazie

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Originariamente inviato da {-_-}
    per quanto riguarda la strcmp so che restituisce uno se è vero il confronto altrimenti 0
    No ... assolutamente ...

    Leggi bene cosa restituisce la strcmp

    http://www.cplusplus.com/reference/c...ng/strcmp.html

    ... prima di usare le funzioni di libreria, accertati di averne chiarissimo il funzionamento ...

  10. #10
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    337
    ok perfetto, dovevo prima accertarmi del significato

    grazie anche per l'ottimo sito e per l'aiuto

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.