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

ربط text file مع برنامج الc++

مغلق
بدأه maas في 22 أبريل 2006 · 7 رد · 1,089 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

يا شباب عندي file و موجود فيه أرقام

و بغيت أعمل له calling و أستخدم الأرقام و أعمل لهم save في الarray بس المشكلة مب عارف الكود اللي يخلي calling للtext file

فإن شاء الله تساعدوني

#2

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

اخى الناس هنا والله كويسين جدا انا مشترك من يومين بس

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

بس هم متشددين فى ان المفروض قواعد المشاركه انه انت تدور وتحاول الاول وتحط محاولتك وبعدين تطلب المساعده

وانا شايف ان ده صح جدا ومفروض كلنا نلتزم بده لانه لو كل واحد عنده مشكله دخل حطها واتحلت على الجاهز محدش هايتعلم

فدور الاول وابحث وحاول وان شاء الله تلاقى هنا فى المنتدى او فى اى كتاب

والموضوع اللى انت بتبحث فيه ده ابحث تحت عنوان streams and files هتلاقى ان شاء الله اللى انت عايزه

وده موجود فصل كامل فى كتاب object-oriented programming c++ للمؤلف روبرت لافور

#3

هذي أخوي المحاولة

و الerror في الcalling و كيفية أخذ الأرقام من text file و إدخالهم في الarray

#include<iostream.h>
#include <fstream>
int seq(int [],int,int);
void main()
{

	int flag;
    ofstream myfile;

flag=0;
int n;
	int arr[n]=myfile;
  int target;
  myfile.open ("File1.txt");
  myfile.close();

	cin>>target;
    flag=seq(arr,target,n);
 if(flag!=-1)
   cout<<"\n The given element is found at the position : array["<<
           flag<<"]";

       else
   cout<<"\n The given element is not found. ";
}
int seq(int arr[], int target,int n)
{
	int flag=-1;
	for(int i=0;i<n;i++)
	{
  if(arr==target)
	flag=i;
	}
	return flag;
}

تم تعديل هذه المشاركة بواسطة maas في 23 أبريل 2006 في 17:36

#4

السلام عليكم ....

أخي الكريم الفاضل

أنا أعرف كيف أعملها لكن بلغة السي وليس بالسي بلس بلس

فإذا تبغاها بالسي أنا حاضر

#5

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

اخى انا بصراحه ماذاكرت موضوع ال streams and files ده كويس او لسه بالفعل مقريتش فيه كتير

بس انت شوف كتاب object-oriented c++ فيه فصل كامل للموضوع ده

واان ان شاء الله اوعدك النهارده بالليل ان شاء الله ارد عليك لكن فى مشاكل واضحه فى البرنامج عندك

احب اوضحهالك ممكن بعد حلها تتحل المشكله

1- السطر ده

#include <fstream>

لازم يكون اى هيدر فايل تدرجه فى البرنامج لازم تحط اسمه هكذا

#include <fstream.h>

او لو مش عايز تحط اللاحقه .h ممكن تضيف السطر ده

using namespace std;
#include<fstream>

يعنى include<fstream.h> وانا بصراحه مش عارف اسم الفايل صح ولا خطا بس هو مجابش معايا ارور فيه

2- السطرين دول

int n;
int arr[n]=myfile;

فيهم مشكلتين :

-انت عرفت متغير من النوع integer اسمه n وفى السطر اللى بعده عرفت مصفوفه عدد عناصرها n وده غلط

لانك اصلا ماحطيتش قيمه للمتغير n ومعروف انه فى السى بلس بلس اول لما بتعرف متغير هى مبتحطش ليه قيمه ابتدائيه معينه لا هو بياخد القيمه الموجوده فى المكان اللى الترجم بيحجزهوله فى الذاكره

