C Board  

Go Back   C Board > General Programming Boards > C++ Programming

Reply
 
LinkBack Thread Tools Display Modes
Old 02-28-2004, 02:45 PM   #1
Registered User
 
Join Date: Feb 2004
Posts: 127
pointer to array of objects of struct

Hi all .. i need urgent help please
i made the following struct
Code:
struct student
{
	char name[10];   // for the name of the student
    int BN;// for the bench number
	int year ,section,exam;
  double mark;
}; //for the mark of the student
in the main function i tried to make the following
Code:
int i;
cout<<"enter i ";
cin>>i;

 student *p =new student[i];
  int j=0;
cout<<"enter the name:";
cin>>p[j].name;
but it fails

what is the problem with the pointer of the array of students

it gives error
so anyone can help me please
thanks in advance
undisputed007 is offline   Reply With Quote
Old 02-28-2004, 04:17 PM   #2
Registered User
 
Join Date: Feb 2004
Posts: 127
hey all



please help e in this problem .. i didnt find any reply ..

is it wrong to make a pointer to array of objects of a struct or what is wrong in the code?
this is the whole cod of the program
Code:

#include<iostream>
#include<cstdlib>
#include<fstream>
#include<iomanip>
using namespace std;
void sort_fn(student k,int size);
void show_fn(student k ,int size);

struct student
{
	char name[10];   // for the name of the student
    int BN;// for the bench number
	int year ,section,exam;
  double mark;
}; //for the mark of the student


int main()
{
	student m;
	int range[6]={0,0,0,0,0,0};
	double sum ,av; // sum is the sum of the marks of students and av is their average
	int i=0;  //counting the nuber of students
	
	sum =0;
    ifstream fin;
    ofstream fout;
    fin.open("E://mark.txt");
    if (fin.fail())
	{
       cout<<"Can not open file\n";
        exit(1);
	}
  fout.open("E://results.txt");
  fin>>m.name;
  while(!fin.eof())
  {
	  fout<<m.name;
	  fout<<"  ";     //space
	  fin>>m.BN;
	  fout<<m.BN;
	  fout<<"  ";
	  fin>>m.year;
	  fout<<m.year;
	  fout<<"  ";
	  fin>>m.section;
	  fout<<m.section;
	  fout<<"\t";
	  fin>>m.exam;
	  fout<<m.exam;
	  fout<<"\t";
	  fin>>m.mark;
	  if ((m.mark>=0)&&(m.mark<5))
		  range[0]++;
	  else if((m.mark>=5)&&(m.mark<10))
		  range[1]++;
	  else if((m.mark>=10)&&(m.mark<15))
		  range[2]++;
	  else if((m.mark>=15)&&(m.mark<20))
		  range[3]++;
	  else if ((m.mark>20)&&(m.mark<25))
		  range[4]++;
	  else
		  range[5]++;

	  sum+=m.mark;
	  fout<<m.mark;
	  fout<<endl;
	  i++;
	  fin>>m.name;
  }
  av=sum/i;
  fout<<" the average of the students is :"<<av <<endl;
  fout<<" the number of students having score between 0 and less than 5 :"<<range[0]<<endl;
  fout<<" the number of students having score between 5 and less than 10 :"<<range[1]<<endl;
  fout<<" the number of students having score between 10 and less than 15 :"<<range[2]<<endl;
  fout<<" the number of students having score between 15 and less than 20 :"<<range[3]<<endl;
  fout<<" the number of students having score between 20 and less than 25 :"<<range[4]<<endl;
  fout<<" the number of students having score between 20 and 30       :"<<range[5]<<endl;
  student *p =new student[i];
  int j=0;
  fin>>p[j].name;
  while(!fin.eof())
  {
	 
	  fin>>p[j].BN;
	  
	
	  fin>>p[j].year;
	  
	  fin>>p[j].section;
	 
	  fin>>p[j].exam;
	 
	  fin>>p[j].mark;
	 
	   
	 j++;
	  fin>>p[j].name;
  }
  sort_fn(p,i);
  show_fn(p,i);

  fin.close();
  fout.close();
  delete []p;
  return 0;
  

}

