دیگه لازم نیست ، با هر بدبختی بود نوشتم:n12:
Printable View
دیگه لازم نیست ، با هر بدبختی بود نوشتم:n12:
سلام دوستان
برای تعریف کلاس shapeچه متغیرایی لازمه؟!!!!:n13:
شما در اين قطعه كد x رو مقدار دهي اوليه كرديد و كامپايلر در زمان كامپايل ميدونه چه مقدار حافظه رو به اون اختصاص بده،نقل قول:
شما اگه x رو از كاربر بگيري و "بعد" آرايه ي myarray رو با x تعريف كني مطمئنا خطا ميگيره؛
اگر با اين حال تست كرديد و حرفه بنده درست نبود،بهم بگيد.
Mehrdad Sh.
دوستانی که محیط بورلند سی ++ 5 را دارند ، آیا میتوانند به راحتی از فایل ها استفاده کنند .
من برنامه زیر را نوشتم برای استفاده از فایل ها که از فایل a نمره 10 دانشجو را میخواند و میانگین میگیرد ، در ویژوال استودیو با قرار دادن فایل در سورس فایل بدون خطا برنامه اجرا شد ولی الان فقط بورلند را دارم و اجرا نمیشود ، خواستم دوستی تستی کنند و احیانا راه حلی پیشنهاد بدهند ، ممنون میشوم
کد:
کد:
#include <stdio.h>
#include <conio.h>
int main()
{
FILE *fp;
int i;
int s=0;
int a;
int mkji;
fp=fopen("D:\\a.txt", "r+");
if (fp!=0)
{
for(i=0; i<=9; i++)
{
fscanf(fp,"%d",&a);
s+=a;
}
printf("%d", s/10);
int mkji = fclose(fp);
}
else
printf("FILE CANNOT BE OPEN");
getch();
return 0;
}
a.txt
نقل قول:
10
20
10
15
20
11
14
20
20
10
اگر ماتریسی خودتوان و متقارن باشد ثابت کنید مجموع اعضای روی قطر اصلی اش با تعداد بردارهای سطری یاستونی مستقل خطی اش برابر است
Sent from my GT-P1000 using Tapatalk 2
سلام بر دوستان
یه برنامه نوشتم می خوام این برنامه رو بدون virtualبنویسم کسی می تونه کمکم کنه؟!!!نقل قول:
#include <iostream>
using namespace std;
class shape
{
int x,y;
int c;
public:
shape(int x1,int y1,int c1){x=x1;y=y1;c=c1;}
virtual void draw(){};
};
class circle:public shape
{
protected:
int r;
public:
circle(int x1,int y1,int c1,int r1):shape(x1,y1,c1)
{
r=r1;
}
virtual void draw(){cout<<"draw circle:"<<r<<endl;}
};
class ellipse:public circle
{
int rr;
public:
ellipse(int x1,int y1,int c1,int r1,int r2):circle(x1,y1,c1,r1)
{
rr=r2;
}
virtual void draw(){cout<<"draw ellipse:"<<rr<<" "<<r;}
};
int main()
{
shape *shapelist[2];
shapelist[0]=new circle(1,1,9,5);
shapelist[1]=new ellipse(0,0,0,1,2);
for(int i=0;i<2;i++)
shapelist[i]->draw();
return 0;
}
سلام.نقل قول:
سلام بر دوستان
یه برنامه نوشتم می خوام این برنامه رو بدون virtualبنویسم کسی می تونه کمکم کنه؟!!!
برای اینکه بتونید کاربرد توابع virtual رو شبیه سازی کنید باید از قالب ها استفاده کنید. با استفاده از قالب ها میتونید کارایی توابع virtual رو البته در زمان کامپایل و نه زمان اجرا داشته باشید.
نا گفته نماند که این مکانیزم تمام ویژگی های virtual ها رو به شما نمیده و محدود هست(برای مثال شما نمیتونید بصورت داینامیک ارث بری کنید) اما در مواردی که سرعت اجرا برای شما خیلی مهمه میتونه مکانیزم خوبی باشه به این دلیل که سربار جستجو در V-table کاملا حذف میشه.
من کدتونو تغییر دادم.(یکسری اشکالات جزئی داشت)
کد:#include <iostream>
using namespace std;
template <typename T>
class shape{
public:
shape(int x1,int y1,int c1):
x(x1), y(y1), c(c1)
{}
void draw(){}
private:
int x,y;
int c;
};
class circle : public shape<circle>{
public:
circle(int x1,int y1,int c1,int r1):
shape(x1,y1,c1),
r(r1)
{}
void draw(){cout<<"draw circle:"<<r<<endl;}
private:
int r;
};
class ellipse : public shape<ellipse>{
public:
ellipse(int x1,int y1,int c1,int r1,int r2):
shape(x1,y1,c1),
rr1(r1), rr2(r2)
{}
void draw(){cout<<"draw ellipse:"<<rr1<<" "<<rr2;}
private:
int rr1 ,rr2;
};
int main(){
// shape *shapelist[2];
// shapelist[0]=new circle(1,1,9,5);
// shapelist[1]=new ellipse(0,0,0,1,2);
circle sh1(10,20,30,40);
ellipse sh2(50,60,70,80,90);
sh1.draw();
sh2.draw();
return 0;
}
ممنوننقل قول:
ولی من می خوام با همون آرایه از کلاس پایه این برنامه اجرا بشه و virtualهم نداشته باشه نه اینکه با شی از کلاس مشتق تابع را فراخوانی کنم!!!:n13:
دقیقا یکی از محدودیت ها همین مورد هست. شما نمیتونید چنین کاری انجام بدید!نقل قول:
ممنون
ولی من می خوام با همون آرایه از کلاس پایه این برنامه اجرا بشه و virtualهم نداشته باشه نه اینکه با شی از کلاس مشتق تابع را فراخوانی کنم!!!:n13:
آخه استادمون گفت میشه!!!(البته گفت باید تو سر خوودتون بزنید تا بشه)نقل قول:
داشت درمورد اینکه توی تابع draw کلاس پایه ifبزارید و از این حرفا صحبت می کرد ولی زیاد توضیح نداد!!!