Hallo ich möchte die 64 Punkte (X/Y) von einer Datei einlesen und ausgeben und dann die Punkte der rheinfolge nach verbinden und eine gesamtstrecke ausgeben!
Das einlesen der Punkte klappt und die einzulesene Datei wird auch ausgegeben. Dies habe ich mit diesem Quelltext verwirklicht.
#include <stdio.h>;
int main()
{
int iAnz, i , a;
float *x, *y , *z , b , c ;
FILE *datei;
datei = fopen("TSP03.dat","r") ;
fscanf(datei,"%d",&iAnz);
printf("Anzahl der Knoten : %d\n",iAnz);
x = new float[iAnz+1] ;
y = new float[iAnz+1] ;
z = new float[iAnz+1] ;
for(i=1;i<=iAnz;i++)
{
fscanf(datei,"%d",&a);
x=a;
fscanf(datei,"%f",&b);
y[i]=b;
fscanf(datei,"%f",&c);
z[i]=c;
printf("%d %1.2f %1.2f\n",a,b,c);
};
fclose (datei);
return 0 ;
} ;
die auszulesene Datei befindet sich unter dem letzen code.
Nun möchte ich die gesamtstrecke aller Punkte ausgeben . Dafür benutze ich die Formel Wurzel(x2-x1)²+(y2-y1)²
Das programm kompeliert zwar aber es gibt wider nur die Tabelle die ich einlsen wollte aus.
Vielen dank im vorraus für die Hilfe.
#include <stdio.h>
#include <math.h>
int main()
{
int iAnz, i , a, l;
float *x, *y , *z , b , c ,dist , gdist=0;
FILE *datei;
datei = fopen("TSP03.dat","r") ;
fscanf(datei,"%d",&iAnz);
printf("Anzahl der Knoten : %d\n",iAnz);
x = new float[iAnz+1] ;
y = new float[iAnz+1] ;
z = new float[iAnz+1] ;
for(i=1;i<=iAnz;i++)
{
fscanf(datei,"%d",&a);
x[i]=a;
fscanf(datei,"%f",&b);
y[i]=b;
fscanf(datei,"%f",&c);
z[i]=c;
// printf("%d %1.2f %1.2f\n",a,b,c);
}
for(l=1;l<=65;l++)
{
dist =sqrt(pow(y[i+1]-y[i],2)+pow(z[i+1]-z[i],2));
gdist = gdist+dist;
printf("Das ist die Gesamtlänge %f\n", gdist);
}
return 0 ;
}
64
1 5.00 0.20
2 0.50 2.10
3 4.20 0.50
4 8.00 4.50
5 1.30 8.00
6 6.90 5.90
7 0.90 4.80
8 7.30 1.30
9 3.90 2.00
10 8.30 9.90
11 3.90 4.90
12 9.40 4.60
13 5.80 6.70
14 6.40 0.90
15 4.70 4.00
16 3.10 2.30
17 0.80 0.60
18 3.00 1.40
19 7.90 2.80
20 5.80 7.80
21 8.50 2.70
22 5.30 0.60
23 7.20 7.40
24 4.70 7.60
25 0.30 3.60
26 1.10 1.80
27 5.00 4.70
28 7.30 3.90
29 0.50 7.70
30 7.30 8.60
31 0.60 0.20
32 4.60 9.90
33 0.90 0.50
34 6.40 2.00
35 1.90 2.40
36 2.20 3.40
37 4.40 2.90
38 8.10 6.00
39 3.70 9.90
40 5.30 5.00
41 5.80 1.20
42 8.90 6.20
43 8.10 7.60
44 8.10 5.10
45 7.10 6.90
46 1.70 9.10
47 8.70 3.70
48 5.70 3.10
49 2.00 3.30
50 1.90 2.80
51 9.80 1.90
52 6.00 4.40
53 2.80 0.20
54 9.50 4.90
55 7.20 0.50
56 7.10 2.50
57 7.10 3.70
58 1.10 6.30
59 2.70 3.10
60 5.10 4.50
61 1.80 9.70
62 4.00 1.50
63 3.70 1.50
64 6.80 9.10
Das einlesen der Punkte klappt und die einzulesene Datei wird auch ausgegeben. Dies habe ich mit diesem Quelltext verwirklicht.
#include <stdio.h>;
int main()
{
int iAnz, i , a;
float *x, *y , *z , b , c ;
FILE *datei;
datei = fopen("TSP03.dat","r") ;
fscanf(datei,"%d",&iAnz);
printf("Anzahl der Knoten : %d\n",iAnz);
x = new float[iAnz+1] ;
y = new float[iAnz+1] ;
z = new float[iAnz+1] ;
for(i=1;i<=iAnz;i++)
{
fscanf(datei,"%d",&a);
x=a;
fscanf(datei,"%f",&b);
y[i]=b;
fscanf(datei,"%f",&c);
z[i]=c;
printf("%d %1.2f %1.2f\n",a,b,c);
};
fclose (datei);
return 0 ;
} ;
die auszulesene Datei befindet sich unter dem letzen code.
Nun möchte ich die gesamtstrecke aller Punkte ausgeben . Dafür benutze ich die Formel Wurzel(x2-x1)²+(y2-y1)²
Das programm kompeliert zwar aber es gibt wider nur die Tabelle die ich einlsen wollte aus.
Vielen dank im vorraus für die Hilfe.
#include <stdio.h>
#include <math.h>
int main()
{
int iAnz, i , a, l;
float *x, *y , *z , b , c ,dist , gdist=0;
FILE *datei;
datei = fopen("TSP03.dat","r") ;
fscanf(datei,"%d",&iAnz);
printf("Anzahl der Knoten : %d\n",iAnz);
x = new float[iAnz+1] ;
y = new float[iAnz+1] ;
z = new float[iAnz+1] ;
for(i=1;i<=iAnz;i++)
{
fscanf(datei,"%d",&a);
x[i]=a;
fscanf(datei,"%f",&b);
y[i]=b;
fscanf(datei,"%f",&c);
z[i]=c;
// printf("%d %1.2f %1.2f\n",a,b,c);
}
for(l=1;l<=65;l++)
{
dist =sqrt(pow(y[i+1]-y[i],2)+pow(z[i+1]-z[i],2));
gdist = gdist+dist;
printf("Das ist die Gesamtlänge %f\n", gdist);
}
return 0 ;
}
64
1 5.00 0.20
2 0.50 2.10
3 4.20 0.50
4 8.00 4.50
5 1.30 8.00
6 6.90 5.90
7 0.90 4.80
8 7.30 1.30
9 3.90 2.00
10 8.30 9.90
11 3.90 4.90
12 9.40 4.60
13 5.80 6.70
14 6.40 0.90
15 4.70 4.00
16 3.10 2.30
17 0.80 0.60
18 3.00 1.40
19 7.90 2.80
20 5.80 7.80
21 8.50 2.70
22 5.30 0.60
23 7.20 7.40
24 4.70 7.60
25 0.30 3.60
26 1.10 1.80
27 5.00 4.70
28 7.30 3.90
29 0.50 7.70
30 7.30 8.60
31 0.60 0.20
32 4.60 9.90
33 0.90 0.50
34 6.40 2.00
35 1.90 2.40
36 2.20 3.40
37 4.40 2.90
38 8.10 6.00
39 3.70 9.90
40 5.30 5.00
41 5.80 1.20
42 8.90 6.20
43 8.10 7.60
44 8.10 5.10
45 7.10 6.90
46 1.70 9.10
47 8.70 3.70
48 5.70 3.10
49 2.00 3.30
50 1.90 2.80
51 9.80 1.90
52 6.00 4.40
53 2.80 0.20
54 9.50 4.90
55 7.20 0.50
56 7.10 2.50
57 7.10 3.70
58 1.10 6.30
59 2.70 3.10
60 5.10 4.50
61 1.80 9.70
62 4.00 1.50
63 3.70 1.50
64 6.80 9.10