Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Errori  nel programma dell'esame!!!
Forum - C/C++ - Errori nel programma dell'esame!!! - Pagina 3

Pagine: [ 1 2 3 4 5 6 ] Precedente | Prossimo
Avatar
nene896 (Normal User)
Rookie


Messaggi: 21
Iscritto: 25/06/2009

Segnala al moderatore
Postato alle 22:49
Mercoledì, 01/07/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 :)

PM Quote
Avatar
Lawliet (Normal User)
Expert


Messaggi: 386
Iscritto: 09/04/2009

Segnala al moderatore
Postato alle 23:03
Mercoledì, 01/07/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...

PM Quote
Avatar
nene896 (Normal User)
Rookie


Messaggi: 21
Iscritto: 25/06/2009

Segnala al moderatore
Postato alle 23:17
Mercoledì, 01/07/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?

PM Quote
Avatar
Lawliet (Normal User)
Expert


Messaggi: 386
Iscritto: 09/04/2009

Segnala al moderatore
Postato alle 23:25
Mercoledì, 01/07/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
PM Quote
Avatar
nene896 (Normal User)
Rookie


Messaggi: 21
Iscritto: 25/06/2009

Segnala al moderatore
Postato alle 23:38
Mercoledì, 01/07/2009
Ho fatto come dici nella inserisci...praticamente passo il numerodei rettangoli
Ma  il valore che mi da è sempre 14...
:-|non va... non va:-|

PM Quote
Avatar
Lawliet (Normal User)
Expert


Messaggi: 386
Iscritto: 09/04/2009

Segnala al moderatore
Postato alle 23:44
Mercoledì, 01/07/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: :ot: come il numero dei tuoi messaggi! :rotfl: fine :ot:
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
PM Quote
Avatar
nene896 (Normal User)
Rookie


Messaggi: 21
Iscritto: 25/06/2009

Segnala al moderatore
Postato alle 23:53
Mercoledì, 01/07/2009
:D era vero:D ora non più.....:rofl:
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!!!???!!:om: )

PM Quote
Avatar
Lawliet (Normal User)
Expert


Messaggi: 386
Iscritto: 09/04/2009

Segnala al moderatore
Postato alle 0:01
Giovedì, 02/07/2009
Cosa hai modificato? Io semplicemente ho preso il tuo e modificato solo dove sta il commento:

Codice sorgente - presumibilmente C++

  1. void inserisci_coord(punto**ptesta,int *numpt)
  2. {
  3.      char nomefile[MAX];
  4.      punto *paux;
  5.      float x1,y1,x2,y2;
  6.      int indice;
  7.      indice=0;
  8.      printf("inserisci il nome file\n");
  9.      scanf("%s",nomefile,"r");
  10.      if((pfile=fopen(nomefile,"r"))!=NULL)
  11.      while(fscanf(pfile,"%f%f%f%f",&x1,&y1,&x2,&y2)!=EOF)
  12.      {
  13.          paux=(punto*)malloc(sizeof(punto));
  14.          (*paux).x[0]=x1;
  15.          (*paux).x[1]=x2;
  16.          (*paux).y[0]=y1;
  17.          (*paux).y[1]=y2;
  18.          (*paux).prox=*ptesta;
  19.          *ptesta=paux;
  20.          indice++;
  21.      }
  22.   fclose(pfile);
  23. *numpt=indice; //<---------------------------------------------------------------
  24. return;
  25. }



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
PM Quote
Pagine: [ 1 2 3 4 5 6 ] Precedente | Prossimo