PDA

View Full Version : کلاس شی و ارایه پویا



behzad_vb.net
پنج شنبه 07 دی 1391, 20:25 عصر
سلام من میخوام یک کلاس شی تعریف کنم که بتونم داخلش ارایه پویا بسازم
چطور باید انجام بدم اگر امکان هست بهم سورس بدید

lexical_error
پنج شنبه 07 دی 1391, 21:32 عصر
سلام من میخوام یک کلاس شی تعریف کنم که بتونم داخلش ارایه پویا بسازم
چطور باید انجام بدم اگر امکان هست بهم سورس بدید

سلام

یه مثال ساده براتون نوشتم


class test
{
public:
test();// Constructor
private:
int *array1;
};



test::test(int size)
{
array1 = new int[size];
}

behzad_vb.net
پنج شنبه 07 دی 1391, 21:50 عصر
این کار میکنه یا همین در حد مثال اگه که در حد مثال و عمل نمیکنه میشه یک مثال عمل شده بزنی

lexical_error
پنج شنبه 07 دی 1391, 22:33 عصر
خدمت شما

#include "stdafx.h"
#include <iostream>
#include <iomanip>

using namespace std;

class DynamicArray
{
public:
DynamicArray();
~DynamicArray();
void SetSize(int size);//Set Size Of Array
void setarr(int index,int a_value); //Fill Array
int getarr(int index);//Return Array
private:
int *itsAr1;
};

DynamicArray::DynamicArray()
{
}
DynamicArray::~DynamicArray()
{
delete [] itsAr1;
}

void DynamicArray::SetSize(int size)
{
itsAr1 = new int[size];
}

int DynamicArray::getarr(int index)
{
return itsAr1[index];
}

void DynamicArray::setarr(int index,int a_value)
{
itsAr1[index] = a_value;
}

int _tmain(int argc, _TCHAR* argv[])
{


DynamicArray ob1;
int size;

cout<<"Enter Number of Elements:"<<endl;
cin>>size;

ob1.SetSize(size);

for (int i = 0 ; i<=size;i++)
{
ob1.setarr(i,i);
cout<<ob1.getarr(i)<<"-";
}

cin.ignore();

cin.get();

return 0;
}

behzad_vb.net
پنج شنبه 07 دی 1391, 22:47 عصر
این طرز کد مال C++ چرا مثل C# نوشته شده

behzad_vb.net
پنج شنبه 07 دی 1391, 22:52 عصر
میشه خط کدها را هم یک توضیح اجمالی بدین روی کد های که خیلی خفن هست:خجالت:

lexical_error
پنج شنبه 07 دی 1391, 22:57 عصر
این طرز کد مال C++ چرا مثل C# نوشته شده

منظورتون رو متوجه نشدم!
طرز نوشتنش فکر نکنم تاثیری تو کد و کاری که انجام میده داشته باشه!!

lexical_error
پنج شنبه 07 دی 1391, 22:57 عصر
میشه خط کدها را هم یک توضیح اجمالی بدین روی کد های که خیلی خفن هست:خجالت:

خب شما بگین کدوم خط ها رو متوجه نمیشین تا توضیح بدم براتون...

behzad_vb.net
پنج شنبه 07 دی 1391, 23:16 عصر
خب میخوام ببرمش توی c++ نه c# و اینکه کلا کدهای تابع ها و یک توضیح کلی بدین ممنون میشم

lexical_error
جمعه 08 دی 1391, 00:00 صبح
این کد هم به زبان c++ هست دوست عزیز، البته با ویژوال استودیو نوشتمش
خطوط 7 تا 17 که مربوط به تعریف کلاس هست.10 و 11 سازنده و مخرب کلاس هستند
خط 12 مربوط به تابعی هست که تعداد عناصر آرایه رو از کاربر میگیره و آرایه رو با اون تنظیم میکنه
خط 13 تابعی برای پر کردن آرایه هست، به این صورت که اندیس و مقداری که باید در هر خانه از آرایه ذخیره بشه رو به عنوان پارامتر میگیره
خط 14 هم به عنوان پارامتر اندیس آرایه در یافت میکنه و مقدار اون خانه از آرایه رو برمیگردونه

خط 16 تعریف یک اشاره گر هست، که برای اشاره به آرایه تعریفش میکنیم