void sort_fn(student & k,int size)
{
	student temp;
	for (int i=0 ;i<size-1 ;i++)
	{
		for (int j=i+1;j<size ;j++)
		{
			if (k[i].mark<k[j].mark)
			{
				temp=k[i];
				k[i]=k[j];
				k[j]=temp;
			}
		}
	}
}

void show_fn(student & k ,int size)
{
	for (int i=0;i<size;i++)
		cout<<k[i].name<<setw(10)<<k[i].section<<setw(15)<<k[i].mark<<endl;
}

thanks in advance
undisputed007 is offline   Reply With Quote
Old 02-28-2004, 04:46 PM   #3
Registered User
 
axon's Avatar
 
Join Date: Feb 2003
Location: Mt. Prospect, IL
Posts: 2,602
first if all, please reread the forum rules, esspecialy the one partaining to "bumping" of threads.

Secodnly you are passing a pointer by reference, which is not allowed. I've fixed the code, and it is below...I'm not at a pc with a compiler at the moment so don't know if it does what you want....it should compile though.

Code:
#include<iostream>
#include<cstdlib>
#include<fstream>
#include<iomanip>
using namespace std;

struct student
{
	char name[10];   // for the name of the student
    int BN;// for the bench number
	int year ,section,exam;
  double mark;
}; //for the mark of the student

void sort_fn(student *k,int size)
{
	student temp;
	for (int i=0 ;i<size-1 ;i++)
	{
		for (int j=i+1;j<size ;j++)
		{
			if (k[i].mark<k[j].mark)
			{
				temp=k[i];
				k[i]=k[j];
				k[j]=temp;
			}
		}
	}
}

void show_fn(student *k ,int size)
{
	for (int i=0;i<size;i++)
		cout<<k[i].name<<setw(10)<<k[i].section<<setw(15)<<k[i].mark<<endl;
}

int main()
{
	student m;
	int range[6]={0,0,0,0,0,0};
	double sum ,av; // sum is the sum of the marks of students and av is their average
	int i=0;  //counting the nuber of students
	
	sum =0;
    ifstream fin;
    ofstream fout;
    fin.open("E://mark.txt");
    if (fin.fail())
	{
       cout<<"Can not open file\n";
        exit(1);
	}
  fout.open("E://results.txt");
  fin>>m.name;
  while(!fin.eof())
  {
	  fout<<m.name;
	  fout<<"  ";     //space
	  fin>>m.BN;
	  fout<<m.BN;
	  fout<<"  ";
	  fin>>m.year;
	  fout<<m.year;
	  fout<<"  ";
	  fin>>m.section;
	  fout<<m.section;
	  fout<<"\t";
	  fin>>m.exam;
	  fout<<m.exam;
	  fout<<"\t";
	  fin>>m.mark;
	  if ((m.mark>=0)&&(m.mark<5))
		  range[0]++;
	  else if((m.mark>=5)&&(m.mark<10))
		  range[1]++;
	  else if((m.mark>=10)&&(m.mark<15))
		  range[2]++;
	  else if((m.mark>=15)&&(m.mark<20))
		  range[3]++;
	  else if ((m.mark>20)&&(m.mark<25))
		  range[4]++;
	  else
		  range[5]++;

	  sum+=m.mark;
	  fout<<m.mark;
	  fout<<endl;
	  i++;
	  fin>>m.name;
  }
  av=sum/i;
  fout<<" the average of the students is :"<<av <<endl;
  fout<<" the number of students having score between 0 and less than 5 :"<<range[0]<<endl;
  fout<<" the number of students having score between 5 and less than 10 :"<<range[1]<<endl;
  fout<<" the number of students having score between 10 and less than 15 :"<<range[2]<<endl;
  fout<<" the number of students having score between 15 and less than 20 :"<<range[3]<<endl;
  fout<<" the number of students having score between 20 and less than 25 :"<<range[4]<<endl;
  fout<<" the number of students having score between 20 and 30       :"<<range[5]<<endl;
  student *p = new student[i];
  int j=0;
  fin>>p[j].name;
  while(!fin.eof())
  {
	 
	  fin>>p[j].BN;
	  
	
	  fin>>p[j].year;
	  
	  fin>>p[j].section;
	 
	  fin>>p[j].exam;
	 
	  fin>>p[j].mark;
	 
	   
	 j++;
	  fin>>p[j].name;
  }
  sort_fn(p,i);
  show_fn(p,i);

  fin.close();
  fout.close();
  delete [] p;
  
  
  return 0;
  

}
__________________

