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

أبغى حل قبل الساعة 11:30..please Can Any One Help Me

بدأه المحققة في 12 يونيو 2008 · 2 رد · 663 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

عندي سؤال

بصراحة سألت أكثر من خبير مابين عربي وأعجمي

بس للأسف ماحد عطاني وجه

قلت يمكن ألقى فيكم من يقدر يساعدني

تكفون

بس أبغى أفهم هالكود

بلغة

visual C++.Net

أنا فهمت كل جملة على حدة

بس ماهمت وش الغرض من هالدالة

هي ترجع في الأخير ملف

لكن أبغى أفهمها

ويمكن هذي الدالة تساعد الكثيرين في فهم المؤشرات

ولو شرحها أحد ..رح نفهم كيف نتعامل مع الملفات عبر المؤشرات في اميموري

الكود :

float **ReadCoodBook(char *filename, int &FVLength, int &NumOfFV)
{
 FILE *fp;
 fp = fopen(filename, "r");
 if (fp ==NULL)
  return NULL;


 const int LENGTH_OF_UNIT = 15;

 char str[LENGTH_OF_UNIT];
 char NewLine[3]="\r\n";
 char Tab = '\t';
 memset(str, '\0', LENGTH_OF_UNIT);

 fread(str,1,LENGTH_OF_UNIT,fp);
 NumOfFV = atoi(str);
 fread(NewLine, 1,2,fp);

 fread(str,1,LENGTH_OF_UNIT,fp);
 FVLength= atoi(str);
 fread(NewLine, 1,2,fp);

 //////////
 if((FVLength <=0) || (NumOfFV  <=0))
  return NULL;

 float **data= new float*[NumOfFV];
 if(!data)
  return NULL;

 for(int i=0;i<NumOfFV; i++)
 {
  data = new float[FVLength];
  if(!data )
   return NULL;
 }
 /////////
 for(i=0; i<NumOfFV; i++)
 {
  for(int j=0; j<FVLength; j++)
  {
   fread(str,1,LENGTH_OF_UNIT,fp);
   data[j] = atof(str);
   fread(&Tab, 1,1,fp);
  }
  fread(NewLine, 1,2,fp);
 }
 return data;
}

والله يسهل أمركم

وله شكري من يحاول مساعدتي

ومساعدة غيري

تم تعديل هذه المشاركة بواسطة رغـــــــــد في 13 يونيو 2008 في 01:59 — السبب: تنبيه:ضعي الشيفرة في الصندوق المخصص

#2

السلام عليكم هذا شرح بسيط وسريع للكود لكن الملف الذي تقراء منه الدالة اعتقد ان له تنسيق خاص بالبرنامج

بعمنى مخزن بنفس طريقة القراءة

/*   هذه دالة تعيد مصفوفة مربعة و تاخذ ثلاث بارمترات الاول اسم الملف والثاني عدد الأعمدة والثالث عدد الصفوف*/
float **ReadCoodBook(char *filename, int &FVLength, int &NumOfFV)
{
FILE *fp;/*مؤشر لملف*/
fp = fopen(filename, "r");/*فتح الملف من أجل قراءته فقط*/
if (fp ==NULL)/*أذا كان الملف فارغ تعيد الدالة صفر*/
return NULL;


const int LENGTH_OF_UNIT = 15;/*ثابت لحجز عدد عناصر المصفوفة*/

char str[LENGTH_OF_UNIT];/*مصفوفة من الحروف طولها 15 عنصر*/
char NewLine[3]="\r\n";/*قيمة انتقال الى سطر جديد*/
char Tab = '\t';/*مسافه بمقدار تاب*/
memset(str, '\0', LENGTH_OF_UNIT);/*تجهيز النص بجعل العناصرة فارغه*/

fread(str,1,LENGTH_OF_UNIT,fp);/*نسخ 15 عنصر ووضعها في النص*/
NumOfFV = atoi(str);/*تحويل الـ15 عنصر من حروف الى ارقام*/
fread(NewLine, 1,2,fp);/*ترحيك موشر الملف لتجاوز القيمة*/

fread(str,1,LENGTH_OF_UNIT,fp);/*نسخ 15 عنصر ووضعها في النص*/
FVLength= atoi(str);/*تحويل الـ15 عنصر من حروف الى ارقام*/
fread(NewLine, 1,2,fp);/*ترحيك موشر الملف لتجاوز القيمة*/

//////////
if((FVLength <=0) || (NumOfFV <=0))/*التاكد من ان الصفوف والاعمدة ليست خاليه*/
return NULL;
[background=lightgreen]
هذا الكود الذي بلون واحد فقط ينشئ مصفوفة مربعه سوف يستخدمها لتخزين البيانات من الملف
float **data= new float*[NumOfFV];
if(!data)
return NULL;

for(int i=0;i<NumOfFV; i++)
{
data = new float[FVLength];
if(!data )
return NULL;
}
[/background]
/////////
[background=lightblue]
وهذا الكود الملون بلون مختلف من اجل تخزين البيانات في المصفوفة المربعة التي تم انشاءها مسبقا
for(i=0; i<NumOfFV; i++)
{
for(int j=0; j<FVLength; j++)
{
fread(str,1,LENGTH_OF_UNIT,fp);
data[j] = atof(str);
fread(&Tab, 1,1,fp);
}
fread(NewLine, 1,2,fp);
}
[/background]
return data;/*هنا نرجع قيمة المصفوفة */
}
tvquran_6.gif

#3

الف شكر وتقدير

للأستاذ الفاضل فهد الشلوي

بصراحة أنجدتني بشكل ماتتصوره

أتمنى من الله أن يسهل أمرك ..ويذلل الصعاب في طريقك

وأنا أوردت هذا المثال هنا

عشان يستفيد الجميع

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

visual C++

لأن ماشاء الله تبارك الله الشرح جدا رااااااااااااااائع

يارب يستفيد الجميع

والشكر موصول مرة ثانية للعضو فهد الشلوي

بالتوفيق للجميع

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