وكمان الخطا التانى انه السى بلس بلس مينفعش تحط متغير كطول للمصفوفه الا اذا كان هذا المتغير عدد ثابت وده بتحدده انت بنفسك فى تعريف المتغير او باستخدام المؤشرات . يعنى ممكن نحل هذه المشكله انا اننا نعرف المتغير n على انه ثابت او نستخدم مؤشرات ومؤقتا نعرفه انه ثابت وليكن 30 مثلا ونحاول نحل المشكله وبعدين نبقى نعدل البرنامج يعنى نغير الاول ونخليه

const int n=30;

- تانى مشكله وهى فى السطرالتانى تحديدا

int arr[n]=myfile;

انت عرفت myfile من خلال السطر ofstream myfile; على انه object من الكلاس ofstream انا بصراحه مش متمكن من موضوع الملفات ده بس بحاول قدر الامكان

انا مش متاكد هل هو object ولا stream

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

المفروض انك بتعرف المصفوفه وخلاص وبعد كده هاتستخدم loop علشان تقرأ كل سطر من الفايل او حسب تخزين الارقام فى الفايل المستخدم يعنى اعتقد ان السطر ده المفروض يتعدل ويكون

int arr[n];

3- السطرين دول

myfile.open ("File1.txt");
myfile.close();

الاول بيفتح stream والتانى بيقفلها

وانت حطيتهم ورا بعض على طول وكده انت ماستفدتش حاجه بفتحها لانه انا اعرف انك تفتح ال stream وبعدين تعمل كل ماتريده باستخدامها وبعد كده تقفلها

-----------------------------------------------------

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

وكمان اللى قلته كله اجتهاد يحتمل الصواب والخطا خاصة فى موضوع ال streams و files

لكن الاخطاء الله قلت عليها قبل فى رقم 1 و 2 واثق منها وانت لو عدلتها زى ماقلتلك وجربت تعمل compile هايقل عدد الاخطاء اللى بتظهر

مره تانيه ياريت ترفق الملف اللى عايز تقرى منه ووعد ان شاء الله بحاول واحطلك شرح مش مجرد برنامج

سلام عليكم

#7

لو أنتا عندك file وحبيت تقراء الارقام الموجودة بة كلها وتضعها فى one dimension array

أول حاجة لازم أقتح الملف واحدد سبب فتح الملف

    MyFile.open("MyFile.txt",ios::out | ios::in);

وبعد كدة هعرف متغير علشان أجيب وليكن NumOfRecord هخزن فية عدد الrecords اللى فى حالتنا دى عدد الارقام ثم بعد ذلك هودى الcursor لاخر الملف علشان اقدر اجيب عدد السجلات وبعد ذلك احسب عدد السجلات عن طريق معرفة حجم الملف كاملا مقسوما على حجم الdata type للارقام

 int NumOfRec;
 MyFile.seekg(0, ios::end);
 NumOfRec = int(MyFile.tellg()) / sizeof(int);

خلاص كدة دلوقتى انا عارف عدد السجلات وبكدة أقدر أفتح array بذلك الحجم وأبدا بقراءة سجل سجل ووضع القمة فى تلك المصفوفة

مع العلم ان قبل ما أبدا فى القراءة من الملف لازم أحرك الcursor الى بداية الملف (علشان فى الخطوة السابقة حركنا الcursor الى نهاية الملف علشان اقدر اعرف عدد السجلات).

  int* ArrData = new int[NumOfRec];
  MyFile.seekg(0 , ios::beg);
int val;
  for(int i = 0; i < NumOfRec; i++)
  {
   MyFile.read( (char*)&val , sizeof(val) );
   ptr = val;
  }
مع العلم ان المتغير val عبارة عن المتغير المستخدم فى عملية الكتابة داخل الملف

يارب أكون وضحتلك حاجة :)

Muhammad Allam

Computer Science

@Resource(MappedURL="My Blog" )

#8

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

و مشكور أخوي eng_3llam على التوضيح و الشرح

و كذلك أخوي m_gabr_1985 على الشرح

و يعطيكم العافية

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

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