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

المصفوفات

بدأه awaTaiba في 2 مايو 2012 · 11 رد · 643 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم

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

أنا اريد عمل مصفوفه ذات بعدين

بحيث نطلب من المستخدم ادخال عدد الصفوف وعدد الاعمده وكذالك عناصر المصفوفه

ثم وضعها في حلقه بحيث نعيد سؤال المستخدم لكتابه اعمده وصفوف وعناصر مصفوفه اخرى

وانهاء الحلقه بإدخال المستخدم ( 000 )

فكيف ستكون فكره الاكواد؟

تم تعديل هذه المشاركة بواسطة awaTaiba في 2 مايو 2012 في 20:11

#2

ضع محاولتك و إلا سيعتبر الموضوع طل حل و هذا النوع من الأسئله مخالف لقوانين القسم (التى لا يوجد مانع من قرائتها).

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

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

#3
Μωάμεθ αλάά كتب:

ضع محاولتك و إلا سيعتبر الموضوع طل حل و هذا النوع من الأسئله مخالف لقوانين القسم (التى لا يوجد مانع من قرائتها).

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

حسنا سأضع محاولتي للحل بعد قليل

ولي عوده ..

شكرا لك اخي ^^

#4

#include<new>
using namespace std;
int main()
{
int n,i;
int *p;
cin>>i;//the number of array size
p=new(nothrow)int;
for(n=0;n<i;n++)
{
cin>>p[n];//elements of array
}
system("PAUSE");2
return 0;
}
#include<iostream>

هذه محاولتي ولكنني لم ااستطع كتابه الكود لمصفوفه ذات بعدين

بحيث نطلب من المستخدم الاسئله السابقه في بدايه الموضوع ^^

#5

لا اله الا الله محمد رسول الله

#6

ارجوا مساعدتكم اخواني المبرمجين

هل من الممكن فقط اعطائي فكره عن كتابه الاكواد

فأنا مبتدئه في عالم البرمجه

شاكره لكم تعاونكم معي^^

#7

مصفوفة ثنائية

int array[2][4]= {
{1,3,5,9},
{89,33,108,5}
};
2


﴿وَمَا كَانَ اللَّهُ لِيُعَذِّبَهُمْ وَأَنْتَ فِيهِمْ ۚ وَمَا كَانَ اللَّهُ مُعَذِّبَهُمْ وَهُمْ يَسْتَغْفِرُونَ﴾

الأنفال ۳۳                                  
 

#8

السلام عليكم:

بداية أخى الكريم انصحك وانصح نفسى بزيادة المذاكرة فى موضوعات:

  1. المؤشر الى مؤشر
  2. وموضوع الحجز الديناميكى للذاكرة
  3. وموضوع حجز مصفوفة ثنائية البعد ديناميكيا

لكى نتمكن من صياغة الموضوع بشكل يتفهمة المبرمج المبتدئ نحاول سرد الموضوع بشكل متتال

الفكرة العامة هى انشاء مصفوفة مؤشرات تحمل عناوين بداية كل صف سوف نحجزة بالذاكرة .

فلنأتى الى القسم الثانى من الفكرة وهو حجز صف فى الذاكرة بالكود:

    int rows = 2, cols = 2;     
    int *pnewrow = new int[cols];

وهذا الكود يحجز صف واحد فى الذاكرة بعدد cols من اﻻعمدة ويمكنك حجز عدد أكبر باستخدام الدوارة for

اﻵن نريد ان نضع عنوان بداية هذا الصف فى مصفوفة المؤشرات التى تمثل نصف الفكرة اﻻول:

قبل ان نفعل ذلك كيف ستبدو مصفوفة المؤشرات لكى نتمكن من اﻻشار الى المؤشر والتعديل فية *pnewrow ﻻبد من استخدام مفهموم مؤشر الى مؤشر حتى نتمكن من التعديل فى المصفوفة بأستخدام فهرس الصف والعمود معا.

نتأتى اﻵن الى اﻻعلان عن مصفوفة المؤشر الى مؤشر

    int **pMatrix = new int * [rows];

أنتبة هذة مصفوفة مؤشرا أى تحمل عناوين وليست قيمة

نأتى اﻻن الى كود تحميل أول عنصر بالمصفوفة بعنوان pnewrow المحجوز بالذاكرة .

    int index = 0;
    *(pMatrix + index) = pnewrow;

