البرمجة

تخزين الأعداد من ملف إلى مصفوفة في C++

عندما يتعلق الأمر بقراءة جدول من الأعداد من ملف وتخزينها في مصفوفة ثنائية الأبعاد في لغة البرمجة C++، هناك عدة أمور يجب أن تنتبه إليها. في الوقت الحالي، الكود الذي قدمته لديه بعض المشاكل التي يجب حلها لكي يعمل بشكل صحيح. دعني أوضح لك بالتفصيل:

  1. حجم المصفوفة:
    في الكود الحالي، لديك int array[63][63]، وهذا يخلق مصفوفة ثنائية الأبعاد بحجم 63×63، بينما تقول أن الجدول في الملف يحتوي على 64 صف و 64 عمود. يجب تعديل حجم المصفوفة إلى int array[64][64].

  2. الفهرس في المصفوفة:
    في C++، المصفوفات تبدأ الفهرسة من الصفر. لذا، العناصر في المصفوفة array[64][64] ستكون من array[0][0] إلى array[63][63]، وليس array[63][63].

  3. قراءة الأعداد من الملف:
    في الحلقة while، تقوم بقراءة العدد وتخزينه في array[63][63]، وهذا يضع العدد في الزاوية السفلية اليمنى من المصفوفة، ولا يقرأ أو يخزن باقي الأعداد بشكل صحيح. يجب تعديل هذا الجزء من الكود بحيث يقوم بقراءة الأعداد وتخزينها في مواضع صحيحة في المصفوفة.

الآن، دعني أعد كتابة الكود بطريقة تصحيحية بناءً على الملاحظات السابقة:

cpp
#include #include using namespace std; int main() { ifstream infile; infile.open("table.txt"); if (infile.fail()) { cout << "could not open file" << endl; exit(6); } int array[64][64]; // تصحيح الحجم ليكون 64x64 بدلاً من 63x63 for(int i = 0; i < 64; ++i) { for(int j = 0; j < 64; ++j) { infile >> array[i][j]; // قراءة الأعداد وتخزينها في المواضع الصحيحة في المصفوفة } } // لا يُنصح بطباعة كل القيم في المصفوفة لأنها كبيرة جدًا // يمكنك طباعة بعض القيم للتحقق من صحة القراءة // على سبيل المثال: cout << "Value at position (0, 0): " << array[0][0] << endl; cout << "Value at position (63, 63): " << array[63][63] << endl; return 0; }

هذا الكود يقوم بفتح ملف يسمى “table.txt”، ويقوم بقراءة الأعداد منه وتخزينها في المصفوفة array بشكل صحيح. قمت بتصحيح الحجم ليكون 64×64 وأضفت حلقتين متداخلتين لتأكيد أن كل الأعداد في الملف يتم قراءتها وتخزينها في المصفوفة بالمواضع الصحيحة. وأخيرًا، تمت إضافة بعض الطباعات للتحقق من صحة القراءة.

المزيد من المعلومات

بالطبع، دعنا نواصل تطوير المقال حول كيفية تخزين مجموعة من الأعداد من ملف إلى مصفوفة ثنائية الأبعاد في لغة البرمجة C++.


استكمال المقال: كيفية تخزين مجموعة من الأعداد من ملف إلى مصفوفة ثنائية الأبعاد في C++

عند العمل مع البيانات الكبيرة، قد تحتاج في بعض الأحيان إلى تخزين بيانات متعددة الأبعاد في هياكل البيانات. في لغة البرمجة C++، يمكنك استخدام مصفوفات ثنائية الأبعاد لهذا الغرض. ومن الشائع جداً أن تحتاج إلى قراءة مجموعة من الأعداد من ملف وتخزينها في مصفوفة ثنائية الأبعاد. دعونا نتعرف على كيفية القيام بذلك.

الخطوة 1: فتح الملف

الخطوة الأولى في عملية قراءة البيانات من ملف هي فتح الملف للقراءة. يمكنك استخدام كائن من نوع ifstream لهذا الغرض. تأكد من التحقق من نجاح عملية فتح الملف قبل المتابعة.

cpp
ifstream infile; infile.open("table.txt"); if (infile.fail()) { cout << "could not open file" << endl; exit(6); }

الخطوة 2: تخزين البيانات في المصفوفة

بعد فتح الملف بنجاح، يمكنك بدء عملية قراءة البيانات وتخزينها في المصفوفة. في المثال السابق، قمنا بذلك باستخدام حلقتين متداخلتين for لقراءة كل عنصر في المصفوفة وتخزينه في الموضع المناسب.

cpp
int array[64][64]; // تصحيح الحجم ليكون 64x64 بدلاً من 63x63 for(int i = 0; i < 64; ++i) { for(int j = 0; j < 64; ++j) { infile >> array[i][j]; // قراءة الأعداد وتخزينها في المواضع الصحيحة في المصفوفة } }

الخطوة 3: إغلاق الملف والتحقق

بمجرد الانتهاء من قراءة البيانات وتخزينها في المصفوفة، يجب أن تقوم بإغلاق الملف. كما يُوصى بالتحقق من نجاح عملية الإغلاق.

cpp
infile.close(); if (infile.fail()) { cout << "failed to close file" << endl; exit(6); }

الخطوة 4: التحقق والاختبار

بمجرد الانتهاء، يمكنك إجراء اختبارات للتحقق من صحة العملية. يمكنك طباعة بعض القيم من المصفوفة للتحقق من صحة القراءة والتخزين.

cpp
cout << "Value at position (0, 0): " << array[0][0] << endl; cout << "Value at position (63, 63): " << array[63][63] << endl;

الختام

الآن، يمكنك استخدام المصفوفة array في برنامجك لمعالجة البيانات بالطريقة التي تحتاجها. يمكنك القيام بالعديد من العمليات مثل البحث، الفرز، أو أي عملية أخرى تتطلب بيانات متعددة الأبعاد.

هذه الخطوات الأساسية توضح كيفية تخزين مجموعة من الأعداد من ملف إلى مصفوفة ثنائية الأبعاد في لغة البرمجة C++. قم بتطبيقها في برنامجك وتكييفها وفقاً لاحتياجاتك الخاصة.

مقالات ذات صلة

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

يرجى تعطيل مانع الإعلانات حيث أن موقعنا غير مزعج ولا بأس من عرض الأعلانات لك فهي تعتبر كمصدر دخل لنا و دعم مقدم منك لنا لنستمر في تقديم المحتوى المناسب و المفيد لك فلا تبخل بدعمنا عزيزي الزائر