PDA

View Full Version : رفع error های این کد



fshb_ 1370
یک شنبه 25 بهمن 1388, 09:21 صبح
سلام
وقتی کد زیر رو میخوام اجرا کنم error میده، و نمیتونم رفعش کنم.
این کد:

#include<iostream>
#include<iomanip>
#include<string>
using namespace std;
class GradeBook
{
public:
const static int row=10;
const static int column=3;

GradeBook (string name,const int gradeArray[][column])
{
setCourseName(name);
for (int i=0;i<row;i++)
for(int j=0;j<column;j++)
grades[i][j]=gradeArray[i][j];
}

void setCourseName(string name)
{
courseName=name;
}
string getCourseName()
{
return courseName;
}
void displayMessage()
{
cout<<"CS101 Introduction to C++‎ Programming\n"<<getCourseName()<<"!"<<endl;
}
void processGrades()
{
outputGrades();

cout<<"\n\nThe lowest value: "<<getMinimum()<<"\nThe highest value: "<<getMaximum();
cout<<endl;
outputBarChart();
}
void outputBarChart()
{
const int sizeArray=11;
int frequency[sizeArray]={0};

for(int j=0;j<row;j++)
for (int i=0;i<column;i++)
frquency[grades[j][i]/10]++;
cout<<"Overall grade distribution: ";
for (int i=0;i<=row;i++)
{
if (i==0)
cout<<" 0-9: ";
else if (i==10)
cout<<" 100: ";
else
cout<<" "<<i*10<<"-"<<(i*10)+9<<": ";
for (int j=0;j<frquency[i];j++)
cout<<"*";
cout<<endl;

}
}
int getMinimum()
{
int minimum=100;
for (int i=0;i<row;i++)
for (int j=0;j<column;j++)
if (grades[i][j]<minimum)
minimum=grades[i][j];
return minimum;
}
int getMaximum()
{
int maximum=0;
for (int i=0;i<row;i++)
for (int j=0;j<column;j++)
if (grades[i][j]>maximum)
maximum=grades[i][j];
return maximum;
}
void outputGrades()
{
cout<<"\nThe grades is:";
cout<<endl<<"\t\t";
for (int i=0;i<column;i++)
cout<<"Test"<<i+1<<setw(4);
cout<<"Average";
for (int i=0;i<row;i++)
{
cout<<"student "<<row+1<<":";
for (int j=0;j<column;j++)
cout<<setw(4)<<grades[i][j];

double average=getAverage(grades[i],column);
cout<<average;
cout<<endl;
}
}
double getAverage(int grades[],const int column)
{
int total=0;
for (int i=0;i<column;i++)
total+=grades[i];
return static_cast<double>(total)/column;
}

private:
string courseName;
int grades[row][column];
}
void main()
{
int gradeArray[GradeBook::row][GradeBook::column]={{ 87, 96, 70 },{ 68, 87, 90 },{ 94, 100, 90 },{ 100, 81, 82 },{ 83, 65, 85 },{ 78, 87, 65 },{ 85, 75, 83 },{ 91, 94, 100 },{ 76, 72, 84 },{ 87, 93, 73 }};
GradeBook myGradeBook("CS101 Introduction to C++‎ Programming",gradeArray);
myGradeBook.displayMessage();
myGradeBook.processGrades();
int a;
cin>>a;
}

و اینم هم error هایی که میده:
error haye 7.10
error C2628: 'GradeBook' followed by 'void' is illegal (did you forget a ';'?)
error C3874: return type of 'main' should be 'int' instead of 'GradeBook'
error C2065: 'frquency' : undeclared identifier
error C2065: 'frquency' : undeclared identifier

amin1softco
یک شنبه 25 بهمن 1388, 11:15 صبح
والا این تو این کد منم نمی دونم کجا این آرایه

frquency[grades[j][i]/10]++;
تعریف شده
بعد پایان هر کلاس باید یک سیمیکولن بزارید اخطار اول
چون با dev کامپایل می کنید باید main از نوع int باشه بعد یک return0; آخر تابع مین اضافه کنید
باید مشکلتون حل بشه

____________
شیخی به زنی فاحشه گفتا مستی
هر لحظه به دام دگری پا بستی
گفتا شیخا هر آن چه گویی هستم
آیا تو چنان که می نمایی هستی

hidika
یک شنبه 25 بهمن 1388, 11:42 صبح
فکر می کنم یه مشکلش این باشه که frequency موقع تعریف شدن 11 تا عضو داره(که همشون صفرند).اما دو سه خط پایین تر،توي اون دوتا حلقه ی تو در تو row*column بار يعنی 30 بار مقدار داده می شه.
فکر میکنم اگر ثابت sizeArray رو به جای 11، 30 تعریف کنيد این error رفع بشه.

Salar Ashgi
یک شنبه 25 بهمن 1388, 13:43 عصر
نحوه طراحی کلاس شما کلا نادرسته .

عموما یک کلاس به شکل زیر تعریف میشه :



class Name{
public :
.......
private :
......
};
//============
definition of public functions


که شما این اصول رو رعایت نکردین .

