PDA

View Full Version : سوال: استفاده از متغير در توابع ديگر



kaz3m.b
شنبه 30 دی 1391, 04:41 صبح
با سلام


من يك برنامه دارم كه داراي چند تابع هست و مياد و اول اسم كاربر رو ميگيره و بعد شماره كاربر و بعد تعداد دروسي كه ميخواد نمره هاشو وارد كنه و بعد هم نمره هارو وارد ميكنه .
بعد از وارد كردن نمره ها ، نمره هاش نمايش داده ميشه . ولي نه به اندازه اي كه كاربر وارد كرده بلكه به تعداد مشخصي كه به عدد وارد شده . من ميخوام اون متغيري كه تعداد دروس رو ذخيره ميكنه تو خودش كه اسمش tot هست رو در اين تابع هم استفاده كنم كه نياز به استفاده از عدد مشخص نباشه .
اين كل برنامه :
#include<iostream.h>
#include<conio.h>
#include<stdio.h>
#include<string.h>
//In Barname Ebteda Etelaati Mesle name Va Shomare Danesh Amooz Va Tedad Doros Ra Migirad Va Bar Asase Tedad Dars haye Vared Shode
//Ra Chap Mikonad Va Be Ezaye Harkodam Nomre Migirad Va Dar Akhar Nomre Varzesh Ra Joda Migirid Va Jam Anhara Hesab Mikonad Va Moadel Ra
//Mohasebe Mikonad
class student_id
{
int rno;
char name[20];
public:
int tot;

void read_id()
{
cout<<"\n\nEnter the Name of the Student : ";
gets(name); //in tabe baraye in estefade shode chon momken hast ke karbar bekhad name ee ra ba fasele varde konad va ba cin nemishavad name ra ba fasele vared kard
cout<<"\n\nEnter The Student No. : ";
cin>>rno;
}

void display_nr()
{
cout<<"\n\n\t\tSTUDENT \n\nNAME : ";
puts(name);
cout<<"\n\nStudent NO. : "<<rno;
}
};

class marks:public student_id
{
public:
int i,tot,mark[3];

void read_m()
{
read_id();
cout<<"\n\nEnter The Total Of Grades :";
cin>>tot;

for(i=0;i<tot;i++)
{
cout<<"\n\nEnter The Grade "<<i+1<<" between 0 & 20 : ";
cin>>mark[i];
}
}

void display_m()
{
display_nr();
cout<<"\n\n\tResults ";
for(i=0;i<3;i++)
cout<<"\n\nGrade "<<i+1<<" : "<<mark[i];
}
};

class sports
{
public:
int sm;

void read_sportm()
{
cout<<"\n\nEnter The Grade Of Sport : ";
cin>>sm;
}
};

class ave:public marks,public sports
{
public:
float total,average;
void calculate()
{
read_m();
read_sportm();
total=0;
for(i=0;i<3;i++)
{
total+=mark[i];
}
total+=sm;
average=(total/4);
}

void display_totp()
{
display_m();
cout<<"\n\nTOTAL = "<<total;
cout<<"\n\nAverage = "<<average;
}
};

void main()
{
int cont;
ave pc;
clrscr();
do
{
pc.calculate();
clrscr();
pc.display_totp();
cout<<"\n\nDo You Want to Continue?(1-YES/0-NO)";
cin>>cont;
}while(cont==1);
getch();
}

تابعي هم كه بايد tot رو در خودش قرار بده اينه : ( بايد به جاي 3 در داخل for قرار بگيره . )

void display_m()
{

display_nr();
cout<<"\n\n\tResults ";
for(i=0;i<3;i++)
cout<<"\n\nGrade "<<i+1<<" : "<<mark[i];
}
};

ممنون ميشم كمك كنيد در اين مورد .


با تشكر

FastCode
شنبه 30 دی 1391, 04:45 صبح
لطفاً کدتون رو indent کنید
چشمم درد گرفت

kaz3m.b
شنبه 30 دی 1391, 05:05 صبح
شرمنده !!!

سعي كردن بهترشون كنم . ( پست اول رو ويرايش كردم )

saied_hacker
شنبه 30 دی 1391, 09:43 صبح
مه که درست نفهمیدیم چی گفتی :)
اما اگه میخای از tot توی display_m() استفاده کنی که بای اینجوری تغییرش بدی
void display_m(int mytot)
{

display_nr();
cout<<"\n\n\tResults ";
for(i=0;i< mytot;i++)
cout<<"\n\nGrade "<<i+1<<" : "<<mark[i];
}
};

و اینجوری فراخونیش کنی :
display_m(tot);
یا حالا هر مقدار دلبخواه
display_m(20);

البته بعید میدونم درست متوجه شده باشم :)

kaz3m.b
شنبه 30 دی 1391, 23:18 عصر
من ميخواستم كه از متغير tot كه توي تابع read_m بهش يه مقدار داديم از مقدارش توي تابع display_m هم استفاده كنم .

اميدوارم منظورم رو متوجه شده باشيد .

kaz3m.b
یک شنبه 01 بهمن 1391, 00:08 صبح
يكم بيشتر باهاش ور رفتم درست شد .

بايد متغير tot رو كه از نوع int در تابع read_m با نوع public تعريف كرده بودم از نوع protected تعريف ميكردم .

خيلي ممنون درست شد :ايكس