Ich muß ein Programm schreiben, mit dem ich eine dreispaltige Tabelle mit 100000 Zeilen einlesen kann. Ich habe mir dann gedacht die Spalten in verschiedenen eindimensionalen Array zu speichern.
Dann werden die Daten in 3 if-Bedingungen benutzt, um die Daten in kleinere Würfel aufzuteilen. In der if-Bedingung wird dann eine Summe berechnet, das Ergebnis kommt dann in ein dreidimensionales Array.
Beim Ausführen des Programmes kommt es aber zu einem "Segmentation Fault". Ich bin ziemlich neu was C Programmierung angeht. Das Betriebsystem ist Linux.
Dann werden die Daten in 3 if-Bedingungen benutzt, um die Daten in kleinere Würfel aufzuteilen. In der if-Bedingung wird dann eine Summe berechnet, das Ergebnis kommt dann in ein dreidimensionales Array.
Beim Ausführen des Programmes kommt es aber zu einem "Segmentation Fault". Ich bin ziemlich neu was C Programmierung angeht. Das Betriebsystem ist Linux.
Code:
#include <stdio.h>
int main()
{
int j, npart, i, lon,lat,rad,k,hl,hb;
float pos[3],mass, r[100000],l[100000],b[100000],summe[301][361][181];
char line[40];
FILE *Datei, *Quelle;
mass=0.0449866;
npart=100000;
/* Einlesen */
Quelle = fopen("plum094rlb","r");
for (j=0;j<npart;j++)
{ fgets(line,40,Quelle);
sscanf(line,"%f %f %f", pos[0], pos[1], pos[2]);
r[j] = pos[0];
l[j] = pos[1];
b[j] = pos[2];
}
fclose(Quelle);
/* Verarbeiten */
for (lon = -180; lon< 175; lon +=5)
{
for (lat = -90; lat< 85; lat +=5)
{
for (rad = 0; rad<295; rad +=5)
{
for (i= 0;i< npart; i++)
{
if (l[i]<lon+5 || l[i]>= lon)
{if (b[i]<lat+5 || b[i]>= lat)
{if (r[i]<rad+5 || r[i]>=rad)
{hl=lon+180;
hb=lat+90;
summe[rad][hl][hb]+=mass/((rad+2.5)*(rad+2.5));
/* Schreiben */
if (Datei == NULL)
printf("\n\nDatei nicht erzeugt/geoeffnet!\n");
else
fprintf(Datei,"%f %f %f %f \n",rad,lon,lat,summe[rad][hl][hb]);
}
}
}
}
}
}
}
fclose(Datei);
return 0;
}