some entropy with that sink? entropysink.com

there are two cardinal sins from which all others spring: Impatience and Laziness. - franz kafka
axon is offline   Reply With Quote
Old 02-29-2004, 12:50 AM   #4
Registered User
 
Join Date: Feb 2004
Posts: 127
Thanks man

it didnt give errorsin compilation but still didnt give results where that means that it didnt work

and really can you tell me please what is the problems with my first code where i noticed that all you have done is that you put the other functions before main function and eventually you said that i am passing a pointer by reference which as you said is un allowed so how can i pass it?
do i have to pass it by value?

thanks in advance
undisputed007 is offline   Reply With Quote
Old 03-01-2004, 02:52 PM   #5
Registered User
 
Join Date: Oct 2001
Posts: 2,936
> fout<<" the average of the students is :"<<av <<endl;
> fout<<" the number of students having score between 0 and less than 5 :"<<range[0]<<endl;
> fout<<" the number of students having score between 5 and less than 10 :"<<range[1]<<endl;
> fout<<" the number of students having score between 10 and less than 15 :"<<range[2]<<endl;
> fout<<" the number of students having score between 15 and less than 20 :"<<range[3]<<endl;
> fout<<" the number of students having score between 20 and less than 25 :"<<range[4]<<endl;
> fout<<" the number of students having score between 20 and 30 :"<<range[5]<<endl;
> student *p =new student[i];
> int j=0;
> fin>>p[j].name;
> while(!fin.eof())

You need to seek back to the beginning of the file here:
Code:
  fout<<" the average of the students is :"<<av <<endl;
  fout<<" the number of students having score between 0 and less than 5 :"<<range[0]<<endl;
  fout<<" the number of students having score between 5 and less than 10 :"<<range[1]<<endl;
  fout<<" the number of students having score between 10 and less than 15 :"<<range[2]<<endl;
  fout<<" the number of students having score between 15 and less than 20 :"<<range[3]<<endl;
  fout<<" the number of students having score between 20 and less than 25 :"<<range[4]<<endl;
  fout<<" the number of students having score between 20 and 30       :"<<range[5]<<endl;
  student *p =new student[i];
  int j=0;
  fin.clear();
  fin.seekg(0);
  fin>>p[j].name;
  while(!fin.eof())
__________________
http://www.freechess.org
swoopy is offline   Reply With Quote
Old 03-01-2004, 05:37 PM   #6
Registered User
 
Join Date: Feb 2004
Posts: 127
thanks for ur reply

but can u tell me what does that do?
Code:
fin.clear();
fin.seekg(0);
anyway the problem still exist with the same errors as before

Thanks in advance
undisputed007 is offline   Reply With Quote
Old 03-01-2004, 05:47 PM   #7
End Of Line
 
Hammer's Avatar
 
Join Date: Apr 2002
Posts: 6,240
Quote:
Originally posted by M_Ghani

but can u tell me what does that do?
Code:
fin.clear();
fin.seekg(0);
Look 'em up here: http://www.cppreference.com/cppio.html
__________________
When all else fails, read the instructions.
If you're posting code, use code tags: [code] /* insert code here */ [/code]
Hammer is offline   Reply With Quote
Old 03-01-2004, 07:24 PM   #8
Registered User
 