وهذا كود المرحلة اﻻولى وهى دمج الاكواد السابقة فى برنامج واحد بشكل فردى حتى نستوعب الموضوع:

#include<iostream>
using namespace std;
int main()
{
    int rows = 2, cols = 2;
    int *pnewrow = new int[cols];

    int **pMatrix = new int * [rows];
    int index = 0;
    *(pMatrix + index) = pnewrow;

    *(*(pMatrix + 0) + 0) = 7;
    *(*(pMatrix + 0) + 1) = 9;

    cout << *(*(pMatrix + 0) + 0);
    cout << *(*(pMatrix + 0) + 1);   
    return 0;
}

اﻵن الكود الواحد:

#include<iostream>
using namespace std;

int main()
{
    int rows = 0, cols = 0;
    cout << "pleze enter rows: ";
    cin >> rows;
    cout << "pleze enter cols: ";
    cin >> cols;

    int *pnewrow;
    int **pMatrix = new int * [rows];

    int i, x, index = 0;
    for (i = 0; i < rows; i++)
    {
        pnewrow = new int[cols];
        *(pMatrix + i) = pnewrow;
        for (x = 0; x < cols; x++)
        {
            cout << "Enter Row: " << i + 1 << " Col: " << x + 1 << ": ";
            cin >> *(*(pMatrix + i) + x); // or cin >> *(pnewrow+x);
        }
    }

    for (i = 0; i < rows; i++)
    {
        for (x = 0; x < cols; x++)
        {
            cout << endl << "Row: " << i + 1 << " Col: "
                    << x + 1 << ": " << *(*(pMatrix + i) + x);
        }
    }

    // كود تحرير الذاكرة التى تم حجزها
    for (x = 0; x < rows; x++)
        delete [] pMatrix[x];
    delete [] pMatrix;
    return 0;
}

المخرجات:

pleze enter rows: 2
pleze enter cols: 3
Enter Row: 1 Col: 1: 1
Enter Row: 1 Col: 2: 2
Enter Row: 1 Col: 3: 3
Enter Row: 2 Col: 1: 5
Enter Row: 2 Col: 2: 6
Enter Row: 2 Col: 3: 8

Row: 1 Col: 1: 1
Row: 1 Col: 2: 2
Row: 1 Col: 3: 3
Row: 2 Col: 1: 5
Row: 2 Col: 2: 6
Row: 2 Col: 3: 8
RUN SUCCESSFUL (total time: 6s)

طبعا هذا الكود اﻻساسى للبرنامج أرجو ان تكون استفدت منه حاول دمج الدوارة do مع شرط انتهائها بــ000 واﻻمور اﻻخرى وفقنى واياك الله

2

post-15367-027053900%201340345097.gifpost-15367-087183200%201340344597.gif
post-247365-0-10080400-1379403554_thumb.

#9

الله يعطيكم العافيه ي رب

اللهم اجعلها في موازين حسناتكم

وافادكم الله بعلمه كما افدتموني !

الله يوفقكم ي رب

مشكور اخي AudaNix

واعدك بدراسه المواضيع التي ذكرتها

شكرا لك ^^

#10

معذره اخواني على كثرة اسألتي ولكنني اريد فهم الموضوع بشكل جيد جدا وانتم الخبراء واريد الاستفاده منكم

الان اريد ان اطلب من المستخدم ان يدخل عدد الصفوف وعدد الاعمده في سطر

وفي بدايه السطر التالي يبدا المستخدم بإدخال العناصر الواحد تلو الاخر على حسب عدد الصفوف والاعمده التي ادخلها .. فمثلا :

 plz enter the rows and columbs numbers  
2  2 // هنا ادخل المستخدم عدد الصفوف ومن ثم عدد الاعمده
satrt enter elements 
1  1
1  1 //وهنا ادخل المستخدم العناصر على حسب عدد الصفوف والاعمده التي ادخلها

فكيف يمكنني عمل هذه المصفوفه ؟

#11

المصفوة اتعملت بالــ كود:

        pnewrow = new int[cols];

ومخزنة فى: pMatrix

1

post-15367-027053900%201340345097.gifpost-15367-087183200%201340344597.gif
post-247365-0-10080400-1379403554_thumb.

#12

اها اها فهمت الحين ..

مششششششكور والله كنت مضيعه ^^

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