السلام عليكم
يا شباب عندي file و موجود فيه أرقام
و بغيت أعمل له calling و أستخدم الأرقام و أعمل لهم save في الarray بس المشكلة مب عارف الكود اللي يخلي calling للtext file
فإن شاء الله تساعدوني
السلام عليكم
يا شباب عندي file و موجود فيه أرقام
و بغيت أعمل له calling و أستخدم الأرقام و أعمل لهم save في الarray بس المشكلة مب عارف الكود اللي يخلي calling للtext file
فإن شاء الله تساعدوني
السلام عليكم ورحمة الله وبركاته
اخى الناس هنا والله كويسين جدا انا مشترك من يومين بس
بس بصراحه المنتدى رائع جدا باعضاءه ومشرفيه وكلهم برده الحمد لله كويسين ومتعاونين جدا
بس هم متشددين فى ان المفروض قواعد المشاركه انه انت تدور وتحاول الاول وتحط محاولتك وبعدين تطلب المساعده
وانا شايف ان ده صح جدا ومفروض كلنا نلتزم بده لانه لو كل واحد عنده مشكله دخل حطها واتحلت على الجاهز محدش هايتعلم
فدور الاول وابحث وحاول وان شاء الله تلاقى هنا فى المنتدى او فى اى كتاب
والموضوع اللى انت بتبحث فيه ده ابحث تحت عنوان streams and files هتلاقى ان شاء الله اللى انت عايزه
وده موجود فصل كامل فى كتاب object-oriented programming c++ للمؤلف روبرت لافور
هذي أخوي المحاولة
و ال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
السلام عليكم ....
أخي الكريم الفاضل
أنا أعرف كيف أعملها لكن بلغة السي وليس بالسي بلس بلس
فإذا تبغاها بالسي أنا حاضر
السلام عليكم ورحمة الله وبركاته
اخى انا بصراحه ماذاكرت موضوع ال 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 هايقل عدد الاخطاء اللى بتظهر
مره تانيه ياريت ترفق الملف اللى عايز تقرى منه ووعد ان شاء الله بحاول واحطلك شرح مش مجرد برنامج
سلام عليكم
لو أنتا عندك 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 عبارة عن المتغير المستخدم فى عملية الكتابة داخل الملفيارب أكون وضحتلك حاجة :)
مشكورين أخواني على الرد
و مشكور أخوي eng_3llam على التوضيح و الشرح
و كذلك أخوي m_gabr_1985 على الشرح
و يعطيكم العافية
هذا الموضوع مغلق.