Join Date: Oct 2001
Posts: 2,936
>anyway the problem still exist with the same errors as before

What errors are you getting?
1) Did the code compile? If not, what are the error messages?
2) If the code compiled, what happens when you run the program?
3) Post a copy of your E:\\mark.txt file

>fin.open("E://mark.txt");

It may not matter, but your forward slashes should be backslashes:

fin.open("E:\\mark.txt");
__________________
http://www.freechess.org
swoopy is offline   Reply With Quote
Old 03-01-2004, 07:34 PM   #9
Registered User
 
Join Date: Feb 2004
Posts: 127
I dont think it's a problem of slahes and backslashes because this program was working well when i use it only to write the average of marks in a file but when it comes to sorting the errors are so much

the code didnt compile and it makes 102 errors (I cant imagine that myself .. maybe a new world record )
the error messages are shown below
Compiling...
d.cpp
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(8) : error C2065: 'student' : undeclared identifier
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(8) : error C2146: syntax error : missing ')' before identifier 'k'
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(8) : error C2182: 'sort_fn' : illegal use of type 'void'
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(8) : error C2059: syntax error : ')'
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(9) : error C2146: syntax error : missing ')' before identifier 'k'
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(9) : error C2182: 'show_fn' : illegal use of type 'void'
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(9) : error C2059: syntax error : ')'
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(22) : error C2146: syntax error : missing ';' before identifier 'm'
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(22) : error C2065: 'm' : undeclared identifier
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(37) : error C2228: left of '.name' must have class/struct/union type
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(40) : error C2228: left of '.name' must have class/struct/union type
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(42) : error C2228: left of '.BN' must have class/struct/union type
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(43) : error C2228: left of '.BN' must have class/struct/union type
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(45) : error C2228: left of '.year' must have class/struct/union type
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(46) : error C2228: left of '.year' must have class/struct/union type
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(48) : error C2228: left of '.section' must have class/struct/union type
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(49) : error C2228: left of '.section' must have class/struct/union type
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(51) : error C2228: left of '.exam' must have class/struct/union type
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(52) : error C2228: left of '.exam' must have class/struct/union type
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(54) : error C2228: left of '.mark' must have class/struct/union type
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(55) : error C2228: left of '.mark' must have class/struct/union type
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(55) : error C2228: left of '.mark' must have class/struct/union type
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(57) : error C2228: left of '.mark' must have class/struct/union type
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(57) : error C2228: left of '.mark' must have class/struct/union type
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(59) : error C2228: left of '.mark' must have class/struct/union type
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(59) : error C2228: left of '.mark' must have class/struct/union type
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(61) : error C2228: left of '.mark' must have class/struct/union type
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(61) : error C2228: left of '.mark' must have class/struct/union type
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(63) : error C2228: left of '.mark' must have class/struct/union type
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(63) : error C2228: left of '.mark' must have class/struct/union type
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(68) : error C2228: left of '.mark' must have class/struct/union type
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(69) : error C2228: left of '.mark' must have class/struct/union type
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(72) : error C2228: left of '.name' must have class/struct/union type
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(83) : error C2065: 'p' : undeclared identifier
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(83) : error C2061: syntax error : identifier 'student'
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(87) : error C2109: subscript requires array or pointer type
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(87) : error C2228: left of '.name' must have class/struct/union type
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(89) : error C2143: syntax error : missing ';' before '{'
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(89) : error C2143: syntax error : missing ';' before '{'
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(89) : error C2143: syntax error : missing ';' before '{'
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(89) : error C2143: syntax error : missing ';' before '{'
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(89) : error C2143: syntax error : missing ';' before '{'
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(89) : error C2143: syntax error : missing ';' before '{'
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(89) : error C2143: syntax error : missing ';' before '{'
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(89) : error C2143: syntax error : missing ';' before '{'
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(89) : error C2143: syntax error : missing ';' before '{'
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(89) : error C2143: syntax error : missing ';' before '{'
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(89) : error C2143: syntax error : missing ';' before '{'
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(89) : error C2143: syntax error : missing ';' before '{'
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(89) : error C2143: syntax error : missing ';' before '{'
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(89) : error C2143: syntax error : missing ';' before '{'
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(89) : error C2143: syntax error : missing ';' before '{'
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(89) : error C2143: syntax error : missing ';' before '{'
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(89) : error C2143: syntax error : missing ';' before '{'
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(89) : error C2143: syntax error : missing ';' before '{'
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(89) : error C2143: syntax error : missing ';' before '{'
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(89) : error C2143: syntax error : missing ';' before '{'
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(89) : error C2143: syntax error : missing ';' before '{'
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(89) : error C2143: syntax error : missing ';' before '{'
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(89) : error C2143: syntax error : missing ';' before '{'
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(89) : error C2143: syntax error : missing ';' before '{'
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(89) : error C2143: syntax error : missing ';' before '{'
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(89) : error C2143: syntax error : missing ';' before '{'
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(89) : error C2143: syntax error : missing ';' before '{'
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(89) : error C2143: syntax error : missing ';' before '{'
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(89) : error C2143: syntax error : missing ';' before '{'
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(89) : error C2143: syntax error : missing ';' before '{'
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(89) : error C2143: syntax error : missing ';' before '{'
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(89) : error C2143: syntax error : missing ';' before '{'
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(89) : error C2143: syntax error : missing ';' before '{'
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(89) : error C2143: syntax error : missing ';' before '{'
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(89) : error C2143: syntax error : missing ';' before '{'
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(89) : error C2143: syntax error : missing ';' before '{'
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(89) : error C2143: syntax error : missing ';' before '{'
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(89) : error C2143: syntax error : missing ';' before '{'
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(89) : error C2143: syntax error : missing ';' before '{'
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(89) : error C2143: syntax error : missing ';' before '{'
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(89) : error C2143: syntax error : missing ';' before '{'
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(89) : error C2143: syntax error : missing ';' before '{'
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(89) : error C2143: syntax error : missing ';' before '{'
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(89) : error C2143: syntax error : missing ';' before '{'
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(89) : error C2143: syntax error : missing ';' before '{'
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(89) : error C2143: syntax error : missing ';' before '{'
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(89) : error C2143: syntax error : missing ';' before '{'
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(89) : error C2143: syntax error : missing ';' before '{'
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(89) : error C2143: syntax error : missing ';' before '{'
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(89) : error C2143: syntax error : missing ';' before '{'
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(89) : error C2143: syntax error : missing ';' before '{'
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(89) : error C2143: syntax error : missing ';' before '{'
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(89) : error C2143: syntax error : missing ';' before '{'
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(89) : error C2143: syntax error : missing ';' before '{'
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(89) : error C2143: syntax error : missing ';' before '{'
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(89) : error C2143: syntax error : missing ';' before '{'
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(89) : error C2143: syntax error : missing ';' before '{'
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(89) : error C2143: syntax error : missing ';' before '{'
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(89) : error C2143: syntax error : missing ';' before '{'
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(89) : error C2143: syntax error : missing ';' before '{'
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(89) : error C2143: syntax error : missing ';' before '{'
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(89) : error C2143: syntax error : missing ';' before '{'
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(89) : error C2143: syntax error : missing ';' before '{'
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(89) : error C2143: syntax error : missing ';' before '{'
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(89) : fatal error C1003: error count exceeds 100; stopping compilation
Error executing cl.exe.

