Oppure

Loading
19/06/13 20:03
Afa
Questa è la dichiarazione
struct dati{
	float x1;
	float x2;
	float y1;
	float y2;
	float lunghezza[MAXDIM];
};

struct lista{
	int n;
	dati segmenti[MAXDIM];
};


e' questa è la porzione di codice che mi da errore

l.segmenti[i].lunghezza=sqrt((l.segmenti[i].x1-l.segmenti[i].x2)^2+(l.segmenti[i].y1-l.segmenti[i].y2)^2);


Qual'è il problema?
aaa
19/06/13 21:07
Poggi Marco
Ciao!

Con la tua riga di codice, tu calcoli la distanza tra due punti.
A tale scopo usi l' operatore ^ per l'elevamento a potenza. Purtroppo quest' ultimo è l'operatore bit a bit or esclusivo ( XOR ) ( alessioxx.altervista.org/blog/ ). Di conseguenza il risultato non sarà corretto.
Inoltre il campo lunghezza essendo dichiarato come vettore, bisogna indicare l' indice corrispondente.
aaa
20/06/13 18:06
Afa
No c'è un for... hai ragione e' così che lo devo scrivere?
for(int i=0; i < l.n; i++){
		l.segmenti[i].lunghezza=sqrt(pow((l.segmenti[i].x1-l.segmenti[i].x2),2)+pow((l.segmenti[i].y1-l.segmenti[i].y2),2));
	}
aaa
20/06/13 18:55
Poggi Marco
Sembra corretto. Nel programma funziona?
aaa
20/06/13 19:05
questo ti assicuro funziona, è preso da una mia classe:
DistanzaPuntoPunto(Punto* PrimoPunto, Punto* SecondoPunto)
{
	return sqrt(pow(PrimoPunto->Ascissa() - SecondoPunto->Ascissa(),2) + pow(PrimoPunto->Ordinata() - SecondoPunto->Ordinata(),2));
}


occhio ad usare sqrt, perchè ritorna un double non un float e potresti perdere per strada bit
20/06/13 19:16
quello che non so come si chiama

l.segmenti[i].lunghezza=sqrt((l.segmenti[i].x1-l.segmenti[i].x2)^2+(l.segmenti[i].y1-l.segmenti[i].y2)^2);

A parte quanto detto da Poggi Marco, mi sembra che tu tenti di mettere un valore float in un float[], in quanto lunghezza è dichiarato come array di float...
Dovresti fare l.segmenti[i].lunghezza[i]=..... per non avere errori, ma così su 2 piedi mi sembra che l'errore sta più nell'aver dichiarato lunghezza come array
aaa
21/06/13 10:11
Afa
Si e' giusto, l'errore era su lunghezza anche, infatti mi dava lo stesso errore pur usando pow e mi pareva strano!
Ora funziona vi ringrazio!:k:
aaa