Array 2 D sorting

i have to Write a program that reads a student's name, together with his or her test scores for at most 50 students from a file, provided by users of your program. The program should then compute the average test score for each student and assign the appropriate grade. The grade scale is as the follows:
90 <= average < 100, A; 80 <= average < 90 B; 70 <= average < 80, C;
60 <= average < 70, D; average < 60, F.
The program also calculates the class average.
Johnson 85 83 77 91 76
Aniston 80 90 95 93 48
Cooper 78 81 11 90 73
Gupta 92 83 30 69 87
Blair 23 45 96 38 59
Clark 60 85 45 39 67
Kennedy 77 31 52 74 83
Bronson 93 94 89 77 97
Sunny 79 85 28 93 82
Smith 85 72 49 75 63
Rosado 64 40 55 74 70
Dicicca 97 100 92 94 95
Lynch 74 85 52 60 95
Abdelgani 75 95 96 97 93
Hatcher 53 70 44 34 60
Lacap 94 95 95 95 95
Taveras 74 75 78 96 98
Thomas 64 75 39 60 75
Dauphin 47 70 79 47 80
Gomez 84 95 95 94 85

i create 3 functions :one for grade for each student,one for average and the latest one for class average and this is the one that i m having problem it doesnt give me right result can you please verified and tell me where i did mistake in the function ??? and another thing i have to sort the names in ascending order how can i do that please!!!!!!!!!!!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
//
#include <iostream>
#include <fstream>
#include <string>
#include <iomanip>
using namespace std;
 
/* Function Declarations */
char calculateGrade(double);
void calcAverage(ifstream &, int [], int, double &);
void calclasseAverage(ifstream &, int [],double &,double &);

/* Entry-Point */

int main(void)

{

    string name;

    int i,numgrades=5,grade[5];

    double average;
	double classAvg = 0;
    char letter;ifstream inputfile;
    
    
	 inputfile.open("prog7_input.txt");

    if(inputfile.fail())

    {
        cout<<"input file did not open please check it\n";
        return 1;
    }
  
   cout << "Names\t\tTest1\tTest2\tTest3\tTest4\tTest5\tAverage\tGrade\n\n";
    inputfile>>name;                  
    while(inputfile)       
    {
        calcAverage(inputfile,grade,numgrades,average);
        letter = calculateGrade(average);
		
        cout<<name<<"    \t";
		
    for(i=0;i<numgrades;i++)

           cout<<grade[i]<<"\t";

         cout<<average<<"\t"<<letter<<"\n"; 
         
         inputfile>>name;
		}
	calclasseAverage(inputfile,grade,average,classAvg);
   	cout<<"\nClass Average =  "<<classAvg<<endl<<endl;
    inputfile.close(); 

 
    return 0;

}

 

 

/* Function to retrieve the letter grade. */

char calculateGrade(double average)

{

    if(average >=90)

        return 'A';

 
    else if(average >=80)

        return 'B';

    else if(average >=70)

        return 'C';

    else if(average>=60)
        return 'D';

    else

        return 'F';

}

 

/* Function to read an entry and calculate the average. */

void calcAverage(ifstream &in, int grade[], int max, double &average) //

{

    int i,sum=0;

    for(i=0; i < max ;i++)
		
    {

        in>>grade[i];

        sum+=grade[i];

    }

    average=(double)sum/max;
}
	/* Function to calculat the class average. */

void calclasseAverage(ifstream &in, int grade[], double &average,double &classAvg) //

{

   
	classAvg = 0;

    for(int i = 7 ;i < 8;i++)
	for(int j=1; j < 22 ;j++)
		
    {

        in>>average;

        classAvg = classAvg + average;

    }

   classAvg = classAvg/20;
}
Try this..
Last edited on
how can i do that could you please help with more code details?????
and how can i sort the names in ascending order ,please help i m new in programming and this is very important assignment
Well, here's one idea...
Last edited on
and another...
Last edited on
we learned multidimensional arrays but not structures
i tried to build the solution and i have fatal error
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
//
#include <iostream>
#include <fstream>
#include <string>
#include <iomanip>
using namespace std;
 
/* Function Declarations */
char calculateGrade(double);
double calcAverage(ifstream &, int [], double, double );
void calclasseAverage(ifstream &, int [],double &,double &);
int numStudents = 0;
int grandScoreTotal = 0;
/* Entry-Point */

int main(void)

{

    string name;

    int i,numgrades=5,grade[5];

    double average;
	double classAvg = 0;
    char letter;ifstream inputfile;
    
    
	 inputfile.open("prog7_input.txt");

    if(inputfile.fail())

    {
        cout<<"input file did not open please check it\n";
        return 1;
    }
  
   cout << "Names\t\tTest1\tTest2\tTest3\tTest4\tTest5\tAverage\tGrade\n\n";
    inputfile>>name;                  
    while(inputfile)       
    {
        int sum = 0;
    double average = calcAverage(inputfile,grade,numgrades,sum);
    grandScoreTotal += sum;
    numStudents += 1;
     
     letter = calculateGrade(average);
        cout<<name<<"    \t";
		
    for(i=0;i<numgrades;i++)

           cout<<grade[i]<<"\t";

         cout<<average<<"\t"<<letter<<"\n"; 
         
         inputfile>>name;
		}
	calclasseAverage(inputfile,grade,average,classAvg);
   	cout<<"\nClass Average =  "<<classAvg<<endl<<endl;
    inputfile.close(); 

 
    return 0;

}

 

 

/* Function to retrieve the letter grade. */

char calculateGrade(double average)

{

    if(average >=90)

        return 'A';

 
    else if(average >=80)

        return 'B';

    else if(average >=70)

        return 'C';

    else if(average>=60)
        return 'D';

    else

        return 'F';

}

 

/* Function to read an entry and calculate the average. */

double calcAverage(ifstream &in, int grade[], int max, int &sum) 
{
    int i = 0;
    sum=0;

    for(i=0; i < max ;i++)		
    {
        in>>grade[i];
        sum+=grade[i];
    }

    double average=(double)sum/max;
    return average;
}

1>------ Build started: Project: assignment--7, Configuration: Debug Win32 ------
1>assisgnment-7.obj : error LNK2019: unresolved external symbol "void __cdecl calclasseAverage(class std::basic_ifstream<char,struct std::char_traits<char> > &,int * const,double &,double &)" (?calclasseAverage@@YAXAAV?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAHAAN2@Z) referenced in function _main
1>assisgnment-7.obj : error LNK2019: unresolved external symbol "double __cdecl calcAverage(class std::basic_ifstream<char,struct std::char_traits<char> > &,int * const,double,double)" (?calcAverage@@YANAAV?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAHNN@Z) referenced in function _main
1>C:\Users\Abderrazak\Documents\Visual Studio 2010\Projects\assignment--7\Debug\assignment--7.exe : fatal error LNK1120: 2 unresolved externals
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
i correct the error but now i m getting
calclasseAverage = 0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
//
#include <iostream>
#include <fstream>
#include <string>
#include <iomanip>
using namespace std;
 
/* Function Declarations */
char calculateGrade(double);
double calcAverage(ifstream &, int [], int, int &);
double calclasseAverage;
int numStudents = 0;
int grandScoreTotal = 0;
/* Entry-Point */

int main(void)

{

    string name;

    int i,numgrades=5,grade[5];

    double average;
	double classAvg = 0;
    char letter;ifstream inputfile;
    
    
	 inputfile.open("prog7_input.txt");

    if(inputfile.fail())

    {
        cout<<"input file did not open please check it\n";
        return 1;
    }
  
   cout << "Names\t\tTest1\tTest2\tTest3\tTest4\tTest5\tAverage\tGrade\n\n";
    inputfile>>name;                  
    while(inputfile)       
    {
        int sum = 0;
    double average = calcAverage(inputfile,grade,numgrades,sum);
    grandScoreTotal += sum;
    numStudents += 1;
     
     letter = calculateGrade(average);
        cout<<name<<"    \t";
		
    for(i=0;i<numgrades;i++)

           cout<<grade[i]<<"\t";

         cout<<average<<"\t"<<letter<<"\n"; 
         
         inputfile>>name;
		}
	calclasseAverage =grandScoreTotal/numStudents ;
   	cout<<"\nClass Average =  "<<calclasseAverage<<endl<<endl;
    inputfile.close(); 

 
    return 0;

}

 

 

/* Function to retrieve the letter grade. */

char calculateGrade(double average)

{

    if(average >=90)

        return 'A';

 
    else if(average >=80)

        return 'B';

    else if(average >=70)

        return 'C';

    else if(average>=60)
        return 'D';

    else

        return 'F';

}

 

/* Function to read an entry and calculate the average. */

double calcAverage(ifstream &in, int grade[], int max, int & sum) 
{
    int i = 0;
    sum=0;

    for(i=0; i < max ;i++)		
    {
        in>>grade[i];
        sum+=grade[i];
    }

    double average=(double)sum/max;
    return average;
}
Yeah, link errors are a drag.
Last edited on
Have you written any array sorting functions (as an assignment) yet?

the teacher talk about it in the class but no assignment yet but i can use it
Try starting a new thread. Maybe someone else can help you better.
Last edited on
here is the assignment
Write a program that reads a student's name, together with his or her test scores for at most 50 students from a file, provided by users of your program. The program should then compute the average test score for each student and assign the appropriate grade. The grade scale is as the follows:
90 <= average < 100, A; 80 <= average < 90 B; 70 <= average < 80, C;
60 <= average < 70, D; average < 60, F.
The program also calculates the class average.

There is a test file, prog7_input.txt,you may use for testing.

But, your program must prompt the name of the actual input file which is determined at run time by users.


In the program, you must use four arrays:
a one-dimensional array to store the students' names,
a parallel two-dimensional array to store the test scores,
a parallel one-dimensional array to store the students' averages, and
a parallel one-dimensional array to store the grades.

Your program must contain at least the following functions:
readScore( ) -- to read and store data into arrays;
calcAverage( ) -- calculate the average test score and grade and save them to arrays; writeReport( ) -- function to output the results to the screen ( not an output file).

You may declare global constants, but do not use any global variable. Use the appropriate parameters to pass values in and out functions.

The output should be displayed on the screen in the form as following sample output: ( Fill the last two columns with student's average and grade, and the bottom line with the class average.)
Round the averages to one decimal place.

the data
Johnson 85 83 77 91 76
Aniston 80 90 95 93 48
Cooper 78 81 11 90 73
Gupta 92 83 30 69 87
Blair 23 45 96 38 59
Clark 60 85 45 39 67
Kennedy 77 31 52 74 83
Bronson 93 94 89 77 97
Sunny 79 85 28 93 82
Smith 85 72 49 75 63
Rosado 64 40 55 74 70
Dicicca 97 100 92 94 95
Lynch 74 85 52 60 95
Abdelgani 75 95 96 97 93
Hatcher 53 70 44 34 60
Lacap 94 95 95 95 95
Taveras 74 75 78 96 98
Thomas 64 75 39 60 75
Dauphin 47 70 79 47 80
Gomez 84 95 95 94 85
Best of luck in your new thread on this problem then.
Last edited on
i did nt get any respond that s why i open new thread please help!!!!!!!!!!
Topic archived. No new replies allowed.