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

[ تمت الإجابة ]مشكلة في تحويل المصفوفة الأحادية الى مصفوفة ثلاثية

بدأه luma_88 في 24 نوفمبر 2012 · 4 رد · 1,411 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

ارجو مساعدتي تظهر لي مشكلة في التحويل من مصفوفة احادية الى مصفوفة ثلاثية

المصفوفة الأحادية تقرأ من الملف الذي يحوي بيانات كما في الشكل التالي

1 2 3 13 14 15 25 26 27 37 38 39

4 5 6 16 17 18 28 29 30 40 41 42

7 8 9 19 20 21 31 32 33 43 44 45

10 11 12 22 23 24 34 35 36 46 47 48

المطلوب كما مبين سابقا المصفوفات تكون A[3][2][3] =X[47]

طبقت البرنامج التالي:

#include<fstream.h>

const r = 3;
const c = 2;
const q = 3;

int main() {
    int x[47], A[r][c][q];
    int b = 0;
    int p = 0;
    int i, j;
    int k = 0;
    ifstream inf;
    inf.open("E:\\t.txt");
    for (i = 0; i <= 47; i++) {
        inf >> x;
    }
    inf.close();
    i = 0;
    k = 0;
    while (p <= q) {
        for (i = 0; i <= r; i++)
            for (j = 0; j <= c; j++) {
                A[j][p] = x[k++];
                if (j == c)
                    k = k + (q * (c + 1));
                if ((i == r)&(j == c))
                    k = ((c + 1)*(p + 1) - 1);
                cout << A[j][p] << "\t";
            }
        p++;
    }
    return 0;
}

و لكن كان الناتج كما يلي :

1 2 3 11 14 12 25 26 27

4 5 6 16 17 18 28 29 30

7 8 9 19 20 21 31 32 33

10 11 12 22 23 24 34 35 36

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

و جزاكم الله خيرا

تم تعديل هذه المشاركة بواسطة Sn@CkeR في 24 نوفمبر 2012 في 03:10 — السبب: إدراج الكود في الوسم الخاص به.

#2

السلام عليكم

مرحباً بك أخي الكريم في منتديات الفريق العربي للبرمجة :happy:

بداية, لا بد من استخدام مصطلحات دقيقة لوصف الأمور :)

اقتباس
ارجو مساعدتي تظهر لي مشكلة في التحويل من مصفوفة احادية الى مصفوفة ثلاثية

لا يُمكننا تحويل مصفوفة أحادية إلى مصفوفة ثلاثية لأن كلا المصفوفتين ينتمي لفضاء متجهي (Vector Space) مختلف و بالتالي هذا الوصف خاطئ سواء من الناحية الرياضية أو البرمجية.

اقتباس
المطلوب كما مبين سابقا المصفوفات تكون A[3][2][3] =X[47]

A[3][2][3] و X[47] عبارة عن عناصر و ليسوا مصفوفات ..

لو نظرنا إلى الكود تبعك نجد أنك استخدمت حلقة for تقوم بعمل 48 دورة في حين أن كل سطر يحتوي على 12 عنصر فقط !!

أيضا الكلمة const لا تكفي للإعلان عن الثوابت بل يجب تحديد نوع المتغير.

نرجو منك أن تُعيد صياغة السؤال من خلال استخدام مصطلحات أكثر دقة لكي نستوعب المطلوب بشكل واضح.

+

إدراج الكود في الوسم الخاص به في المرات القادمة.

بالتوفيق.

#3
Sn@CkeR كتب:

السلام عليكم

مرحباً بك أخي الكريم في منتديات الفريق العربي للبرمجة :happy:

بداية, لا بد من استخدام مصطلحات دقيقة لوصف الأمور :)

لا يُمكننا تحويل مصفوفة أحادية إلى مصفوفة ثلاثية لأن كلا المصفوفتين ينتمي لفضاء متجهي (Vector Space) مختلف و بالتالي هذا الوصف خاطئ سواء من الناحية الرياضية أو البرمجية.

A[3][2][3] و X[47] عبارة عن عناصر و ليسوا مصفوفات ..

لو نظرنا إلى الكود تبعك نجد أنك استخدمت حلقة for تقوم بعمل 48 دورة في حين أن كل سطر يحتوي على 12 عنصر فقط !!

أيضا الكلمة const لا تكفي للإعلان عن الثوابت بل يجب تحديد نوع المتغير.

نرجو منك أن تُعيد صياغة السؤال من خلال استخدام مصطلحات أكثر دقة لكي نستوعب المطلوب بشكل واضح.

+

إدراج الكود في الوسم الخاص به في المرات القادمة.

بالتوفيق.

شكرا أخي على الرد و التعديل

اخي محتويات الملف تمت قرائتها جميعها 47 عنصر وو ضعت بالمصفوفة الاحادية

و اردت ان اجزء هذه العناصر و أضعها في مصفوفة ثلاثية بحيث تكون

1 2 3 
4 5 6 
7 8 9
10 11 12

في المصفوفة

A[3][2][1]

و العناصر

13 14 15 
16 17 18 
19 20 21

في المصفوفة[3][2][1]A

و هكذا ....

بعد تطبيق ال

CODE

كانت عناصر المصفوفة A[3][2][0]

 1 2 3
4 5 6
7 8 9
10 11 12

لكن عناصر A[3][2][1]

11 14 11 
16 17 18
19 20 21
22 23 24

المشكلة تظهر بالصف الاول يجب ان يكون

13 14 15

أتمنى الأن اصبحت المسألة اكثر وضوحا

جزاك الله خير

#4
اقتباس
اردت ان اجزء هذه العناصر و أضعها في مصفوفة ثلاثية بحيث تكون

1 2 3

4 5 6

7 8 9

10 11 12

في المصفوفة A[3][2][1]

يا عزيزي .. أخبرتك من قبل أن A[3][2][1] ليست مصفوفة و إنما هي عنصر واحد فقط .. يقع عند تقاطع الصف الثالث مع العمود الثاني مع الارتفاع الأول :)

#5
Sn@CkeR كتب:

يا عزيزي .. أخبرتك من قبل أن A[3][2][1] ليست مصفوفة و إنما هي عنصر واحد فقط .. يقع عند تقاطع الصف الثالث مع العمود الثاني مع الارتفاع الأول :)

نعم يا أخي قصدي المصفوفة

A[j][p]

المصفوفة الثنائية عند

p=1

والتي تكون عناصرها

13 14 15 
16 17 18 
19 20 21

لكن بعد تطبيق يظهر خطأ بالصف الاول فقط

11 14 11

مع العلم المصفوفة عندما p=0

كانت عناصرها صحيحة

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

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

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

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

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