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

saving and loading a two dimensional integer array into and from a file

مغلق
بدأه fi9fi9 في 25 مايو 2007 · 8 رد · 704 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

اخـواني طلب مني عمل لعبة sudoku كمشروع والتسليم سيكون غدا

والحمدالله كتبت كود اللعبه واللعبة تعمل بشكل رائع

لكن المشكلة اني اضفت فنكشن لكي تعمل حفظ للعبة ولود له فيما بعد

وهاذي الفنكشن تعمل على ال Input/Output files

الفكرة اني اذا طلبت save سيقوم بنسخ array الى فايل

وال load سيقوم بعمل قراة من ال file ثم يقوم بتعبأة ال array

وهذا الكود

 

 void suduko::saveLoad(int f)  //if the paremeter is 1 the method going to load game if the prameter is 2 the method will save the game
 {
 int i, ii;

 if ( f == 1){
 ifstream load;
 load.open("game.dat");
 if (load.fail()){
 cout << "unable to open file game.dat for loading" << endl;
 exit(1);
 }

 for (i=0; i < 9; i++)
  for (ii=0; i < 9; i++)
  {
			  load >> x[ii];
  } 

 load.close();
 }



 if ( f == 2){

  ofstream save;
  save.open("game.dat");
  if (save.fail()) {
  cout << "unable to open file game.dat for saving" << endl;
  exit(1);
 }

 for (i=0; i < 9; i++)
  for (ii=0; i < 9; i++) 
  {
   save << x[ii];
  }

 cout << endl;
 cout << "Game saved" << endl;
 cout << endl;

save.close();
 }

 }

لكن المشكلة عندما اقـوم بعمل save لل array يقوم بحفظ جزء واحد من array اي اول خط عامودي( كتحليل انه يقوم بعمل ال for الثانيه ولا يقوم بعمل الاولى لا اعرف لماذا)

والمشكلة الثانيه لمى اسوي load يعطي القيم الي داخل ال array قاربج (ارقام كبيرة)

علما بأن ال Array من نوع Intger وانا استخدم الفنكشن على شكل method داخل class

ارجوا المساعدة هل طريقتي في الكتابة غلط او كيف اجد الحل

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

تم تعديل هذه المشاركة بواسطة fi9fi9 في 25 مايو 2007 في 12:53

#3

جزاك الله الف خير اخوي blueteeth

ما انتهبت عليها انحلت المشكلة الحين حفظ الاري يعمل بشكل ممتاز

بس الودنك يعطيني قاربج الا الحين

بعد ما يشغل هالكود

ifstream load;

load.open("game.dat");

if (load.fail()){

cout << "unable to open file game.dat for loading" << endl;

exit(1);

}

for (i=0; i < 9; i++)

for (ii=0; i < 9; i++)

{

load >> x[ii];

}

load.close();

}

واسوي بعدها

cout ل اي خانه من الاري القاها قاربج

علما انه يفتح الملف لأن حذفت الملف game.dat وعطاني اررور unable to open file game.dat for loading

يعني اتوقع المشكلة بالقرائه وحفظ الارقام داخل الاري

ممكن تكون طريقه كتابتي غلط

ما بقى الا ساعات واسلم المشروع اذا تقدر تفيدني ولا يهنون الاخوان

#4

للرفع

#5

معقولة يا أخى ما إنتبهت إلى دى كمان؟! :)

for (i=0; i < 9; i++)
  for (ii=0; i < 9; i++)
  {
			  load >> x[ii];
  }
#6

Lol i did, Cmon I'm not that stupid =p

but i still have the same problem when I load, it fill the array with garbage not the numbers that is saved in the file :/

should I re-write the code in a diffrent way if i'm going to read intgers from the file?

blueteeth if you don't mind can u send me your e-mail on msn :) in a private msg so I can add u 2 my list online...

تم تعديل هذه المشاركة بواسطة fi9fi9 في 27 مايو 2007 في 13:42

#7

بص أنا أولا شايف إنه من الأسهل و more conventional إنك تكتب دالة لل Save ودالة منفصلة لل Load. و يا ريت تعمل debug و تشوف الأمور ماشية إزاى و بيحمل منين بالظبط.

#8

يعطـيك العافية على ردك اخوي blueteeth

الـمشكلة كانت ان لمى يقرى من الملف ياخذ الرقم كله ك Intger رقم واحد

وانحلت المشكلة حيث وضعت مسافة بين كل رقم ورقم

 for (i=0; i < 9; i++)
  for (ii=0; ii < 9; ii++) 
  {
   save << x[ii] << " ";
  }

تم تعديل هذه المشاركة بواسطة fi9fi9 في 28 مايو 2007 في 12:46

#9

الله ينور عليك يا أخى الحمد لله إنك توصلت إلى حل المشكلة.

هذا الموضوع مغلق.

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