fshb_ 1370
یک شنبه 25 بهمن 1388, 17:33 عصر
والا این تو این کد منم نمی دونم کجا این آرایه

frquency[grades[j][i]/10]++;
تعریف شده
بعد پایان هر کلاس باید یک سیمیکولن بزارید اخطار اول
چون با dev کامپایل می کنید باید main از نوع int باشه بعد یک return0; آخر تابع مین اضافه کنید
باید مشکلتون حل بشه

با گذاشتن سیمیکولن یکی از error ها رفع میشه، ولی هنوز دو تا دیگه error داره.
برنامه های دیگه ای که می نویسم main رو از نوع void تعریف میکنم و هیچ error ی نمیگیره، مشکلش باید یه جای دیگه باشه:متفکر:
در ضمن آرایه frquency تو خط outputBarChart 2 تعریف شده، اینم کدش:

const int sizeArray=11;
int frequency[sizeArray]={0};

fshb_ 1370
یک شنبه 25 بهمن 1388, 17:37 عصر
نحوه طراحی کلاس شما کلا نادرسته .

عموما یک کلاس به شکل زیر تعریف میشه :



class Name{
public :
.......
private :
......
};
//============
definition of public functions


که شما این اصول رو رعایت نکردین .

منم تو تعریف کلاسم فقط یه سمیکلون رو جا گذاشتم، که با گذاشتن اون بازم 2 تا error میده

amin1softco
یک شنبه 25 بهمن 1388, 19:12 عصر
والا هنوز کامپایلر ها به این نوع هوش مصنوعی مجهز نشدند که


frquency[grades[j][i]/10]++;
اینرا با این بفهمند یکی هست:


int frequency[sizeArray]={0};
یعنی باید معلم دیکته براشون بزارند تا بتونند تشخیص بدند:لبخند:

اینم اصلاح شده :


#include<iostream>
#include<iomanip>
#include<string>
using namespace std;
class GradeBook
{
public:
const static int row=10;
const static int column=3;

GradeBook (string name,const int gradeArray[][column])
{
setCourseName(name);
for (int i=0;i<row;i++)
for(int j=0;j<column;j++)
grades[i][j]=gradeArray[i][j];
}

void setCourseName(string name)
{
courseName=name;
}
string getCourseName()
{
return courseName;
}
void displayMessage()
{
cout<<"CS101 Introduction to C++ýý Programming\n"<<getCourseName()<<"!"<<endl;
}
void processGrades()
{
outputGrades();

cout<<"\n\nThe lowest value: "<<getMinimum()<<"\nThe highest value: "<<getMaximum();
cout<<endl;
outputBarChart();
}
void outputBarChart()
{
const int sizeArray=11;
int frquency[sizeArray]={0};

for(int j=0;j<row;j++)
for (int i=0;i<column;i++)
frquency[grades[j][i]/10]++;
cout<<"Overall grade distribution: ";
for (int i=0;i<=row;i++)
{
if (i==0)
cout<<" 0-9: ";
else if (i==10)
cout<<" 100: ";
else
cout<<" "<<i*10<<"-"<<(i*10)+9<<": ";
for (int j=0;j<frquency[i];j++)
cout<<"*";
cout<<endl;

}
}
int getMinimum()
{
int minimum=100;
for (int i=0;i<row;i++)
for (int j=0;j<column;j++)
if (grades[i][j]<minimum)
minimum=grades[i][j];
return minimum;
}
int getMaximum()
{
int maximum=0;
for (int i=0;i<row;i++)
for (int j=0;j<column;j++)
if (grades[i][j]>maximum)
maximum=grades[i][j];
return maximum;
}
void outputGrades()
{
cout<<"\nThe grades is:";
cout<<endl<<"\t\t";
for (int i=0;i<column;i++)
cout<<"Test"<<i+1<<setw(4);
cout<<"Average";
for (int i=0;i<row;i++)
{
cout<<"student "<<row+1<<":";
for (int j=0;j<column;j++)
cout<<setw(4)<<grades[i][j];

double average=getAverage(grades[i],column);
cout<<average;
cout<<endl;
}
}
double getAverage(int grades[],const int column)
{
int total=0;
for (int i=0;i<column;i++)
total+=grades[i];
return static_cast<double>(total)/column;
}

private:
string courseName;
int grades[row][column];
};
int main(void)
{
int gradeArray[GradeBook::row][GradeBook::column]={{ 87, 96, 70 },{ 68, 87, 90 },{ 94, 100, 90 },{ 100, 81, 82 },{ 83, 65, 85 },{ 78, 87, 65 },{ 85, 75, 83 },{ 91, 94, 100 },{ 76, 72, 84 },{ 87, 93, 73 }};
GradeBook myGradeBook("CS101 Introduction to C++ýý Programming",gradeArray);
myGradeBook.displayMessage();
myGradeBook.processGrades();
int a;
cin>>a;
}


فایل اجرایی کامپایلشم ضمیمه شد

fshb_ 1370
یک شنبه 25 بهمن 1388, 19:33 عصر
ممنون، اصلا حواسم به این نبود که اشتباه تایپ کردم:گیج: