Function and Two dime array problem

Problem stated after the codes

#include <iostream>
#include <string>
#include <cstring>
using namespace std;

struct studentsrecord{
char fname[100];
char lname[100];
char course[100];
int age;
char nationality[100];
char gender [100];
}studrec[100][100];

int pupils,row,columns,ctr,i,ctr2=1,arranger;
string answer;

void arrange(studentsrecord[100][100],int,int);
void arrange2(studentsrecord[][100],int,int);
void arrange3(studentsrecord[][100],int,int);
void arrange4(studentsrecord[][100],int,int);
void arrange5(studentsrecord[][100],int,int);



int main()
{
do
{
cout<<"Enter number of students in the class: ";
cin>>pupils;
cout<<"\nEnter number of students per row: ";
cin>>columns;

row=pupils/columns;

if(columns==pupils)
{row=1;}

if((row>1)&&(row%2==1))
{row=row+1;}

cout<<endl;
cout<<"Your class of "<<pupils<<" will have a "<<row<<" row/s and "<<columns<<" column/s arrangement\n";

cout<<endl<<"Is this arrangement okay?(Y/N) ";
cin>>answer;

if(answer == "n"||answer == "no"||answer == "N"||answer == "NO"||answer == "No")
{cout<<"Enter data again "<<endl<<endl;}

}while(answer == "n"||answer == "no"||answer == "N"||answer == "NO"||answer == "No");

cout<<endl;


for(ctr=0;ctr<pupils;ctr++)
{ for(i=0;i<row;i++)
{cout<<"Information for Student: "<<ctr2<<endl<<endl;
cin.clear();cin.sync();
do
{
cout<<"Enter First Name: ";
cin.getline(studrec[ctr].fname,100);
for(int i=0;i<strlen(studrec[ctr][i].fname);i++)
if(!(isalpha(studrec[ctr][i].fname[i])))
cout<<"Invalid Input \n";
}while(!(isalpha(studrec[ctr][i].fname[ctr])));
cin.clear();cin.sync();

do{
cout<<"Enter Last Name: ";
cin.getline(studrec[ctr][i].lname,100);
for(int i=0;i<strlen(studrec[ctr][i].lname);i++)
if(!(isalpha(studrec[ctr][i].lname[i])))
cout<<"Invalid Input \n";
}while(!(isalpha(studrec[ctr][i].lname[ctr])));
cin.clear();cin.sync();

do{
cout<<"Enter Course: ";
cin.getline(studrec[ctr][i].course,100);
for(int i=0;i<strlen(studrec[ctr][i].course);i++)
if(!(isalpha(studrec[ctr][i].course[i])))
cout<<"Invalid Input \n";
}while(!(isalpha(studrec[ctr][i].course[ctr])));
cin.clear();cin.sync();


cout<<"Enter Age: ";
cin>>studrec[ctr][i].age;
cin.clear();cin.sync();
do{
cout<<"Enter Nationality: ";
cin.getline(studrec[ctr][i].nationality,100);
for(int i=0;i<strlen(studrec[ctr][i].nationality);i++)
if(!(isalpha(studrec[ctr][i].nationality[i])))
cout<<"Invalid Input \n";
}while(!(isalpha(studrec[ctr][i].nationality[ctr])));
cin.clear();cin.sync();

do{
cout<<"Enter Gender: ";
cin.getline(studrec[ctr][i].gender,100);
for(int i=0;i<strlen(studrec[ctr][i].gender);i++)
if(!(isalpha(studrec[ctr][i].gender[i])))
cout<<"Invalid Input \n";
}while(!(isalpha(studrec[ctr][i].gender[ctr])));
cin.clear();cin.sync();

cout<<endl;
ctr2++;}}

system("cls");

cout<<"How do you want your students to be arranged? \n\n";

cout<<"Arrangement Options\n";
cout<<"[1] Arrange by Last Name\n";
cout<<"[2] Arrange by Age\n";
cout<<"[3] Arrange by Course\n";
cout<<"[4] Arrange by gender\n";
cout<<"[5] Arrange by Nationality\n";
cout<<"[6] Exit\n\n";


do
{
cout<<"\n\nEnter your Option: ";
cin>>arranger;
if(arranger<6)
cout<<"Invalid Option";
cout<<endl;}
while(arranger<6);

if(arranger==1)
{{cout<<" Arrange by Last Name";
arrange(studrec,arranger,pupils);
cout<<"\n++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n";
cout<<endl<<endl;}}

else if(arranger==2)
{{cout<<" Arrange by Age";
arrange2(studrec,arranger,pupils);
cout<<"\n++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n";
cout<<endl<<endl;}}

else if(arranger==3)
{{cout<<"arrange by Course";
arrange3(studrec,arranger,pupils);
cout<<"\n++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n";
cout<<endl<<endl;}}

else if(arranger==4)
{{cout<<"arrange by Gender";
arrange4(studrec,arranger,pupils);
cout<<"\n++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n";
cout<<endl<<endl;}}

else if(arranger==5)
{{cout<<"arrange by Nationality";
arrange5(studrec,arranger,pupils);
cout<<"\n++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n";
cout<<endl<<endl;}}

else if(arranger==6)
exit(1);


system("pause>0");
return 0;
}


