درود مهمان گرامی! ثبت نام


امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
سوال در مورد C++
#41
number = zptr غلط هست. چون zptr یک pointer(اشاره گر) هست و به آدرس نامعلومی از حافظه اشاره می کنه و آدرس ها چون بر مبنای hexa decimal(مبنای شانزده) هستند نمیشه اونا رو در متغیر number که از نوع دیگه ای(int) ذخیره کرد.

شما باید محتوای جایی که اشاره گر بهش اشاره می کنه رو بریزید توی متغیر number به این صورت :
کد php:
number=*zptr 

++zptr درسته هم باعث میشه اشاره گر به خانه ی بعدی حافظه اشاره کنه(خود متغیر اشاره گر 2 بایت اشغال می کنه در CPP. اگه نوع int یا float باشه یعنی هر سلول به اندازه ی 2 بایت int یا 6 بایت float اشغال می کنه)

اگه بخواید با اشاره گر ها خانه های متوالی آرایه رو نشون بدید و چاپ کنید می تونید یه حلقه whie not null یا for بنویسید که هر بار به مقدار اشاره گر یکی اضافه کنه و سپس محتوای سلول مد نظر رو بخونه(برای خوندن محتوای جایی که اشاره گر بهش اشاره می کنه کافیه قبل از متغیر اشاره گر یک علامت ستاره بذاریم smiley )

دستور زیر هم اشتباهه :
کد:
for(i = 0 ; i <= 5 ;i++)
   cout << zptr[i];
