Our program got cut down from a .h and 2 .cpps to just one .h and one .cpp.... so trying to convert fucntions back to my .h I received tons of errors. Hopefully someone can help me get rid of most of these? please? I need to turn in the final program in like 23 hours. :) Thanks if you can help or if you will. I am not asking anyone to do it... just steer me in the right direction if you see where i am going wrong.... My program is nasty. :cry: :(

Here is the main thing on my lab that I am working on with it too.... for where the structs and arrays come in:
An array of 10 structures of type aClass will make up the storage mechanism; i.e., you will process 10 students.

Heres my .h:

#include<iostream> // all the classes I could ever need for this program
#include<iomanip> // and a few extra just incase.
#include<cmath>
#include<cstdlib>
#include<string>
using namespace std;
 
enum aGrade {a, b, c, d, f, w, i};
 
struct aClass
{
string courses;
aGrade grades;
int hours;
float GP;
};
 
aClass mycourses;
 
void printHead () // this section will display the heading for the output table
{
cout<<"\n\nList of the Courses"<<endl<<"\n Class Hours Grade \n";
cout<<"-----------------------------------"<<endl;
}
 
aGrade convert(enum aGrade in, //OUT: in
aClass mycourses) //IN: grades
 
{ 
switch (mycourses.grades) //switch stmt to get all the letters into the enum catagories 
{
case 'a':case 'A':
in = a;
break;
case 'b':case 'B':
in = b;
break;
case 'c':case 'C':
in = c;
break;
case 'd':case 'D':
in = d;
break;
case 'f':case 'F':
in = f;
break;
case 'w':case 'W':
in = w;
break;
case 'i':case 'I':
in = i;
break;
 
}
 
return in;
}
 
int calcGradePoint(enum aGrade in,
aClass mycourses) //This function is used to calculate the totalgpa for one class 
 
{ 
if(in == a) 
return 4 * mycourses.hours;
if(in == b)
return 3 * mycourses.hours;
if(in == c)
return 2 * mycourses.hours;
if(in == d)
return 1 * mycourses.hours;
if(in == f)
return 0 * mycourses.hours;
if(in == w)
return 0 * mycourses.hours;
if(in == i)
return 0 * mycourses.hours;
 
}
 
 
void sortClass (aClass mycourses) //IN: cnt
//This bubblesort is used to put the courses into alphabetical order
 
{ 
int i = cnt, j = 0, k = 1, temper;
string temp;
char tmp;
 
while (i >= 0 && k)
{
 
k = 0;
for (j = 0; j <= i; j++)
if (mycourses.courses[j] > mycourses.courses[j+1])
{
temp = mycourses.courses[j];
mycourses.courses[j] = mycourses.courses[j+1];
mycourses.courses[j+1] = temp;
 
temper = mycourses.hours[j];
mycourses.hours[j] = mycourses.hours[j+1];
mycourses.hours[j+1] = temper;
 
tmp = mycourses.grades[j];
mycourses.grades[j] = mycourses.grades[j+1];
mycourses.grades[j+1] = tmp;
 
k = 1;
}
i--;
}
}
 
 
 
float calcGPA(const float gpaSum, //IN: gpaSum
const float totalHours ) //IN: totalHours
//This function is used to calculate overall gpa = totalofgpa / totalhours
 
{ 
float gpa;
gpa = float (gpaSum / totalHours);
return gpa;
}
 
 
void printLine (cnt, b, aClass mycourses, gpa, totalHour)
{
for (int b = 1; b <= cnt; b++) //puts the information into the table
{
cout<<setw(12)<<mycourses.courses<<setw(9)<<mycourses.hours<<setw(10)<<mycourses.grades<<endl;
}
 
cout<<"\nThe total GPA is "<<gpa<<" and you attempted "<<totalHours<<" hours."<<endl;
}

and here is my .cpp

#include "schedule.h"
 
 
int main(){ //Calls main function
 
int cnt = 0; //Variables used
char gpaForOneClass;
float gpa = 0.0, totalHours = 0.0, gpaSum = 0.0;
aGrade in;
 
 
while (cnt < 10)
{
while (1)
{
cout<<"\nEnter a course, the letter grade received, and the credit hours. "<<endl;
cin >> mycourses.courses;
 
if (mycourses.courses == "quit" || mycourses.courses == "QUIT" || mycourses.courses == "Quit") break; //ends input when quit or QUIT is typed
 
cin >> mycourses.grades; 
cin >> mycourses.hours;
 
in = convert(in, aClass mycourses); //converts letter input into right value
gpaForOneClass = calcGradePoint(in, aClass mycourses, cnt); //gets gpa total for one class
gpaSum += gpaForOneClass; //totals up gpa
totalHours = totalHours + mycourses.hours; //totals up hours
cnt = cnt + 1;
 
}
 
}
 
gpa = calcGPA(gpaSum, totalHours); //calls gpa function
printHead(); //calls header function to display table
sortClass(aClass mycourses, cnt); // calls bsort function
printLine(cnt, b, aClass mycourses, gpa, totalHours);
 
 
 
cin>>cnt;
 
return 0;
}

and here are the ridiculous amount errors i get:

15 C:\Documents and Settings\Josh\Desktop\Lab5\cs110lab5.cpp In file included from C:/Documents and Settings/Josh/Desktop/Lab5/cs110lab5.cpp 
C:\Documents and Settings\Josh\Desktop\Lab5\schedule.h In function `void sortClass(aClass)': 
87 C:\Documents and Settings\Josh\Desktop\Lab5\schedule.h `cnt' undeclared (first use this function) 
87 C:\Documents and Settings\Josh\Desktop\Lab5\schedule.h (Each undeclared identifier is reported only once for each function it appears 
100 C:\Documents and Settings\Josh\Desktop\Lab5\schedule.h cannot convert `std::string' to `char' in assignment 
 
102 C:\Documents and Settings\Josh\Desktop\Lab5\schedule.h invalid types `int[int]' for array subscript 
103 C:\Documents and Settings\Josh\Desktop\Lab5\schedule.h invalid types `int[int]' for array subscript 
103 C:\Documents and Settings\Josh\Desktop\Lab5\schedule.h invalid types `int[int]' for array subscript 
104 C:\Documents and Settings\Josh\Desktop\Lab5\schedule.h invalid types `int[int]' for array subscript 
106 C:\Documents and Settings\Josh\Desktop\Lab5\schedule.h invalid types `aGrade[int]' for array subscript 
107 C:\Documents and Settings\Josh\Desktop\Lab5\schedule.h invalid types `aGrade[int]' for array subscript 
107 C:\Documents and Settings\Josh\Desktop\Lab5\schedule.h invalid types `aGrade[int]' for array subscript 
108 C:\Documents and Settings\Josh\Desktop\Lab5\schedule.h invalid types `aGrade[int]' for array subscript 
 
/Documents and Settings/Josh/Desktop/Lab5/schedule.h C:\Documents and Settings\Josh\Desktop\Lab5\C At global scope: 
129 C:\Documents and Settings\Josh\Desktop\Lab5\schedule.h syntax error before `,' token 
C:\Documents and Settings\Josh\Desktop\Lab5\schedule.h In function `void printLine(...)': 
136 C:\Documents and Settings\Josh\Desktop\Lab5\schedule.h `gpa' undeclared (first use this function) 
136 C:\Documents and Settings\Josh\Desktop\Lab5\schedule.h `totalHours' undeclared (first use this function) 
C:\Documents and Settings\Josh\Desktop\Lab5\cs110lab5.cpp In function `int main()': 
 
35 C:\Documents and Settings\Josh\Desktop\Lab5\cs110lab5.cpp no match 
for 'operator>>' in 'std::cin >> mycourses.aClass::grades' 
error C:\Dev-Cpp\include\c++\3.3.1\bits\istream.tcc:83 candidates are: std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, 
92 C:\Dev-Cpp\include\c++\3.3.1\bits\istream.tcc std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, 
101 C:\Dev-Cpp\include\c++\3.3.1\bits\istream.tcc std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, 
That same error.... 19 more times then..
 
74 C:\Dev-Cpp\include\c++\3.3.1\iomanip std::basic_istream<_CharT, _Traits>& 
that same error....4 more times
 
38 C:\Documents and Settings\Josh\Desktop\Lab5\cs110lab5.cpp syntax error before `)' token 
39 C:\Documents and Settings\Josh\Desktop\Lab5\cs110lab5.cpp syntax error before `,' token 
50 C:\Documents and Settings\Josh\Desktop\Lab5\cs110lab5.cpp syntax error before `,' token 
51 C:\Documents and Settings\Josh\Desktop\Lab5\cs110lab5.cpp syntax error before `,' token

Recommended Answers

All 4 Replies

Some of the variables being used in the .h file are declared in the .cpp file, which is after you include the info from the .h file.

I reccomend making a schedule class. The code, as it is now, seems unorganzied and making a class would tidy things up a bit. It would also fix most of your problems since they are related to using undeclared variables from the .h file.

Schedule.h can be a class declaration while Schedule.cpp can be the implementation. Have a seperate file (main.cpp?) that contains the main function and implements the class.

I reccomend making a schedule class. The code, as it is now, seems unorganzied and making a class would tidy things up a bit. It would also fix most of your problems since they are related to using undeclared variables from the .h file.

Well, originally I had a schedule class. I thought that was how it was supposed to be turned in (a schedule class, a schedule.cpp, and the main program .cpp) I went to lab today and was informed that "thats harder to do it that way and we are saving classes for lab 6". I had spent about 8 hours working on the program prior to this with defining the class, getting all the function variables lined up, etc. I was told if I did that, points would be taken away because they didnt want to look thru extra code if they didnt have to... Therefore I was trying to edit my program back to just the header file and the main.cpp file.... I agree its unorganized and needs major cleanup work. Thanks for your help. :)

here's my header file... (we are supposed to include our functions here this file... i know its ugly.. but its at the professors/Teaching Assistants discretion.)

#include<iostream>  // all the classes I could ever need for this program
#include<iomanip>   // and a few extra just incase.
#include<cmath>
#include<cstdlib>
#include<string>
using namespace std;

enum aGrade {a, b, c, d, f, w, i};

struct aClass
{
       string courses;
       aGrade grades;
       int hours;
       float GP;
};

int  cnt = 0;                //Variables used
char gpaForOneClass;
float gpa = 0.0, totalHours = 0.0, gpaSum = 0.0;
aGrade in;

aClass mycourses[10];

void printHead ()  // this section will display the heading for the output table
{
     cout<<"\n\nList of the Courses"<<endl<<"\n       Class      Hours     Grade       \n";
     cout<<"-----------------------------------"<<endl;
}

aGrade convert(enum aGrade in, int cnt,     //OUT: in
                  aClass mycourses[])       //IN: grades
                                            
{                                                
  switch (mycourses[cnt].grades)      //switch stmt to get all the letters into the enum catagories                       
    {
      case 'a':case 'A':
        in = a;
        break;
      case 'b':case 'B':
        in = b;
        break;
      case 'c':case 'C':
        in = c;
        break;
      case 'd':case 'D':
        in = d;
        break;
      case 'f':case 'F':
        in = f;
        break;
      case 'w':case 'W':
        in = w;
        break;
      case 'i':case 'I':
        in = i;
        break;
                                                
    }
                                                                                
  return in;
}
                                                                                
int calcGradePoint(enum aGrade in,
               aClass mycourses[])        //This function is used to calculate the totalgpa for one class                                      
                                                
{                                     
 if(in == a)      
   return 4 * mycourses[cnt].hours;
 if(in == b)
   return 3 * mycourses[cnt].hours;
 if(in == c)
   return 2 * mycourses[cnt].hours;
 if(in == d)
   return 1 * mycourses[cnt].hours;
 if(in == f)
    return 0 * mycourses[cnt].hours;
 if(in == w)
    return 0 * mycourses[cnt].hours;
 if(in == i)
    return 0 * mycourses[cnt].hours;
 
}
                                                                                

void sortClass (aClass mycourses[], int cnt)    //IN: cnt
            //This bubblesort is used to put the courses into alphabetical order

{                                 
      int i = cnt, j = 0, k = 1, temper;
      string temp;
      char tmp;
      
      while (i >= 0 && k)
      {
             
            k = 0;
            for (j = 0; j <= i; j++)
                 if (mycourses[j].courses > mycourses[j+1].courses)
                 {
                       temp = mycourses[j].courses;
                       mycourses[j].courses = mycourses[j+1].courses;
                       mycourses[j+1].courses = temp;
                       
                       temper = mycourses[j].hours;
                       mycourses[j].hours = mycourses[j+1].hours;
                       mycourses[j+1].hours = temper;
                       
                       tmp = mycourses[j].grades;
                       mycourses[j].grades = mycourses[j+1].grades;
                       mycourses[j+1].grades = tmp;
                 
                       k = 1;
                  }
            i--;
            }
}


    
float calcGPA(const float gpaSum,    //IN: gpaSum
             const float  totalHours )  //IN:  totalHours
                //This function is used to calculate overall gpa = totalofgpa / totalhours

{                                         
      float gpa;
      gpa = float (gpaSum / totalHours);
      return gpa;
}


void printLine (cnt, b, aClass mycourses[], gpa, totalHour)
{
      for (int b = 1; b <= cnt; b++)  //puts the information into the table
      {
          cout<<setw(12)<<mycourses[b].courses<<setw(9)<<mycourses[b].hours<<setw(10)<<mycourses[b].grades<<endl;
      }
    
      cout<<"\nThe total GPA is "<<gpa<<" and you attempted "<<totalHours<<" hours."<<endl;
}

and here is my main program... .cpp

#include "schedule.h"


int main(){      //Calls main function
    
   
        
    while (cnt < 10)
    {
          while (1)
              {
                   cout<<"\nEnter a course, the letter grade received, and the credit hours. "<<endl;
                   cin >> mycourses[cnt].courses;
      
                   if (mycourses[cnt].courses == "quit" || mycourses[cnt].courses == "QUIT" || mycourses[cnt].courses == "Quit")  break;  //ends input when quit or QUIT is typed
          
                   cin >> mycourses[cnt].grades;            
                   cin >> mycourses[cnt].hours;
         
                   in = convert(in, cnt, aClass mycourses[]);                    //converts letter input into right value
                   gpaForOneClass = calcGradePoint(in, aClass mycourses[], cnt);  //gets gpa total for one class
                   gpaSum += gpaForOneClass;                //totals up gpa
                   totalHours = totalHours + mycourses[cnt].hours;        //totals up hours
                   cnt = cnt + 1;
       
             }
             
    }
            
    gpa = calcGPA(gpaSum, totalHours);  //calls gpa function
    printHead();                           //calls header function to display table
    sortClass(aClass mycourses[], cnt);   // calls bsort function
    printLine(cnt, b, aClass mycourses[], gpa, totalHours);
    
     
   
    cin>>cnt;
    
    return 0;
}

and here are the errors i am receiving in full...

15 C:\Documents and Settings\Josh\Desktop\Lab5\cs110lab5.cpp In file included from C:/Documents and Settings/Josh/Desktop/Lab5/cs110lab5.cpp 
 C:\Documents and Settings\Josh\Desktop\Lab5\schedule.h In function `void  sortClass(aClass*, int)': 
113 C:\Documents and Settings\Josh\Desktop\Lab5\schedule.h cannot  convert `char' to `aGrade' in assignment 
/Documents and Settings/Josh/Desktop/Lab5/schedule.h C:\Documents and Settings\Josh\Desktop\Lab5\C At global scope: 
134 C:\Documents and Settings\Josh\Desktop\Lab5\schedule.h syntax error  before `[' token 
 C:\Documents and Settings\Josh\Desktop\Lab5\cs110lab5.cpp In function `int  main()': 

31 C:\Documents and Settings\Josh\Desktop\Lab5\cs110lab5.cpp no match  for 'operator>>' in 'std::cin >> mycourses[cnt].aClass::grades' 
 error C:\Dev-Cpp\include\c++\3.3.1\bits\istream.tcc:83 candidates are:  std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT,  
92 C:\Dev-Cpp\include\c++\3.3.1\bits\istream.tcc                  std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT,  
16 more of these errors.

644 C:\Dev-Cpp\include\c++\3.3.1\istream                  std::basic_istream<char, _Traits>& std::operator>>(std::basic_istream<char,  
3 more of these errors.

74 C:\Dev-Cpp\include\c++\3.3.1\iomanip                  std::basic_istream<_CharT, _Traits>&  
4 more of these errors.

34 C:\Documents and Settings\Josh\Desktop\Lab5\cs110lab5.cpp syntax  error before `[' token 
35 C:\Documents and Settings\Josh\Desktop\Lab5\cs110lab5.cpp syntax  error before `[' token 
46 C:\Documents and Settings\Josh\Desktop\Lab5\cs110lab5.cpp syntax  error before `[' token 
47 C:\Documents and Settings\Josh\Desktop\Lab5\cs110lab5.cpp syntax  error before `[' token

There is a problem with the enum file aGrade im sure but I'm not exactly sure how to fix it...

And i dont know how to fix the" syntax error before `[' token " errors.
Any advice? Thanks.

Sorry, I've just taken a cursory look.

There is a problem with the enum file aGrade im sure but I'm not exactly sure how to fix it...

Should tmp be an aGrade, should mycourses[j+1].grades be a char, or do you need to convert from a char to an aGrade?

And i dont know how to fix the" syntax error before `Provide type information for all parameters in the function definition.

void printLine (/*???*/cnt, /*???*/b, aClass mycourses[], /*???*/gpa, /*???*/totalHour)

(we are supposed to include our functions here this file... i know its ugly.. but its at the professors/Teaching Assistants discretion.)

My condolences. I wonder what other bad programming practices you will be taught.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.