Ricerca con più parametri

di il
1 risposte

Ricerca con più parametri

Salve a tutti sto facendo un programma in cui vengono memorizzate delle informazioni e l'utente può ricercarle in base a 3 parametri(nel mio caso: prezzo,superficie e zona); io avrei intenzione di fare una ricerca libera, nel senso che l'utente può scegliere se inserire solo il prezzo o solo la superficie oppure solo la zona o solo due ecc.. solo che non riesco a sviluppare l'algoritmo di questa ricerca.Poichè la questione è abbastanza ingarbugliata vi faccio un esempio pratico:

Es:
l'utente mette zona=8 prezzo=2 superficie=(non inserisce niente)
quando viene seguita la ricerca si devono visualizzare solo risultati(nel mio caso case salvate in un file strutturato) che hanno come zona 8,prezzo 2 e qualsiasi superficie a patto che abbia gli stessi valori di zona e prezzo; Insomma per capirci tipo le ricerche di ww.subito.it fateci caso.

Spero che mi sono spiegato bene, vi ringrazio anticipatamente, aspetto vostre risposte.Grazie di nuovo

1 Risposte

  • Re: Ricerca con più parametri

    Sinceramente la cosa non la vedo cosi complessa perchè: devisemlicemente fare dei confronti:
    la logica e questa:
    opzione 1,opzione 2 opzione 3 ; dati immessi dall'utente a scelta
    all'intero del ciclo di lettura file basta che metti:
    nel ciclo di lettura file
    flag settaggio stampa = 0
    switch (zona)
    case 1: 
       switch (prezzo)
       stampa ==1 si esci no stampa il record
            case 1 :
                 switch (superfice)
                       case 1: record da stampare = numero record letto
                      defoult : ritorna allo switch precedente
    fine ciclo lettura file
    ricordati di mettere dopo ogni stampa il flag di settaggio = 1 altrimenti ti stampa tutti i record!
    usa questa struttura per tutti i casi e il gioco e fatto.
    in alternativa puoi usare
    if (prezzo==opzione1 && zona == opzione2 && superfice==opzione 3) { stampa record vai al prossimo record} 
    if (prezzo==opzione1 && zona == opzione2 && opzione 3 is null) { stampa record ai al prossimo record} 
    if (prezzo==opzione1 && opzione2 is null && superfice =opzione3) { stampa record ai al prossimo record} 
     if (prezzo==opzione1 && opzione2 is null  && opzione3 is null) { stampa record ai al prossimo record}
    if (opzione1 is null && zona == opzione2 && superfice == opzione 3) { stampa record ai al prossimo record}  
    if (opzione1 is null && zona == opzione2 && opzione3 is null) { stampa record ai al prossimo record} 
    if (opzione1 is null && opzione2 is null && superfice == opzione3 ) { stampa record ai al prossimo record}

    ti consiglio il secondo metodo più semplice e non da adito ad errori
    se le scelte sono maggiori di 3 allora ti consiglio un metodo di selezione progressiva che consiste in questo:
    ti salvi tutti i record in un file di comodo che abbiano soddisfatto la prima opzione1
    ti salvi tutti i record in un file di comodo che abbiano soddisfatto la prima opzione2 utilizzando il file creato precedentemente
    ripeti il passaggio per ogni opzione utilizzando sempre il file precedente
    l'ultimo file conterrà i dati da stampare.
Devi accedere o registrarti per scrivere nel forum
1 risposte