خطوط 19 تا 40 برای پیاده سازی توابع کلاس هست
سازنده که کاری انجام نمیده،اما مخرب حافظه ای که تخصیص داده بودیم رو آزاد میکنه )خط 24(

خط 24 پیاده سازی تابعی هست که تعداد خانه های آرایه رو به عنوان پارامتر میگیره و ست میکنه (تعریف آرایه روی حافظه آزاد)
خط 32 تابعی هست که برای برگرداندن آرایه استفاده میشه(چون آرایه تو حوزه خصوصی تعریف شده)
خط 37 هم تابعی هست که دو پارامتر میگیره ، یکی برای ایندکس آرایه و دیگری مقداری که باید ذخیره بشه
خط 46 یه متغییر از نوع کلاسی که تعریف کردیم ، تعریف میکنیم،
خط 54 هم یه حلقه FOR برای پرکردن آرایه و خواندن اون هست
خط 56 هم فراخوانی تابعی هست که آرایه رو پر میکنه،که به عنوان ایندکس i و به عنوان مقدار نیز i رو دریافت میکنه ، یعنی خانه 0 از آرایه با 0 ، خانه 1 با 1 و همینطور تا آخرین خانه آرایه این کار انجام میشه

fati63
جمعه 08 دی 1391, 10:21 صبح
ببخشید این برنامه خطا داره خودتون run کردید یا واسه من فقط خطا میده؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟!!1
خدمت شما

#include "stdafx.h"
#include <iostream>
#include <iomanip>

using namespace std;

class DynamicArray
{
public:
DynamicArray();
~DynamicArray();
void SetSize(int size);//Set Size Of Array
void setarr(int index,int a_value); //Fill Array
int getarr(int index);//Return Array
private:
int *itsAr1;
};

DynamicArray::DynamicArray()
{
}
DynamicArray::~DynamicArray()
{
delete [] itsAr1;
}

void DynamicArray::SetSize(int size)
{
itsAr1 = new int[size];
}

int DynamicArray::getarr(int index)
{
return itsAr1[index];
}

void DynamicArray::setarr(int index,int a_value)
{
itsAr1[index] = a_value;
}

int _tmain(int argc, _TCHAR* argv[])
{


DynamicArray ob1;
int size;

cout<<"Enter Number of Elements:"<<endl;
cin>>size;

ob1.SetSize(size);

for (int i = 0 ; i<=size;i++)
{
ob1.setarr(i,i);
cout<<ob1.getarr(i)<<"-";
}

cin.ignore();

cin.get();

return 0;
}

lexical_error
جمعه 08 دی 1391, 10:30 صبح
ببخشید این برنامه خطا داره خودتون run کردید یا واسه من فقط خطا میده؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟!!1
شما با چه کامپایلری کامپایل میکنید؟
این کد تو محیط ویژوال استودیو نوشته شده،اگر از Turbo C یا Borland استفاده میکنید، قسمت تعریف کلاس و پیاده سازی و تابع main رو باید انتقال بدید!

fati63
جمعه 08 دی 1391, 11:40 صبح
شما با چه کامپایلری کامپایل میکنید؟
این کد تو محیط ویژوال استودیو نوشته شده،اگر از Turbo C یا Borland استفاده میکنید، قسمت تعریف کلاس و پیاده سازی و تابع main رو باید انتقال بدید!
از borland استفاده کردم ولی این کد تعریف کلاس و.... داره متوجه نمیشم!!!!!! اگه ممکنه کد واسه borland بذاریت.

lexical_error
جمعه 08 دی 1391, 13:05 عصر
Borland

#include<iostream.h>
#include<conio.h>

//using namespace std;

class DynamicArray
{
public:
DynamicArray();
~DynamicArray();
void SetSize(int size);//Set Size Of Array
void setarr(int index,int a_value); //Fill Array
int getarr(int index);//Return Array
private:
int *itsAr1;
};


DynamicArray::DynamicArray()
{
}
DynamicArray::~DynamicArray()
{
delete [] itsAr1;
}

void DynamicArray::SetSize(int size)
{
itsAr1 = new int[size];
}

int DynamicArray::getarr(int index)
{
return itsAr1[index];
}

void DynamicArray::setarr(int index,int a_value)
{
itsAr1[index] = a_value;
}


int main()
{
clrscr();


DynamicArray ob1;
int size;

cout<<"Enter Number of Elements:"<<endl;
cin>>size;

ob1.SetSize(size);

for (int i = 0 ; i<=size;i++)
{
ob1.setarr(i,i);
cout<<ob1.getarr(i)<<"-";
}




getch();
return 0;

}

fati63
جمعه 08 دی 1391, 20:26 عصر
خوب برنامه رو run کردم بعد از ورود تعداد خانه های آرایه کار خاصی نمیکند .لطفا در مورد خروجیش هم یه تو ضیح بدهید

lexical_error
جمعه 08 دی 1391, 20:54 عصر
خوب برنامه رو run کردم بعد از ورود تعداد خانه های آرایه کار خاصی نمیکند .لطفا در مورد خروجیش هم یه تو ضیح بدهید
خروجی رو بالا توضیح دادم دوست عزیز.
کاری که میکنه پر کردن آرایه با همون ایندکس آرایه هست یعنی 0 - 0 1 - 1 2 - 2 الی آخر..!

behzad_vb.net
یک شنبه 17 دی 1391, 18:26 عصر
خیلی مفید بود ممنون