d.exe - 102 error(s), 0 warning(s)


about the code it's
Code:

#include<iostream>
#include<cstdlib>
#include<fstream>
#include<iomanip>
using namespace std;
void sort_fn(student k,int size);
void show_fn(student k ,int size);

struct student
{
	char name[10];   // for the name of the student
    int BN;// for the bench number
	int year ,section,exam;
  double mark;
}; //for the mark of the student


int main()
{
	student m;
	int range[6]={0,0,0,0,0,0};
	double sum ,av; // sum is the sum of the marks of students and av is their average
	int i=0;  //counting the nuber of students
	
	sum =0;
    ifstream fin;
    ofstream fout;
    fin.open("E://mark.txt");
    if (fin.fail())
	{
       cout<<"Can not open file\n";
        exit(1);
	}
  fout.open("E://results.txt");
  fin>>m.name;
  while(!fin.eof())
  {
	  fout<<m.name;
	  fout<<"  ";     //space
	  fin>>m.BN;
	  fout<<m.BN;
	  fout<<"  ";
	  fin>>m.year;
	  fout<<m.year;
	  fout<<"  ";
	  fin>>m.section;
	  fout<<m.section;
	  fout<<"\t";
	  fin>>m.exam;
	  fout<<m.exam;
	  fout<<"\t";
	  fin>>m.mark;
	  if ((m.mark>=0)&&(m.mark<5))
		  range[0]++;
	  else if((m.mark>=5)&&(m.mark<10))
		  range[1]++;
	  else if((m.mark>=10)&&(m.mark<15))
		  range[2]++;
	  else if((m.mark>=15)&&(m.mark<20))
		  range[3]++;
	  else if ((m.mark>20)&&(m.mark<25))
		  range[4]++;
	  else
		  range[5]++;

	  sum+=m.mark;
	  fout<<m.mark;
	  fout<<endl;
	  i++;
	  fin>>m.name;
  }
  av=sum/i;
  fout<<" the average of the students is :"<<av <<endl;
  fout<<" the number of students having score between 0 and less than 5 :"<<range[0]<<endl;
  fout<<" the number of students having score between 5 and less than 10 :"<<range[1]<<endl;
  fout<<" the number of students having score between 10 and less than 15 :"<<range[2]<<endl;
  fout<<" the number of students having score between 15 and less than 20 :"<<range[3]<<endl;
  fout<<" the number of students having score between 20 and less than 25 :"<<range[4]<<endl;
  fout<<" the number of students having score between 20 and 30       :"<<range[5]<<endl;

  student *p =new student[i];
  int j=0;
  fin.clear();
  fin.seekg(0);
  fin>>p[j].name;
  while(!fin.eof())
  {
	 
	  fin>>p[j].BN;
	  
	
	  fin>>p[j].year;
	  
	  fin>>p[j].section;
	 
	  fin>>p[j].exam;
	 
	  fin>>p[j].mark;
	 
	   
	 j++;
	  fin>>p[j].name;
  }
  sort_fn(p,i);
  show_fn(p,i);

  fin.close();
  fout.close();
  delete []p;
  return 0;
  

}