void arrange(studentsrecord studrec[100][100], int arranger,int pupil)
{ studentsrecord *itm;
itm = studrec;
for(int x=0;x<pupil-1;x++)
{
studentsrecord *item = itm+1;
for(int y=x+1;y<pupil;y++)
{
if(arranger==1){
for(int y=0;y<strlen(itm->lname);y++)
if(itm->lname[y] > item->lname[y]){
studentsrecord *i=new studentsrecord;
*i = *itm;
*itm = *item;
*item = *i;
}
}
item++;
}
itm++;
}
}
void arrange2(studentsrecord studrec[][100], int arranger,int pupil)
{ studentsrecord *itm;
itm = studrec;
for(int x=0;x<pupil-1;x++)
{
studentsrecord *item = itm+1;
for(int y=x+1;y<pupil;y++)
{
if(arranger==2){
if(itm->age > item->age){
studentsrecord *i=new studentsrecord;
*i = *itm;
*itm = *item;
*item = *i;
}
}
item++;
}
itm++;
}



}
void arrange3(studentsrecord studrec[][100], int arranger,int pupil)
{ studentsrecord *itm;
itm = studrec;
for(int x=0;x<pupil-1;x++)
{
studentsrecord *item = itm+1;
for(int y=x+1;y<pupil;y++)
{
if(arranger==3){
for(int y=0;y<strlen(itm->lname);y++)
if(itm->course[y] > item->course[y]){
studentsrecord *i=new studentsrecord;
*i = *itm;
*itm = *item;
*item = *i;
}
}
item++;
}
itm++;
}
}
void arrange4(studentsrecord studrec[][100], int arranger,int pupil)
{ studentsrecord *itm;
itm = studrec;
for(int x=0;x<pupil-1;x++)
{
studentsrecord *item = itm+1;
for(int y=x+1;y<pupil;y++)
{
if(arranger==4){
for(int y=0;y<strlen(itm->course);y++)
if(itm->gender[y] > item->gender[y]){
studentsrecord *i=new studentsrecord;
*i = *itm;
*itm = *item;
*item = *i;
}
}
item++;
}
itm++;
}
}
void arrange5(studentsrecord studrec[][100], int arranger,int pupil)
{ studentsrecord *itm;
itm = studrec;
for(int x=0;x<pupil-1;x++)
{
studentsrecord *item = itm+1;
for(int y=x+1;y<pupil;y++)
{
if(arranger==4){
for(int y=0;y<strlen(itm->course);y++)
if(itm->nationality[y] > item->nationality[y]){
studentsrecord *i=new studentsrecord;
*i = *itm;
*itm = *item;
*item = *i;
}
}
item++;
}
itm++;
}
}


the codes posted above is my program what it suppose to do is to make a class seat plan for a person depending on the option he/she chooses




but it seems to be having a problem in this part (the one underlined)....please help me this due on monday and i badly need help


void arrange(studentsrecord studrec[100][100], int arranger,int pupil)
{ studentsrecord *itm;
[u][i]itm = studrec;
[/u]
for(int x=0;x<pupil-1;x++)
{
studentsrecord *item = itm+1;
for(int y=x+1;y<pupil;y++)
{
if(arranger==1){
for(int y=0;y<strlen(itm->lname);y++)
if(itm->lname[y] > item->lname[y]){
studentsrecord *i=new studentsrecord;
*i = *itm;
*itm = *item;
*item = *i;
}
}
item++;
}
itm++;
}
}
Last edited on
1
2
studentsrecord *itm;
i]itm = studrec;


The code above is invalid because the left and the right operands of the assignment in the last statement has incompatible types.
Last edited on
Topic archived. No new replies allowed.