چون طبق تعریف داریم :
کد php:
int *zptr
طبق کد فوق، zptr یک اشاره گر هست( که به سلول های نوع int اشاره می کنه)
پس نمیشه zptr[i] بنویسیم . باید اینطوری کد رو اصلاح کنی:
کد php:
for(<= ;i++)
{
   
cout << *(zptr);
zptr++;//zptr=zptr+1;


در مورد اشاره گرها می خوای بیشتر بدونی کتاب کنکور C مقسمی یا cpp پارسه رو بخون. PDF رایگان توی اینترنت ریخته.مشکلی بود بپرسteeth
کد زیر هم مشکل داره(اشکال منطقی:یعنی ظاهرا مشکل ممکنه نداشته باشه اما ممکنه در لحظه ی کامپایل خطا بده):
کد:
int *num;
cout << *num;
دلیل :
num یک پواینتر(اشاره گر) هست و به فضای نوع int باید اشاره کنه.اما ما مشخص نکردیم به کجا اشاره کنه پس محتوای قسمتی از حافظه که آدرسش رو نمی دونیم داریم با cout به خروجی(console out=cout) می بریم و ممکنه خطاهایی دریافت کنیم یا یه محتوای غیر قابل فهم یا چند کاراکتر بیخود یا هنگ کنه برنامه.
پس باید ابتدا اشاره گ رو اشاره بدی به یک نوع(حتما int چون نوع اشاره گر ما int هست). مثال اینطوری :
کد زیر محتوای متغیر num رو با استفاده از اشاره گر p چاپ می کنه :
کد php:
int num=25;//یه عدد دلخواه
int *p;
p=&num//  آدرس متغیر نامبر رو میریزه توی اشاره گر پی
cout<<*p;//محتوای جایی که پی بهش اشاره می کنه رو چاپ می کنه 

کدهای زیر هم غلط هستند:
کد:
short * numptr,result;
void * genericptr = numptr;
result = * genericptr  + 7;
زیرا متغیرهای result و numptr از نوع short int (نصف فضای int) هستند و باید مقداردهی genericptr هم از همون نوع short باشه تا بینشون بتونیم تبادل دیتا کنیم.
ضمنا اشاره گر از نوع void نداریم.یعنی نه اینکه نداریم داریم ولی محتوای جایی که اشاره گر از نوع void داره بهش اشاره می کنه رو نمی شه برگشت داد مگر اینکه تبدیل نوع یا Type cast (تبدیل نوع موقت) انجام بدیم و تبدیلش کنیم به short اینطوری:
کد:
short * numptr,result;
void * genericptr = numptr;
result =(short *) genericptr  + 7;//محتوای جایی که اشاره می کند را تبدیل به شورت کرده و با هفت جمع و در ریزالت می ریزد

منبع در مورد اشاه گر نوع void:
http://www.learncpp.com/cpp-tutorial/613-void-pointers/
https://telegram.me/gameoverblog
بیشتر از آنچه برای موفق بودن تلاش می کنی برای با ارزش بودن تلاش کن.آلبرت انیشتین.



پاسخ
 سپاس شده توسط Hamed-razor
#42
مرسی ممنون

یک سوال دیگه :

کلاسی به نام date ایجاد کنید که قابلیتهای زیر را داشته باشد
تاریخ را با فرمتهای زیر به خروجی ببرد.
ddd yyyy
mm/dd/yy
month 14,1999
ب . سازنده هایی داشته باشد که بتواند تاریخ را به هر یک از سه شکل فوق مقدار اولیه دهد.
پ. سارنده ای بنوسید که تاریخ سیستم را با استفاده از تابع کتاب خانه date مقدار اولیه دهد.

پاسخ
 سپاس شده توسط sajjad3011
#43
http://www.cplusplus.com/forum/beginner/126111/
http://www.ece.uc.edu/~franco/C321/html/date.html
روش کار کن
https://telegram.me/gameoverblog
بیشتر از آنچه برای موفق بودن تلاش می کنی برای با ارزش بودن تلاش کن.آلبرت انیشتین.



پاسخ
 سپاس شده توسط mzr
#44
ممنون
یک سوال دیگه

resim
پاسخ
 سپاس شده توسط sajjad3011
#45
dangling pointer = اشاره گر معلق یعنی به ناکجا آباد اشاره دادیمش،به یه آدرس نامعلوم که نمی دونیم کجاست.(باید null کنیم تا خطای احتمالی نده یا خرابی های احتمالی سیستمی رخ نده)

Garbage Collection یعنی جمع آوری یا پاکسازی زباله ها .این نگرانی توی سی و سی پلاس پلاس هست اما توی سیشارپ و جاوا و ... نیازی به نگرانی نیست چون سیشارپ و جاوا امنیتش بالاتر هست و خود کامپایلر می یاد آشغال ها رو جارو می کنهteeth
حالا اصلا این زباله چیه و از کجا به وجود میاد c;,g : وقتی اشاره گر یا پوئینتری رو به آدرس یک شی یا متغیر یا آدرس خونه ای از حافظه اشاره می دیم مشکلی نیست و محتوای اون خونه رو می تونیم دستکاری کنیم یا استفادشو ببریم.اما مشکل وقتی پیدا می شه که این اشاره گر رو اشاره می دیم به یه جای دیگه . این موقع اون شی یا ابجکت بیخود فضای حافظه رو اشغال کرده و هیچ اشاره گری داره بهش اشاره نمی کنه و باهاش کاری نداریم.در حقیقت باید الگوریتمی بسازیم که بیاد این خونه ها رو پاک سازی کنه یا آدرس اون فضا رو اختصاص بدیم به جدول آدرس خانه های خالی حافظه.(به عبارت دیگه جدول memory available یا حافظه ی در دسترس و خالی. این مباحث جزو دروس سیستم عامل پیشرفته و مخصوصا برنامه نویسی مدیریت حافظه هست که بسیار مبحث قشنگ و پیچیده ای هستteeth)


اما پاسخ به سوالت:
توی سوالت دو تا اشاره گر تعریف شده. اولی p1 داره به یه فضای نامعلومی از حافظه اشاره می کنه که با new (به جای memalloc یا getmem خومون) به چنگش آوردیم.چون به جای نامعلوم داره اشاره می کنه این اشاره گر معلق هست.
p2 هم به هون آدرس که p1 اشاره می کنه اشاره دادیم.
p1 رو حذف می کنیم.
p2 معلق و سرگردون می مونه. خوب ابتدا حافظه رو باید آزاد کنیم.یعنی محتوای جایی که p2 بهش اشاره داره می کنه رو باید null کنیم :
کد:
*p2=null;
بعدش اشاره گر p2 رو null می کنیم:
کد:
p2=null;
احتمال می دم داری جزوه ی پارسه رو برای کنکور ارشد می خونی درسته ؟
نیازی به نوشتن این الگوریتم ها نداری... فقط مفاهیم رو درک کن و تست های متنوع رو ببین راه حلشو تا درک کنی چی به چیه.
---

این مثال رو ببین :
کد:
int *p, *q;
p = new int(99);
q = p; // now, q points to same memory as p
p = new int(100);
توی این مثال p و q دو تا پوئینتر هستن.
ابتدا p رو اشاره می دیم به ابتدای آرایه ای با 99 خونه از نوع int.
سپس q اشاره می کنه به همونجا(چون آدرس p رو ریختیم توش)
تو خط بعدی p میاد به ابتدای یه آرایه ی دیگه با 100 خونه int اشاره می کنه اما حافظه ی قبلیش رو نمی تونیم حذف کنیم چون q سرگردون می مونه.اگه اینو فهمیدی می تونی خیلی راحت کد بنویسی چک کنی q به جایی اشاره می کنه یا نه(اگه null نبود یعنی به جایی اشاره می کنه وگرنه نمی کنهteeth )
همینقدر توضیح دادم یاد بگیری عالیه
مطالعه بیشتر می خوای این PDF رو بخون و درک کن،کد نویسی رو وا بده (در شرایط فعلی فاقد ارزش هستwink ) :
http://www.cmlab.csie.ntu.edu.tw/~chenhs...++_ch2.pdf
https://telegram.me/gameoverblog
بیشتر از آنچه برای موفق بودن تلاش می کنی برای با ارزش بودن تلاش کن.آلبرت انیشتین.



پاسخ
 سپاس شده توسط Hamed-razor
#46
p1 و p2 رو نمی تونی چاپ کنی چون اشاره گر هستن و به آدرس حافظه اشاره می کنن. باید قبلشون ستاره بذاری.
ضمنا هر کدوم رو null کردی هم اگه قبلشم ستاره بذاری بازم هیچی رو چاپ نمی کنه. باید آدرس یک متغیر رو بریزی توش مثل
کد php:
int adadeDelkhah=455;
int *p=null;
p= new int();
*
p=adadeDelkhah;
cout<<*p;//print 455 
همچنین این کد رو می تونی استفاده کنی:
کد php:
int adadeDelkhah=455;
int *p=null;
p= &adadeDelkhah;//آدرس خانه حافظه که عدد ما توش هست رو می ریزه توی پی
*p=1000;//عدد دلخواه به هزار تغییر کرد چون داریم محتوای جایی که پی بهش اشاره می کنه رو تغییر می دیم یعنی محتوای عدد دلخواه
cout<<adadeDelkhah;//یا cout<<*p; //print 1000 
https://telegram.me/gameoverblog
بیشتر از آنچه برای موفق بودن تلاش می کنی برای با ارزش بودن تلاش کن.آلبرت انیشتین.



پاسخ
 سپاس شده توسط Hamed-razor
#47
resim

ممنون یک سوال دیگه
کلاس پراکسی ؟
پاسخ
 سپاس شده توسط sajjad3011
#48
آقا یک سوال این دقیقا چی می خواد باید چی کارکنم (الگوریتم) ؟

من تمام تمرینات operator رو حل کردم ولی این یکی متوجه نمیشم اون طور که من منظور رو متوجه شدم نمیشه !

resim
پاسخ
 سپاس شده توسط sajjad3011
#49
resim

دوستان یکسری توضیحات میخواستم در مورد abstract میخواستم ممنون میشم راهنماییم کنید

resim

اگر کسی جواب این سوال رو میدونه بگه ممنون میشم
پاسخ
 سپاس شده توسط sajjad3011
#50
[] برای تعریف ارایه هست. تعریف ارایه هم سرچ کن میاد . ساده هست. عنصر اول در سی اندیسش 0 هست و آخری یکی از تعداد عناصر کمتر.

بزرگترین عنصر آرایه رو با الگوریتم های مختلف می شه پیدا کرد که پیچیدگی های زمانی خودشون رو دارن . ساده ترینشون اینه عنصر اول ارایه رو بریزی توی یه مغیر به عنوان کلید بعدش عناصر ارایه رو طی کنی و هر عنصری بزرگتر از کلید بود بریزیش توی کلید. و اخرم کلید رو چاپ کنی.

برای نوشتن کلاس باید از لحاظ برنامه نویسی نحوه ی تعریف کلاس رو بلد باشی که اموزش زیاده توی نت.

abstract یعنی چکیده،خلاصه،انتزاعی.معمولا در جاوا وجود داره یه جور نمونه برداری از کلاس دیگه هست که فقط الگوهاشو میاریم کدهای داخلشو به طرف نمی دیم فقط ساختار رو می گیم.

abstract در سی شارپ در کلاس ها به کاربردی اساسی دارد. شما اگر نیاز داشته باشید تا کلاسی را برای ارث بری در اختیار دیگران قرار دهید به طوری که فقط قالب را در اختیار آنها قرار دهید باید از abstract استفاده کنید. کلاسی که Abstract است هیچ گونه متغیری ندارد و تنها و تنها توابع و پراپرتی ها و.... را درون آن تعریف میکنیم. توجه شود که کد آن کلاس و یا متد نوشته نمی شود. این کلاس در اختیار دیگران قرار داده می شود که می توانند از آن ارث بری کنند و توابع را Override کنند.
بعنوان مثال کد زیر:
کد:
کد:
abstract class Building
{
public abstract decimal CalculateHeatingCost(); // abstract method
}


http://www.aiapir.com/forum/index.php?topic=2508.0
http://forum.p30world.com/showthread.php?t=672502

در مورد شبیه سازی پرواز فقط مفهوم چند ریختی یا polymorphism پلی مورفیزم رو از اینجا بخون و فکر کن روش(من اینا رو کامل درک کردم اول کله ی هر تابع رو به صورت خلاصه یا abstract میاره بعدش تعریف هاشون رو می یاره)(اما اینکه چرا استفاده از چند ریختی در یک شبیه ساز پرواز می تونه مفید باشه بید ابتدا بدونیم طرف با چه کدی داره این شبیه سازی رو انجام می ده و برنامش رو نشونمون بده تا درک کنیم و بعدش تعریف درستی ازش ارائه بدیم ویلا همینطوری روی هوا نمی شه توضیحش داد هرکس شبیه سازی خودش رو می تونه برنامه نویسی کنه)
Polymorphism به معنی چند ریختی یا چند شکلی است و در زبانهای برنامه نویسی هم با همین مفهوم تعریف شده است.
Polymorphism در بسیاری از زبانها مانند خانواده C و همچنین زبانهای متن بازی مانند java و php پیاده سازی شده.
به این مثال توجه کنید:
کلاسی به نام "door" تعریف میکنیم که دارای 2 متد به نامهای "open" و "close" میباشد.
این دَر ممکن است دَر هواپیما باشد یا دَر بطری نوشابه،گرچه هیچ ارتباطی با یکدیگر ندارن اما هردو رفتاری به نامهای باز شدن و بسته شدن را انجام میدهند.
حال ما کلاسی تعریف میکنیم و آنرا از کلاس door ارثبری میکنیم.
کلاس جدید ما باید 2 متد open و close را داشته باشد،اما پیاده سازی کاری که متدها انجام میدهند میتواند در کلاسهای مختلف متفاوت باشد.
مثال بهتر این است که ما یک اداره را در نظر بگیریم که در فرایند اداری مربوط به کارکنان،رفتارهایی را تعریف کرده است.
یک کارمند دارای ساعات ورود و خروج است،وظایفی دارد و حقوق دریافت میکند.
حال ما کلاس مدیر را از کلاس کارمند ارثبری میکنیم و چون وظایف و حقوق مدیر با کارمندان دیگر متفاوت است،
متد وظیفه را با رفتار امضای پرونده ها و متد دریافت حقوق را با مبلغ 10000000 ریال پیاده سازی میکنیم.
کلاسی برای منشی تعریف و از کلاس کارمند ارثبری میکنیم.
متد وظایف را بر اساس وظایف منشی و متد دریافت حقوق را با مبلغ 3000000 ریال پیاده سازی میکنیم.
و به همین صورت کارمندان دیگر را با توجه به رتبه و مقام پیاده سازی میکنیم.
به این صورت ما کلاسی را با متدهای مورد نیاز تعریف میکنیم و در موارد لازم از آن ارثبری کرده و متدهای
مورد نظر را پیاده سازی میکنیم.
در نتیجه این مثال میتوان گفت یک حسابدار تمام رفتارهای یک کارمند را دارد و فقط میزان و نوع این رفتارها متفاوت است.
یک مثال به زبان c++:
کد php:
class Employee {
public:
  
Employee(string theNamefloat thePayRate);

  
string getName() const;
  
float getPayRate() const;

  
float pay(float hoursWorked) const;

protected:
  
string name;
  
float payRate;
}; 
در اینجا یک نمونه را تعریف میکنیم:

کد php:
Employee::Employee(string theNamefloat thePayRate)
{
  
name theName;
  
payRate thePayRate;
}

string Employee::getName() const
{
  return 
name;
}

float Employee::getPayRate() const
{
  return 
payRate;
}

float Employee::pay(float hoursWorked) const
{
  return 
hoursWorked payRate;


توجه داشته باشید که payRate به عنوان دستمزد ساعتی مورد استفاده قرار می گیرد.
حال ما میخواهیم یک کلاس برای مدیریت تعریف کنیم.
توجه داشته باشید یک مدیر که از کلاس کارمند ارثبری میکند تمام ویژگیهای یک کارمند را دارد و درصورت لزوم
میتوانیم متدهای جدیدی تعریف یا متدهای موجود را بازنویسی کنیم.
کد php:
#include "employee.h"

class Manager : public Employee {
public:
  
Manager(string theName,
          
float thePayRate,
          
bool isSalaried);

  
bool getSalaried() const;

  
float pay(float hoursWorked) const;

protected:
  
bool salaried;
}; 
در اینجا ما کلاس مدیر را با متدهای بازنویسی شده خواهیم نوشت:

کد php:
Manager::Manager(string theName,
                 
float thePayRate,
                 
bool isSalaried)
  : 
Employee(theNamethePayRate)
{
  
salaried isSalaried;
}

bool Manager::getSalaried() const
{
  return 
salaried;
}

float Manager::pay(float hoursWorked) const
{
  if (
salaried)
    return 
payRate;
  
/* else */
  
return Employee::pay(hoursWorked);

در اینجا چک میکنیم که اگر کارمند مدیر است پس حقوق ثابت مدیران را دریافت میکند و اگر کارمند معمولی است
طبق ساعت کار حقوق دریافت خواهد کرد.
منبع :
http://www.hamcodi.ir/qa/questions/1081/...8%B1%D8%AF

نکات اضافه از خودم : جاهایی که علامت دو نقطه میاره ابتدا اسم کلاس رو آورده بعدش تابعی که عضو اون کلاس هست مثل Employee::pay
--
بعضی وقتا می شه به طریق دیگه ای عمل کرد مثلا تابعی از یک کلاس رو می خوایم بسازیم ابتدا اسم تابع و سپس دو نقطه(smiley و سپس اسم کلاس مثل class Triangle: public Shape کلاس تری انگل تمام خوصصیات و ساختار و شکل و شمایل کلاس Shabe رو به خودش می گیره اما توی تعریف می تونیم ریخت ورودی هاشو عوض کنیم یا پردازشی که توی توابع ایجاد میشه مثال :
http://www.tutorialspoint.com/cplusplus/...rphism.htm

البته پولیمورفیزم فقط اینا نیست بازم تعاریف دیگه ای داره مثلا یه کلاس تعریف می کنیم توش یه تابع داره مثل polygon که می تونیم یه بار با یک ورودی فراخوانیش کنیم یک بار با دو ورودی و یا چند ورودی . همه اینا برنامه نویسیش دست خودمون هست بازم کتابا رو ببین توی یک کتاب همشون رو نگفته کسی و باید از تب مختلف برنامه نویسی شی گرا پیداش کنی شاید توی کتاب دیتیل دیتیل باشه.


--
در مورد اون سوال که گفته سطح اول shape هست منظورش اینه که اسم کلاس ما shape هست و دو تا تابع یا نمونه از کلاس shape می سازیم به نام های دوبعدی(twodime) و سه بعدی(threedime) و می تونیم ورودی های متفاوت بدیم با استفاده از همون پولی مورفیزم.

من دیگه وقت ندارم خودت باید کتاب های مرجع سی پلاس پلاس رو دقیق بخونی. همه یادگیری هاتو جمع کن توی دفتری بنویس که مثلا تعریف کلاس از چه راه هایی میشه و چه مدل هایی داره و واس خودت یه مرجع در بیار تخصصی و ویژه ی کاری که می خوای. موفق باشیteeth
اینم برنامه ای که برای محاسبات عدد گویا(rational) هست :
کد php:
#include<stdio.h>     
 #include<iostream.h>
 #include<conio.h>
 
class rational 
 
{
     
int numer;
     
int denom;
     public:
     
void getdata()
     {
         
cout<<"\n enter the numerator part of the rational no.";
         
cin>>numer;
         
cout<<"\n enter the denominator part of the rational no.";
         
cin>>denom;
     }
     
void operator+(rational);
     
void operator-(rational);
     
void operator *(rational);
     
void operator /(rational);
 };
 
void rational ::operator+(rational c1)
 {
     
rational temp;
     
temp.numer=(numer*c1.denom)+(c1.numer*denom);
     
temp.denom=denom*c1.denom;
     
cout<<"\nrational no. after addition";
     
cout<<"\n numerator="<<temp.numer<<"\n denominator ="<<temp.denom;
 }
 
void raional ::operator -(rational c1)
 {
     
rational temp;
     
temp.numer=(numer*c1.denom)-(c1.numer*denom);
     
temp.denom=denom*c1.denom;
     
cout<<"\n rational no. after subtraction";
     
cout<<"\n numerator="<<temp.numer<,"\n denominator ="<<temp.denom;
 }
 
void rational ::operator (rational c1)
 {
     
rational temp;
     
temp.numer=numer*c1.numer;
     
temp.denom=denom*c1.denom;
     
cout<<"\n rational no. after multiplication";
     
cout <<"\n numerator="<temp.numer<<"\n denominator ="<< temp.denom;
 }
 
void rational :: operator /(rational c1)
 {
     
rational temp;
     
temp.numernumer*c1.denom;
     
temp.denom=c1.numer*denom;
     
cout<<"\n rational no. after dividation";
     
cout <<"\n numerator="<<temp.numer<<"\n denominator ="<<temp.denom;
 }
 
void main()
 { 
     
clrscr();
     
rational c1c2;
     
int n;
     do 
     {
         
cout<<"\n 1.Input data for rational no. ";
         
cout<<"\n 2. Addition of rational no. "
         
cout<<"\n 3. Subtraction of rational no. ";
         
cout<<"\n 4. Multiplication of rational no.";
         
cout<<\n  5. Division of rational no";
         cout<<"
\n 6. Quit";
         cout<<"
\n Enter your choice";
         cin>>n;
         switch(n)
         {
             case 1:
             cout<<endl<<"
\n enter the data for first rational no.";
             c1.getdata();
             cout<<endl<<"
\n enter the data for second rational no";
             c2.getdata ();
             clrscr();
             break;
             case 2;
             c1+c2;
             getch();
             clrscr();
             break;
             case 3;
             c1-c2;
             getch();
             clrscr();
             case 4: 
             c1*c2;
             getch();
             clrscr();
             break;
             case 5:
             c1/c2;
             getch();
             clrscr();
             break;
             case 6:
             exit(1);
             break;
         }
     } while (n!=6);
     getch();
 } 
منبع :
http://electrofriends.com/source-codes/s...rithmetic/
برای اینکه درک کنی می تونی الگوریتم تشخیص عدد گویا رو از استادت بپرسی یا روی سورسی که گفتم فکر کنی

با کلاس هم خواستی اینا :
http://www.cplusplus.com/forum/beginner/8446/
اعداد گویا فقط کسرهایی هستند که از تقسیم عدد صحیح بر عدد صحیح به جز صفر پدید آمده باشد. به عنوان نمونه، نسبت resim کسر هست، ولی، گویا نیست، بلکه اصم یا عدد گنگ است.
https://fa.wikipedia.org/wiki/%D8%B9%D8%...B%8C%D8%A7
بقیه دیگه خیلی تخصصی میشه و وقت نیست و بلد نیستم:P
پاسخ
 سپاس شده توسط Hamed-razor


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
Question سوال در مورد OpenGL Hamed-razor 2 932 4/10/1394، 11:08 عصر
آخرین ارسال: sajjad3011
Information سوال در مورد شروع یادگیری C++ mhs1378 3 1,338 18/7/1392، 12:04 صبح
آخرین ارسال: imans77
  چندتا سوال در مورد C++ 7876 1 1,260 9/6/1392، 02:07 عصر
آخرین ارسال: bazebaz
Question کمک در مورد QT N___F___T 23 4,904 5/2/1392، 10:56 صبح
آخرین ارسال: devil_man
  سوال در مورد ویژوال سی++ Amirns 1 1,387 24/7/1391، 09:34 عصر
آخرین ارسال: mohammadali1375



کاربرانِ درحال بازدید از این موضوع: 1 مهمان