ورود

View Full Version : مبتدی: کلاس student



ferry_2020
دوشنبه 12 اسفند 1392, 22:34 عصر
با عرض سلام و احترام
من برای سوال زیر،برنامه را نوشتم،خطا هم نمیده ولی جواب درست رو هم نشون نمیده.هر تعداد که وارد کنم،آخرین مورد را بعنوان جواب نشون میده!
خیلی سعی کردم مشکلشو پیدا کنم ولی متوجه نشدم.
ممنون میشم راهنمائی بفرمائید
سوال : برنامه ای که نام و شماره دانشجویی و معدل تعدادی از دانشجویان را خوانده و مشخصات دانشجویی که دومین نمره را از نظر بزرگی دارد،به خروجی ببرد.




#include<iostream>
using namespace std ;
class student
{
public :
student(void);
void input( );
void output( );
float getAverage( );
private :
int stno;
string name;
float average;
} ;
#include<iostream>
#include<string>
using namespace std ;
student :: student(void)
{
average = 0;
}
void student :: input( )
{
cout<<"Enter name,stno,average : "<<endl;
cin>>name>>stno>>average;
}
float student :: getAverage ( )
{
return average;
}
void student :: output( )
{
cout<<"name is : "<<name<<endl<<"stno is : "<<stno
<<endl<<"Average is : "<<average<<endl;
}
student enter( )
{
student st;
st.input( );
return st;
}
void main ( )
{
int n , i ;
student st1 , st2 , st ;
cout<<"Enter number of student : ";
cin >> n ;
for (i=0;i<n;i++)
{
st = enter ( ) ;
if ( st.getAverage( ) > st1.getAverage( ) )
{
st2=st1 ;
st1=st ;
}
else if ( st.getAverage( ) > st2.getAverage( ) ) ;
st2=st ;
}
cout<<"Student with second rank : "<<endl;
st2 .output ( );
}

***BiDaK***
دوشنبه 12 اسفند 1392, 22:49 عصر
در این قسمت سمی کالن گذاشتید که باید پاکش کنید.
else if ( st.getAverage( ) > st2.getAverage( ) ) ;

motherboard
سه شنبه 13 اسفند 1392, 00:05 صبح
با عرض سلام و احترام
من برای سوال زیر،برنامه را نوشتم،خطا هم نمیده ولی جواب درست رو هم نشون نمیده.هر تعداد که وارد کنم،آخرین مورد را بعنوان جواب نشون میده!
خیلی سعی کردم مشکلشو پیدا کنم ولی متوجه نشدم.
ممنون میشم راهنمائی بفرمائید
سوال : برنامه ای که نام و شماره دانشجویی و معدل تعدادی از دانشجویان را خوانده و مشخصات دانشجویی که دومین نمره را از نظر بزرگی دارد،به خروجی ببرد.




#include<iostream>
using namespace std ;
class student
{
public :
student(void);
void input( );
void output( );
float getAverage( );
private :
int stno;
string name;
float average;
} ;
#include<iostream>
#include<string>
using namespace std ;
student :: student(void)
{
average = 0;
}
void student :: input( )
{
cout<<"Enter name,stno,average : "<<endl;
cin>>name>>stno>>average;
}
float student :: getAverage ( )
{
return average;
}
void student :: output( )
{
cout<<"name is : "<<name<<endl<<"stno is : "<<stno
<<endl<<"Average is : "<<average<<endl;
}
student enter( )
{
student st;
st.input( );
return st;
}
void main ( )
{
int n , i ;
student st1 , st2 , st ;
cout<<"Enter number of student : ";
cin >> n ;
for (i=0;i<n;i++)
{
st = enter ( ) ;
if ( st.getAverage( ) > st1.getAverage( ) )
{
st2=st1 ;
st1=st ;
}
else if ( st.getAverage( ) > st2.getAverage( ) ) ;
st2=st ;
}
cout<<"Student with second rank : "<<endl;
st2 .output ( );
}


سلام.شما علاوه بر برداشتن اون سمی کالن که کاربر BiDaK اشاره کردند باز شما باید با خطایی روبه رو شوید شما به جای
void main ( )

از
int main ( )

استفاده کنید وبرای اینکه برنامه تون سریع محو نشه اول برنامه از

#include <conio.h>

هم استفاده کنید و در اخر برنامه تون از

getch();


قبل از پایان اکولاد استفاده کنید.

و اما نکته مهم این که شما به جای عبارت

if ( st.getAverage( ) > st1.getAverage( ) )

از عبارت

if ( st.getAverage( ) < st1.getAverage( ) )

استفاده کنید و وقتی برنامه را اجرا کنید دانشجویی که معدل بیش تری داره تو جواب میاره.:بوس: