Thread: Structures and Arrays

  1. #1
    Registered User
    Join Date
    Jan 2011
    Posts
    16

    Unhappy Structures and Arrays

    Hello everyone - I am receiving several build errors for my code and I am quit frustrated at this point any help would be great. Here is the full programming exercise so you can understand what it is I am trying(failing at present) to do.

    Write a program that reads students' names followed by their test scores. THe program should output each student's name followed by the test scores and the relevant grade. It should also find the highest test score and the name of the students having the highest test score.

    Student data should be stored in a struct variable of type studentType, which has four components:studentFName and studentLName of type string, testScore of type int(testScore is between 0 and 100), and grade of type char. Suppose that the class has 20 students. Use an array of 20 components of type studentType.

    Your program must contain at least the following functions:
    1. A function to read the students' data onto the array.
    2. A function to assign the revelant grade to each student
    3. A function to find the highest test score.
    4. A function to print the names of the students having the highest test score.

    Your program must output each student's name in the form: last name followed by a comma, followed by a space, followed by the first name, and the name meust be left justified. Moreover, other than declaring the variables and opening the infput and output files, the function main should only be a collection of function cells.

    So here is my code along with the errors that I am getting at the different lines.

    Code:
    #include <iostream>
    #include <fstream>
    #include <iomanip>
    #include <string>
    
    using namespace std;
    
    struct studentType
    {
    	string studentFName;							//Stores the student's first name
    	string studentLName;							//Stores the student's last name
    	int testscore;									//stores the test score
    	char grade;										//stores letter grade
    };
    
    studentType students[20];							//initializes an array called students of the type studentType
    
    void getData(studentType sList[], int listSize);
    void calculateGrade(studentType sList[], int listSize);
    int highestScore(const studentType sList[], int listSize);
    void printResult(const studentType sList[],int listSize);
    
    void StuRead(ifstream& indata, studentType students[])
    {
    	int x = 0;
    
    	for (x = 1; x < 20; x++)
    	{
    		inFile >> students[x].studentLName				//receiveing error 'inFile' undeclared identifier even though I have it in main
    			   >> students[x].studentFName
                   >> students[x].testscore;
    	}
    
    }
    
    
    
    
    char AssignGrade(char LetterGrade, studentType students[])
    {
    	char grade = 0;										//variable to hold the students grade
    
    	if(LetterGrade > 90)
    		grade = 'A';
    	else if (LetterGrade > 80)
    		grade = 'B';
    	else if (LetterGrade > 70)
    		grade = 'C';
    	else if (LetterGrade > 60)
    		grade = 'D';
    	else if (LetterGrade < 59)
    		grade = 'F';
    
    	return grade;
    }
    
    
    
    void Highest(students[20])					//function to find the student with the highest grade
    {											//receive the following error at this line: 'Highest':function-style initializer appears to be function definition
    	int highTest = 0;
    
        for(x = 0; x < 20; x++)
            {
              if(x > highTest)
                    highTest = x;
    
            }
    
    
    }
    
    
    int main ()
    {
    	ifstream inFile;
    	inFile.open("c:\\temp\\studentData.txt");
    
    	ofstream outFile;	
    	outFile.open("c:\\temp\\studentResults.txt");
    
    
    	StuRead(inFile, studentType students[]);	//receive the following errors at this line: syntax error expected ')'
    												//syntax error: missing ')' before identifier "students'
    												//'studenType': illegal use of this type of expression
    	return 0;
    }

  2. #2
    Registered User
    Join Date
    Jan 2011
    Posts
    16
    was going to add the input file as well. Here it is:

    Micky Mouse 100
    Minnie Mouse 85
    Donal Duck 87
    Daisy Duck 83
    Pluto Dog 60
    Sleeping Beauty 70
    Cinderella Princess 93
    Robin Hood 97
    SpongeBob Squarpants 60
    Patrick Star 17
    Crazy Daisy 93
    Evil Queen 100
    Prince Charming 83
    Captin Hook 92
    Peter Pan 63
    Lady Darling 53
    Jack Sparrow 97
    William Turner 97
    Elizabeth Swann 100
    Captian Barbossa 75

  3. #3
    Registered User
    Join Date
    Jan 2011
    Posts
    16
    fixed the infile error by adding
    Code:
    ifstream inFile;
    before
    Code:
    inFile >> students[x].studentLName					
             >> students[x].studentFName
             >> students[x].testscore;

  4. #4
    and the hat of int overfl Salem's Avatar
    Join Date
    Aug 2001
    Location
    The edge of the known universe
    Posts
    39,666
    > inFile >> students[x].studentLName //receiveing error 'inFile'
    Your parameter is called inData

    > for (x = 1; x < 20; x++)
    Arrays start at 0, not 1

    > void Highest(students[20])
    What type is students?

    > StuRead(inFile, studentType students[]); //receive the following errors at this line
    When you call a function, you just list variable names or values.
    Delete all the type information.
    If you dance barefoot on the broken glass of undefined behaviour, you've got to expect the occasional cut.
    If at first you don't succeed, try writing your phone number on the exam paper.

  5. #5
    Registered User
    Join Date
    Jan 2011
    Posts
    16
    Salem - Thank you for the tips.

    I have made the following changes to the code:

    Code:
    ifstream inFile;
    inFile >> students[x].studentLName				
             >> students[x].studentFName
             >> students[x].testscore;
    this seems to have fixed the inFile error

    Code:
    void Highest(studentType students[20])				
    {
         int highTest = 0;
         int x = 0;
    
         for(x = 0; x < 20; x++)
            {
              if(x > highTest)
                    highTest = x;
    
    }
    declared the type as well as initilized x

    I am still have issues with the StuRead. can you please provide examples for me
    so that I better understand you comment?

  6. #6
    and the hat of int overfl Salem's Avatar
    Join Date
    Aug 2001
    Location
    The edge of the known universe
    Posts
    39,666
    > this seems to have fixed the inFile error
    And what about the parameter inFile you were passing? (or whatever name you gave it)

    > I am still have issues with the StuRead. can you please provide examples for me
    > so that I better understand you comment?
    This has no type information.
    outFile.open("c:\\temp\\studentResults.txt");


    And this does.
    StuRead(inFile, studentType students[]); //receive the following errors at this line: syntax error expected ')'
    If you dance barefoot on the broken glass of undefined behaviour, you've got to expect the occasional cut.
    If at first you don't succeed, try writing your phone number on the exam paper.

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. Problems with Nested Structures and Arrays of Structures
    By Ignoramus in forum C Programming
    Replies: 4
    Last Post: 03-02-2010, 01:24 AM
  2. Replies: 7
    Last Post: 12-30-2009, 03:02 PM
  3. Structures and dynamically allocated arrays
    By Bandizzle in forum C Programming
    Replies: 7
    Last Post: 10-04-2009, 02:05 PM
  4. pointers to arrays of structures
    By terryrmcgowan in forum C Programming
    Replies: 1
    Last Post: 06-25-2003, 09:04 AM
  5. errors with arrays and structures
    By ssjnamek in forum C++ Programming
    Replies: 4
    Last Post: 03-03-2002, 11:48 PM