Forum by laureateci.it
[ Home | REGOLE FORUM | Tutti i blog | Profilo | Registrati | CHAT | Discussioni Attive | Discussioni Recenti | Segnalibro | Msg privati | Sondaggi Attivi | Utenti | Download Informatica | Download ICD | Download TPS | Download Magistrale | Download Specialistica | Giochi | Cerca nel web | cerca | faq | RSS ]
Nome Utente:
Password:
Salva Password
Password Dimenticata?

 Tutti i Forum
 INFORMATICA - Primo Anno
 Programmazione
 Ricerca binaria su un vettore di date

Nota: Devi essere registrato per poter inserire un messaggio.
Per registrarti, clicca qui. La Registrazione è semplice e gratuita!

Larghezza finestra:
Nome Utente:
Password:
Modo:
Formato: GrassettoCorsivoSottolineatoBarrato Aggiungi Spoiler Allinea a  SinistraCentraAllinea a Destra Riga Orizzontale Inserisci linkInserisci EmailInserisci FlashInserisci Immagine Inserisci CodiceInserisci CitazioneInserisci Lista Inserisci Faccine
   
Icona Messaggio:              
             
Messaggio:

  * Il codice HTML è OFF
* Il Codice Forum è ON

Smilies
Approvazione [^] Arrabbiato [:(!] Bacio [:X] Bevuta [:273]
Caldo [8D] Compiaciuto [8)]    
compleanno [:269]
Davvero Felice [:D] Diavoletto [}:)] Disapprovazione [V] Domanda [?]
Felice [:)] Fumata [:29] Goloso [:P] Imbarazzato [:I]
Infelice [:(] Morte improvvisa da [:62]
Morto [xx(] Occhio Nero [B)] Occhiolino [;)] Palla 8 [8]
pc [:205]    
Riproduzione [:76]
Scioccato [:O]      

   Allega file
  Clicca qui per inserire la tua firma nel messaggio.
Clicca qui per sottoscrivere questa Discussione.
    

V I S U A L I Z Z A    D I S C U S S I O N E
Stewie83 Inserito il - 11/02/2006 : 18:30:28
Ragà.......qualcuno ha fatto l'esercizio 5 dell'esercitazione del 20/12/2005 di programmazione in C di Lops???
Non riesco ad implementare l'algoritmo di ricerca binaria su un vettore di date nel formato gg/mm/aaaa.
Se qualcuno è così gentile da darmi una mano....ne sarò riconoscente!!
7   U L T I M E    R I S P O S T E    (in alto le più recenti)
computerizzato Inserito il - 28/02/2006 : 21:31:22
Citazione:
Messaggio inserito da Stewie83

Ragà.......qualcuno ha fatto l'esercizio 5 dell'esercitazione del 20/12/2005 di programmazione in C di Lops???
Non riesco ad implementare l'algoritmo di ricerca binaria su un vettore di date nel formato gg/mm/aaaa.
Se qualcuno è così gentile da darmi una mano....ne sarò riconoscente!!


ciao sono nuovo e non so bene kome funziona si possono fare degli esercizi?amo molto il computer e la programmazione,e da poco a scuola mi sono battuto nei vettori,mi potete aiutare,grazie,mi piace molto il mondo dell'informatica e della programmazione,grazie per il vostro eventuale aiuto
ciao...............
mrluglio Inserito il - 13/02/2006 : 10:44:55
Citazione:
Messaggio inserito da fran_

ok, adesso è perfetto
grazie



prego!
ekkekkazz Inserito il - 13/02/2006 : 09:52:16
ok, adesso è perfetto
grazie
mrluglio Inserito il - 12/02/2006 : 17:46:33
togli il meno 1:

 { if (cmp_date(data,array[m])==1)
 array_size=m-1; 


e fallo diventare così:

 { if (cmp_date(data,array[m])==1)
 array_size=m; 


ekkekkazz Inserito il - 12/02/2006 : 17:12:47
facendo così non mi trova la prima data dell'array...

http://xoomer.virgilio.it/osource/data.c qui dovrebbe essere più ordinato
mrluglio Inserito il - 12/02/2006 : 17:09:56
molto semplicemente togli l'uguale alla condizione del while:

while(inf<=array_size){ i++;
m=(inf+array_size)/2;
...


deve diventare


while(inf<array_size){ i++;
m=(inf+array_size)/2;
...


Così dovrebbe funzionare!
ekkekkazz Inserito il - 12/02/2006 : 16:47:16
questo è quello che sono riuscito a combinare...
Citazione:
gestione_date.c



#include <stdio.h>


typedef struct date{
int giorno;
int mese;
int anno;
}DATA;
const DATA null={0,0,0};

int isequal(DATA data1,DATA data2) /* se data1==data2, ritorna 1 */
{
if (data1.anno==data2.anno)
if (data1.mese==data2.mese)
if (data1.giorno==data2.giorno)
return 1;
return 0;
}


int cmp_date(DATA data1, DATA data2) /* 0 se data1>=data2, 1 se data1<=data2, -1 se data1==data2 */
{
if (isequal(data1,data2)==0)
{
if (data1.anno>data2.anno)
return 0;
else
{
if (data1.mese>data2.mese)
return 0;
else
{
if (data1.giorno>data2.giorno)
return 0;
}
}
return 1;

}
return -1;

}

DATA binary(int array_size,DATA data,DATA array[]) /* se data è nell'array, restituisce la data dell'array */
{ int i=0; /* per valore... */
int m=0;int inf=0;


while(inf<=array_size){ i++;
m=(inf+array_size)/2;
if (cmp_date(data,array[m])==0)
inf=m+1;
else
{ if (cmp_date(data,array[m])==1)
array_size=m-1;
else
{ printf("Trovata, e l'indirizzo e': %d\n",&array[m]);return array[m];} /* ritorna per valore */
}
}
return null;
}





int main()
{
/* test cmp_date
DATA data1={13,12,2005};
DATA data2={12,12,2005};
printf("Risultato di cmp_date: %d", cmp_date(data1,data2));
getchar();
*/

/* test binary search */
DATA data_trovata=null;
DATA data={23,12,2005} ;
DATA array={{10,12,2005},{11,12,2005},{12,12,2005},{13,12,2005},{14,12,2005},{15,12,2005},{16,12,2005},{17,12,2005}};//,{18,12,2005},{19,12,2005}};

data_trovata=binary(sizeof(array)/sizeof(DATA),data,array);
if (isequal(data_trovata,null)==0)
{
printf("Indirizzo data del main: %d\n",&data);
printf("Data trovata: %d/%d/%d\n",data_trovata.giorno,data_trovata.mese,data_trovata.anno);
}


getchar();


}



praticamente funziona a metà, cioè se inserisco una data minore del 10/12/2005, giustamente non me la trova, ma se inserisco una data maggiore del 17/12/2005, me la trova! oO Questo perchè va a considerare la variabile data della main, come dice la printf con gli indirizzi... mah!... forse bisogna fare un controllo sull'indice m, ma veramente non riesco a capire perchè fa così...

Forum by laureateci.it © 2002 - 2012 Laureateci Communications Torna all'inizio della Pagina
Il DB ha risposto in 0,06 secondi.

TargatoNA.it | SuperDeejay.Net | Antidoto.org | Brutto.it | Equiweb.it | Snitz Forum 2000