nene896 (Normal User)
Rookie
Messaggi: 21
Iscritto: 25/06/2009
|
Scusami!! hai ragione ma praticamente ho avuto poco più di 24 ore x metterea posto tutto
IL TESTO è su questo link x' spiegarlo nn è semplice!!(o almeno n ci metterei 3 anni!!)
http:http://ulisse.polito.it/matdid/3ing_eln_L2170_TO_0/mat_com ...
E' quello datato 090630
nentre la variabile di cui tu parli serve a contggiare il numero di pt
|
|
Lawliet (Normal User)
Expert
Messaggi: 386
Iscritto: 09/04/2009
|
Bene, perchè nella funzione inserisci coordinate metti *numeropt = indice -1 ?
7 deve essere altrimenti negli altri for vai a contare da 0 a 5 quindi solo 6 e lasci fuori ben 4 elementi...
|
|
nene896 (Normal User)
Rookie
Messaggi: 21
Iscritto: 25/06/2009
|
sostituendo *numpt=indice;
il risultato resta 14... a questo punto credo che aver omesso la parentesi(senza ripetizioni) forse crei dei problemi... concordi con me Lawliet?
|
|
Lawliet (Normal User)
Expert
Messaggi: 386
Iscritto: 09/04/2009
|
Ehm... io mi riferivo nella funzione inserisci coordinate:
---> *numpt = indice -1;
calcoli effettivamente 6, invece no.. devi lasciare *numeropt = indice;
Così nei for fai da 0 a 6, quindi numeropt 7. Se invece lasciamo come sta adesso fai soltanto da 0 a 5 quindi 6 ed è sbagliato
E cambiando questo cambia un bel pò.
Ultima modifica effettuata da Lawliet il 01/07/2009 alle 23:25 |
|
nene896 (Normal User)
Rookie
Messaggi: 21
Iscritto: 25/06/2009
|
Ho fatto come dici nella inserisci...praticamente passo il numerodei rettangoli
Ma il valore che mi da è sempre 14...
non va... non va
|
|
Lawliet (Normal User)
Expert
Messaggi: 386
Iscritto: 09/04/2009
|
Ma da dove lo vedi questo numero 14? Io ho messo una printf appena dopo la funzione inserisci per controllare che sia 7 e non 6 e poi 14 è il risultato delle coppie, quindi teoricamente è giusto.. ma non sempre perchè devi togliere qualche coppia se ci sono rettangoli sovrapposti, o correggere quando hanno in comune parti di due o più triangoli Questo l'hai fatto?
edit: come il numero dei tuoi messaggi! fine
riedit: tornando seri.. modificando quella istruzione *numpt = indice -1; in *numpt = indice; il risultato dell'area adesso è: 53.00000 semplicemente per il motivo che ho detto prima ^^'
Ultima modifica effettuata da Lawliet il 01/07/2009 alle 23:51 |
|
nene896 (Normal User)
Rookie
Messaggi: 21
Iscritto: 25/06/2009
|
era vero ora non più.....
cmq 14 mi viene l'area... che dovrebbe verire 43!!! capisci ke dramma!!
se hai letto più o meno ho fatto tutto tranne l'esclusione di quelli uguali...
(poi dico sovrapponendosi l'area dovrebbe aumentare.. non diminuire!! No!!!???!! )
|
|
Lawliet (Normal User)
Expert
Messaggi: 386
Iscritto: 09/04/2009
|
Cosa hai modificato? Io semplicemente ho preso il tuo e modificato solo dove sta il commento:
Codice sorgente - presumibilmente C++ |
void inserisci_coord(punto**ptesta,int *numpt) { char nomefile[MAX]; punto *paux; float x1,y1,x2,y2; int indice; indice=0; printf("inserisci il nome file\n"); scanf("%s",nomefile,"r"); if((pfile=fopen(nomefile,"r"))!=NULL) while(fscanf(pfile,"%f%f%f%f",&x1,&y1,&x2,&y2)!=EOF) { paux=(punto*)malloc(sizeof(punto)); (*paux).x[0]=x1; (*paux).x[1]=x2; (*paux).y[0]=y1; (*paux).y[1]=y2; (*paux).prox=*ptesta; *ptesta=paux; indice++; } fclose(pfile); *numpt=indice; //<--------------------------------------------------------------- return; }
|
E mi esce 53 questo solo perchè hai sicuramente calcolato anche aree di due o più rettangoli con parti in comune. Scusa, ma se due rettangoli sono sovrapposti tipo:
9.0 8.0 10.0 9.0
9.0 8.0 10.0 9.0
L'area come la calcoli? Calcolando l'area di un solo rettangolo! No?
Ultima modifica effettuata da Lawliet il 02/07/2009 alle 0:03 |
|