PDA

View Full Version : تبدیل تعریف آرایه از زبان پاسکال به زبان c++ به چه صورت است؟



JaVa
شنبه 17 بهمن 1394, 18:53 عصر
سلام

دوستان این نحوه ی تعریف آرایه در زبان پاسکال [۱۰....۵,۵....۵-] فکر کنم باشه. اگه بخوام همین رو به زبان C++ بنویسیم چه شکلی میشه؟
یا اینکه یکی که یک بعدی است: [۱۰۰...۵] array

با تشکر

Poores
شنبه 17 بهمن 1394, 20:52 عصر
در زبان C++‎‎ ایندکس آرایه هارو نمیشه تعریف کرد ، فقط میتونیم سایز آرایه رو مشخص کنیم.

مثلا برای مثال [-5....5,5.....10] ما تعداد خونه های آرایه رو میشماریم (15) و آرایه رو به صورت

int a[15];
تعریف میکنیم و همیشه خونه های آرایه از 0 شروع میشن و به size-1 ختم میشن.


اولین خانه آرایه :

a[0]

JaVa
شنبه 17 بهمن 1394, 21:44 عصر
مثلا برای مثال [-5....5,5.....10] ما تعداد خونه های آرایه رو میشماریم (15) و آرایه رو به صورت


این یه آرایه دو بعدی شما چطوری کردیدش یک بعدی؟
با دو بعدی بنویسید.

JaVa
شنبه 17 بهمن 1394, 21:47 عصر
شاید اینطوری بنویسیم بهتر باشه:

[5][10]

Poores
یک شنبه 18 بهمن 1394, 17:08 عصر
این یه آرایه دو بعدی شما چطوری کردیدش یک بعدی؟
با دو بعدی بنویسید.

بله اشتباه کردم همین که گفتید میشه

rahnema1
یک شنبه 18 بهمن 1394, 17:42 عصر
سلام
به صورت زیر می شه آرایه هایی مشابه پاسکال ایجاد کرد که مطابق اندیسهای تعریف شده ما کار کنه البته می تونیم عملگرهای دیگه غیر از [] هم تعریف کنیم
خط آخر هم که کامنت شده در صورتی که برنامه در حالت دیباگ کامپایل شده باشه تابع assert اجرا خطای runtime رخ میده چون به اندیسی خارج از اندیس تعریف شده دسترسی ایجاد شده

#include <cassert>

template <typename T, int low, int high>
struct pascal_array
{
T& operator[]( int pos )
{
assert(pos >= low && pos <= high);
return array_[pos - low];
}
constexpr const T& operator[]( int pos ) const
{
assert(pos >= low && pos <= high);
return array_[pos - low];
}
T array_[high - low + 1];
};
int main()
{
using My_Matrix = pascal_array<pascal_array<int, 5 , 10 >, -5 , 5> ;
My_Matrix my_matrix;
my_matrix[-3][8] = 13;
using My_double_Vector = pascal_array< double ,-15 , 1> ;
My_double_Vector dvector;
dvctor[-15] = 34.978768;
using My_Vector = pascal_array< int ,5 , 100> ;
My_Vector myvector;
myvector[83] = 14;
//myvector[3] = 7; /*Runtime Error if compiled in debug mode*/
}