الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

Classes

مغلق
بدأه rama في 8 ديسمبر 2003 · 2 رد · 612 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته :

لدي سؤالين

السؤال الأول :

ما هي تعليمة التربيع في ال c++ أي التعليمة التي نوجد بها مربع عدد square

السؤال الثاني :

بدأنا من جديد بتعلم الكلاسيس أو الصفوف ونقوم ببرمجة مسألة تقول :

يعبر عن نقطة في الإحداثيات الديكارتية بمسقطيها على محوري السينات والعينات

Point(xcoordinate,ycoordinate)

بعير عن المستقيم بدلالة نقطتي بدايته ونهايته

Line(startpoint,endpoint)

وبطول length

المطلوب توصيف الصفوف الواردة في المسألة برمجيا

قمت بتوصيف الصفوف وبرمجتها كالتالي

#include<iostream.h>

#include<math.h>

class point{

public:

point(int x,int y){

xcoordinate=x;

ycoordinate=y;}

void print(){

cout<<"XCoordinate = "<<xcoordinate<<endl;

cout<<"YCoordinate = "<<ycoordinate<<endl;

}

int xcoordinate,ycoordinate;

};

//******************************//

class line{

private:

point startpoint,endpoint;

public:

line(point a,point B){

startpoint=a;

endpoint=b;}

void print(){

cout<<"Start Point"<<endl;

cout<<" XCoordinate= "<<startpoint.xcoordinate<<endl;

cout<<" Ycoordinate= "<<startpoint.ycoordinate<<endl;

cout<<"End Point "<<endl;

cout<<" XCoordinate= "<<endpoint.xcoordinate<<endl;

cout<<" Ycoordinate= "<<endpoint.ycoordinate<<endl;}

double getlength(double length){

length=sqrt(power(endpoint.xcoordinate-startpoint.xcoordinate)+power(endpoint.ycoordinate-startpoint.ycoordinate));

return length;

}

};

//***************************************//

void main()

{

int r;

int x,y,x1,x2,y1,y2;

point p,p2,p3;

cout<<"1 For point"<<endl;

cout<<"2 For line"<<endl;

cin>>r;

if(r==1)

{

cout<<"Enter Xcoordinate , Ycoordinate"<<endl;

cin>>x>>y;

p(x,y);

}

else

if(r==2)

{

cout<<"enter coordinates for the start point"<<endl;

cout<<"xcoordinate= "<<endl;

cin>>x1;

cout<<"ycoordinate="<<endl;

cin>>y1;

cout<<"enter coordinates for the end point"<<endl;

cout<<"xcoordinate= "<<endl;

cin>>x2;

cout<<"ycoordinate="<<endl;

cin>>y2;

p2(x1,y1);

p3(x2,y2);

line(p2,p3);

}

}

لكن عند محاولة الاستفادة من تعريف ال point لاستخدامها في أغراض أخرى من كلاسات أخرى وفي البرنامج أعطاني الكومبايلر هذه الرسالة

F:\Ak\clas.cpp(24) : error C2512: 'point' : no appropriate default constructor available

ماذا تعني ، هل لا يسمح باستخدام نمط البوينت كمنط تعريف ، وهو ما يسمى بال composition ؟؟

طبعا من دون استخدام الوراثة

وشكرا سلفا للجميع

#2

السلام عليكم ,,,

بالنسبة للس التربيعي عليك بالدالة pow ولها برمتران الاول الاساس والثاني الاس ,, من النوع double ,

بالنسبة للمثال فقد قمت بتعديله ,,

المشكلة كانت في أنك أنشأت مشيد فعلا Constructor له بارمترات ,, وبهذا لن ينشيء لك المصرف مشيد افتراضي لاوسيطات له ,,

لذا اذا حاولت أن تنشيء كائن من النوع point بدون بارمترات للمشيد الذي أنشئته سيفارض المصرف أنه لامشيد افتراضي لايأخذ بارمترات لذا سيولد الخطأ ,,

باختصار لايمكنك ات تكتب :

point q

الا اذا كان لديك مشيد ليس له بارمترات ,, والمصرف ينشئه لك بشكل افتراضي ولايكون مرئيا ,, الا اذا انشأت انت واحد بنفسك سوتء له بارمترات أو لا ,, لن ينشيء لك المصرف عندها المشيد الافتراضي عليك انشائه بنفسك ,,

وبالتوفيق ,,,

POINTS.CPP

banner_60_468.gif

NOTHING IS IMPOSSIBLE

#3

شكراااااااااااااا جزيلاااااااااااااا

هذا الموضوع مغلق.

مواضيع مشابهة