void sort_fn(student & k,int size)
{
	student temp;
	for (int i=0 ;i<size-1 ;i++)
	{
		for (int j=i+1;j<size ;j++)
		{
			if (k[i].mark<k[j].mark)
			{
				temp=k[i];
				k[i]=k[j];
				k[j]=temp;
			}
		}
	}
}

void show_fn(student & k ,int size)
{
	for (int i=0;i<size;i++)
		cout<<k[i].name<<setw(10)<<k[i].section<<setw(15)<<k[i].mark<<endl;
}

thanks in advance
undisputed007 is offline   Reply With Quote
Old 03-01-2004, 07:45 PM   #10
Registered User
 
Join Date: Oct 2001
Posts: 2,936
Code:
>void sort_fn(student k,int size);
>void show_fn(student k ,int size);

Notice at this point student is undefined.

>
>struct student

Now you define student.

>{
>	char name[10];   // for the name of the student
>    int BN;// for the bench number
>	int year ,section,exam;
>  double mark;
>}; //for the mark of the student
Instead define student first:
Code:
struct student
{
	char name[10];   // for the name of the student
    int BN;// for the bench number
	int year ,section,exam;
  double mark;
}; //for the mark of the student

void sort_fn(student k,int size);
void show_fn(student k ,int size);
__________________
http://www.freechess.org
swoopy is offline   Reply With Quote
Old 03-01-2004, 07:57 PM   #11
Registered User
 
