نمايش بهترين و بدترين نمره

hobab1987

Member
سلام دوستان
اين تابع يك شماره درس رو ميگيره و بهترين و بدترين نمره آن درس رو كه مربوط بهn درس m دانشجوست
بهترين نمره رو نشون ميده اما بدترين نمره رو 0 نشون ميده واسه هر عددي!!! به نظرتون تابع اشكالي داره؟
کد:
void goodbad(int lessno, float grade[m][n])
{
    int max,min,i,j;
    clrscr();
    gotoxy(col,15);
    cout<<"lesson number:";
    cin>>lessno;
    max=grade[0][lessno];
    for(i=0;i<m;i++)
    {
           if(max<=grade[i+1][lessno])
           {
           max=grade[i+1][lessno];
           }
    }
    gotoxy(col,17);
    cout<<"best grade:"<<max;
    [COLOR=Red]min=grade[0][lessno];
    for(i=0;i<m;i++)
    {
           if(min>=grade[i+1][lessno])
           {
           min=grade[i+1][lessno];
           }
    }
    gotoxy(col,19);
    cout<<"worst grade:"<<min[/COLOR];
 getch();
}
 

flashMASTER

New Member
بفرما حل شد
اشکال اون در مقدار اولیه i هستش که بایستی تصحیح بشه
کد:
void goodbad(int lessno, float grade[m][n])
{
    int max,min,i,j;
    clrscr();
    gotoxy(col,15);
    cout<<"lesson number:";
    cin>>lessno;
    max=grade[0][lessno];
    for(i=1;i<m;i++)
    {
           if(max<=grade[i][lessno])
           {
           max=grade[i][lessno];
           }
    }
    gotoxy(col,17);
    cout<<"best grade:"<<max;
    min=grade[0][lessno];
    for(i=1;i<m;i++)
    {
           if(min>=grade[i][lessno])
           {
           min=grade[i][lessno];
           }
    }
    gotoxy(col,19);
    cout<<"worst grade:"<<min;
 getch();
}
 

the_king

مدیرکل انجمن
اشکال از اندیس هایی است که برای مولفه اول آرایه grade بکار بردید، اندیس آرایه ها از 0 شروع می شوند
ولی شما از i+1 استفاده کرده اید که از 1 شروع می شود. به همین دلیل از محدوده آرایه خارج می شوید
زیرا مولفه اول m عضو داشت که از 0 الی m-1 شماره گذاری می شود، اما شما اندیس های 1 الی m
را پردازش می کنید، آخرین اندیس یعنی m از محدوده خارج است و یک عدد غیر قابل پیش بینی در آن
ذخیره شده.

کافیست که آن i+1 ها را با i جایگزین کنید، همچنین همانطور که flashMASTER عزیز در کدشان نشان دادند،
نیازی نیست که مقدار حلقه را از 0 شروع کنید، چون خودتان پیش از حلقه مقدار اولیه min و max را روی
همان اندیس 0 تنظیم کرده اید.


 
 

جدیدترین ارسال ها

بالا