small program stuck at segmentation fault (mean, median... using arrays)
Code:
#include<stdio.h>#include<math.h>
double mean(int marks[], int n);
double variance(int marks[], int n);
double stdDev(int marks[], int n);
double mode(int marks[], int n);
void sort(int marks[], int n);
int main(){
int n;
int t2, t3, t4;
double t1;
printf("test0");
FILE *inFile;
inFile=fopen("marks.txt", "r");
if (inFile==NULL)
{
printf("File open error!\n");
return 0;
}
printf("test1");
int marks[n];
n=0;
printf("test2");
while((fscanf(inFile, "%d", &marks[n]))==1) n++;
printf("%d\n", n);
t1=mean(marks, n);
t2=variance(marks, n);
t3=stdDev(marks, n);
t4=mode(marks, n);
printf("%lf %d %lf %d, mean, variance, stdDev, mode", t1, t2, t3, t4);
fclose(inFile);
return 0;
}
double mean(int marks[], int n){
int i;
int sum=0;
for(i=0; i<n; i++) sum+=marks[i];
return (1.0*sum/n);
}
double variance(int marks[], int n){
int i;
double ave, varsum;
varsum=0;
ave=mean(marks, n);
for (i=0; i<n; i++) varsum+=(marks[i]-ave)*(marks[i]-ave);
return (varsum/n);
}
double stdDev(int marks[], int n){
int i;
double var;
var=variance(marks, n);
return (sqrt(var));
}
double mode(int marks[], int n){
int i, count=0;
double mid;
mid=n/2.0;
sort(marks, n);
for(i=0; i<n; i++){
count=+marks[i];
if (count==mid) return ((marks[i]+marks[i+1])/2.0);
if (count>mid) return(marks[i]);}
return 0;
}
void sort(int marks[], int n){
int sorter[n];
sorter[0]=marks[0];
int i, temp;
for(i=1; i<n; i++){
if (marks[i]>=sorter[i]) sorter[i+1]=marks[i];
else {
temp=sorter[i];
sorter[i]=marks[i];
sorter[i+1]=temp;
}
}
for (i=0; i<n; i++) marks[i]=sorter[i];
return;}
I can't find where the error occurs. The function names represent what the function does (finds mean etc.). I tried some error testing printf, but even those do not print. :(