Join Date: Feb 2004
Posts: 127
thanks alot really i didnt take care about that .. thanks alot

but there are still errors found

Compiling...
d.cpp
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(108) : error C2664: 'sort_fn' : cannot convert parameter 1 from 'struct student *' to 'struct student'
No constructor could take the source type, or constructor overload resolution was ambiguous
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(109) : error C2664: 'show_fn' : cannot convert parameter 1 from 'struct student *' to 'struct student'
No constructor could take the source type, or constructor overload resolution was ambiguous
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(126) : error C2676: binary '[' : 'struct student' does not define this operator or a conversion to a type acceptable to the predefined operator
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(126) : error C2228: left of '.mark' must have class/struct/union type
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(126) : error C2676: binary '[' : 'struct student' does not define this operator or a conversion to a type acceptable to the predefined operator
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(126) : error C2228: left of '.mark' must have class/struct/union type
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(128) : error C2676: binary '[' : 'struct student' does not define this operator or a conversion to a type acceptable to the predefined operator
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(129) : error C2676: binary '[' : 'struct student' does not define this operator or a conversion to a type acceptable to the predefined operator
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(129) : error C2676: binary '[' : 'struct student' does not define this operator or a conversion to a type acceptable to the predefined operator
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(130) : error C2676: binary '[' : 'struct student' does not define this operator or a conversion to a type acceptable to the predefined operator
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(139) : error C2676: binary '[' : 'struct student' does not define this operator or a conversion to a type acceptable to the predefined operator
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(139) : error C2228: left of '.name' must have class/struct/union type
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(139) : error C2676: binary '[' : 'struct student' does not define this operator or a conversion to a type acceptable to the predefined operator
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(139) : error C2228: left of '.section' must have class/struct/union type
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(139) : error C2676: binary '[' : 'struct student' does not define this operator or a conversion to a type acceptable to the predefined operator
E:\Program Files\Microsoft Visual Studio\MyProjects\dsdsds\d.cpp(139) : error C2228: left of '.mark' must have class/struct/union type
Error executing cl.exe.

d.exe - 16 error(s), 0 warning(s)


thanks in advance
undisputed007 is offline   Reply With Quote
Old 03-01-2004, 08:33 PM   #12
Registered User
 
Join Date: Oct 2001
Posts: 2,936
>void sort_fn(student k,int size);
>void show_fn(student k ,int size);

You are passing an array of student structs, so:
void sort_fn(student k[],int size);
void show_fn(student k[] ,int size);

And don't forget to change these:
>void sort_fn(student & k,int size)
>void show_fn(student & k ,int size)

void sort_fn(student k[],int size)
void show_fn(student k[] ,int size)
__________________
http://www.freechess.org
swoopy is offline   Reply With Quote
Old 03-02-2004, 04:49 AM   #13
Registered User
 
Join Date: Feb 2004
Posts: 127
thanks alot

it works now

thanks again
undisputed007 is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
struct pointer t014y C Programming 5 01-26-2009 03:50 PM
Dynamic array of structures containing yet another dynamic array of structures innqubus C Programming 2 07-11-2008 07:39 AM
pointer problem or so... TL62 C Programming 19 01-12-2008 11:45 PM
Pointer to array of string and Array of Pointer to String vb.bajpai C Programming 2 06-15-2007 06:04 AM
Direct3D problem ahluka Game Programming 10 04-09-2006 03:36 AM


All times are GMT -6. The time now is 10:30 AM.


Powered by vBulletin® Version 3.8.1
Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.3.0 RC2

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22