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

كم طريقه تعرف للتعامل مع المصفوفات

بدأه C++er في 3 أبريل 2010 · 13 رد · 1,386 مشاهدة · في لغة C و ++C
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

المنتدى نائم، لذا إليكم سؤال سهل و يحرك محتوى الجمجمه

السؤال هو إذا كان لدينا المصفوفه التاليه

int x[] = { 1, 2, 3, 4 };

اذكر 6 طرق 8 طرق يمكن من خلالها الوصول للعنصر الأول منها و طباعته؟ (او اذكر اقصى عدد تعرفه إن كان اكثر)

هيا يا مبرمجى الـ Cpp انشطوا :P

سأضع اجابتى الساعه 3 عصرا او بعد ظهور كل الحالات إن استطعتم :wub:

و الله ولى التوفيق

تم تعديل هذه المشاركة بواسطة Muhammad alaa في 3 أبريل 2010 في 12:17

3

مدونتي: C++ Tips and Tricks

#2
cout<<x[0];
cout<<*x

... تعبت :happy:

تم تعديل هذه المشاركة بواسطة JDurrah في 3 أبريل 2010 في 11:51

#3

وهذه محاولتي .. 3 طرق

#include <iostream>
using namespace std;
int main ()
{

	int x[] = { 1, 2, 3, 4 };
//1 Normal call by Index 
	cout<<x[0]<<endl;
   //2 call by Pointer
	int *x1=x;
	int *x2=&x[0];
   cout<<*x1<<endl;
//3 call by referance
   cout<<*x2<<endl;

   system("pause");
return 0;
}

تحياتي

OMANI FOR EVER

-------------------------------------------------

post-12787-12780191801974.jpg

-------------------------------------------------

#4

@omani

الطريقه الثانيه و الثالثه يعتبروا واحده لإن الوسيله النهائيه للحصول على القيمه منهم متماثله

cout<<*x1;
cout<<*x2;

تم تعديل هذه المشاركة بواسطة Muhammad alaa في 3 أبريل 2010 في 12:07

مدونتي: C++ Tips and Tricks

#5

Salam Alikum,

I just got 3 ways for now :)

x[0];   // 1
*(x+0); // 2
0[x];   // 3
#6

ما رأيك بهذه استاذي

   cout<<*&x[0];

:P

OMANI FOR EVER

-------------------------------------------------

post-12787-12780191801974.jpg

-------------------------------------------------

#7

صراحة الطريقه التى اتوقعها منها 2 عن طريق المؤشرات و 6 غيرها

نعم لقد عرقت اثنان اخرين.

@عمانى

ماشى ممكن نعتبرها طريقه، بس انا كنت متوقع حاجه غير كده خالص

@خالد الشايع

ايه يا خالد، انا متوقع انك هتعرفهم كلهم.

فكروا شويه يا جماعه صدقونى سهله؟ :cool:

للتسهيل: التعلاب بإسلوب الكتابه، مش هسهلها اكتر من كده

تم تعديل هذه المشاركة بواسطة Muhammad alaa في 3 أبريل 2010 في 12:20

مدونتي: C++ Tips and Tricks

#8

just for joking

cout << *(&(*(&0[x]))) << endl;
cout << *(&(*(&(*(&0[x]))))) << endl;
// and so on...

:lol:

http://informatic-ar.com منصة تعليمية عربية في علوم الحاسب والبرمجة

https://moalfat.com  للكتب الالكترونية والكورسات التعليمية

Everything we see now is just an engineering solution based on old science

#9

حسنا يبدو انه لا توجد لديكم طرق اضافيه (بالإضافه ان انا كمان وقت الكمبيوتر خلص و حان وقت تبييض الشقه، عقبال عندكم :wacko: )

  • بإستخدام المؤشرات
    cout << *x;
    cout << *(x + 0);


    الطريقه الأولى غير الثانيه حيث الأولى بها Dereference فقط اما الثانيه فتتطرق إلى Pointer Arithmetic و Dereference

قبل التكلم عن الطرق الأخرى لابد و ان تعرف انه بداخل لغة الـ C++ يوجد 3 مستويات من العلامات بمعنى ان لكل علامه بديل و توجد اولويات لهم، بمعنى:

الداله main بعد كتابة التصريح الخاص بها يتم كتابة القوسين {} و بينهم الكود كالتالى

int main()
{
    // code here
    return 0;
}

القوسين {} يسموا بـ Primary Token لإنهم يأخذوا مساحة حرف واحد لذا يسهل عمل analyzing لهم , و لكن يمكن كتابتها بالطريقه البديله و هى كالتالى

int main()
<%
    // code here
    return 0;
%>

القوسين <% و %> ليسوا ماكرو و انما هم علامه بديله للأقواس المنحنيه (لا اعرف اسمه بالعربى) هذا الشكل يسمى بـ Alternate Token.

الحاله الثالثه و الأخيره المترجم يسمح بها داخل الكود و لكن قبل بدء عملية الـ preprocessing يتم ابدالها لأن عدد الحروف المكونه للها هو 3 حروف، لذا يمكنك كتابة الداله main للمره الثالثه بهذا الشكل:

int main()
??<
    // code here
    return 0;
??>

هذا النوع من العلامات يسمى بـ Trigraph sequences و قبل بدء الدخول فى مرحلة الـ preprocessing يتم ابدال العلامات التى تبدأ بـ ?? بما يقابلها داخل جدول الـ Primary Token.

كل هذا المعلومات تندرج تحت Lexical conventions للغه، و ستجدها داخل المرجع الخاص بها، لذا لنعود لموضوع المصفوفات. تكلمنا عن المؤشرات و عرفنا منهم 2 لذا بقى 6 طرق اخرى للدخول على عناصر المصفوفه و هم كالتالى

  • بإستخدام معامل الـ subscript
    cout << x[0];
    cout << 0[x];


  • بإستخدام المعامل البديل <: و :>
    cout << x<:0:>;
    cout << 0<:x:>;


  • بإستخدام المعامل الثلاثى ??( , ??)
    cout << x??(0??);
    cout << 0??(x??);


ارجو ان تكون المعلومه مفيده

و الله ولى التوفيق

تم تعديل هذه المشاركة بواسطة Muhammad alaa في 3 أبريل 2010 في 14:47

2

مدونتي: C++ Tips and Tricks

#10

ما شاء الله فتبارك الله .. موضوع قيم و مفيد.

كنت أود المشاركة فيه .. لكن لم أره إلا الآن.

بالمناسبة يا أخ علاء , الرموز التي استخدمتَها

??<
<%

لا تعمل في جميع المترجمات !!

قُمت بكتابتها من قبل في المترجم Dev و لكنه أظهرها لي كأخطاء.

دمتم بود.

#11

من خيارات المترجم قم بتفعيل خيارات التوافق مع C++2006.

و الله ولى التوفيق

مدونتي: C++ Tips and Tricks

#12

يعني الا نمشي نقرأ من الLanguage Specifications عشان نحل السؤال ولا شنو :D

تسلم أخي محمد على المعلومة :) .

http://informatic-ar.com منصة تعليمية عربية في علوم الحاسب والبرمجة

https://moalfat.com  للكتب الالكترونية والكورسات التعليمية

Everything we see now is just an engineering solution based on old science

#13

حلوة يا أبوحميد ما تخطر على بال :lol:

#14

لازم نقرا الـ Manuals بتاعت اللغه :lol:

مدونتي: C++ Tips and Tricks

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…