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

[ تمت الإجابة ]مشكلة في قراءة بيانات من ملف نصى

بدأه A7meD SofT في 24 ديسمبر 2012 · 8 رد · 756 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

لو سمحت كنت عايز اقرا درجات الطلاب واسمائهم من ملف ثم اطبع اذا كان ناجح ام راسب

#include <iostream>
#include <fstream>
#include <string.h>
#include <cstdlib>
#include <cstring>

using namespace std;

void main()
{

	ifstream infile;
	char c;
	char names[50];
	int grades;	
	int lines=1;
	infile.open("data.txt",ios::in);
	fstream outfile; 
	outfile.open("result.txt",ios::out);
	if(!infile)
	{
		cout<<"Can't Open The File"<<endl;
		exit(1);
	}

	if(!outfile)
	{
		cout<<"Can't Open The File"<<endl;
		exit(1);
	}


	while(infile.get(c))
	{
		if(c=='\n') lines++;
	}

	infile.clear();
	infile.seekg(0);

	for (int i=0;i<lines;i++)
	{
		infile>>names;
		outfile<<names;
		if(infile>>grades)
		{
			if(grades>=50)
			{
				outfile<<" Your grade is "<<grades<<" Pass"<<endl;
			}
			else if(grades<50 && grades >= 0)
			{
				outfile<<" Your grade is "<<grades<<" Fail"<<endl;
			}
			else
			{
				outfile<<" Wrong Grade "<<endl;
			}
		}
	}

	infile.close();
	outfile.close();


}

تم تعديل هذه المشاركة بواسطة A7meD SofT في 24 ديسمبر 2012 في 23:44

#2

فضلا أرفق الـــ infile الذي سوف يقرأ منه البرانمج وينشئ الــ outfile

وما الحكمة من نفس الملف؟ ما يطبع فى ملف آخر؟

تم تعديل هذه المشاركة بواسطة محمد عودة في 24 ديسمبر 2012 في 21:03

post-15367-027053900%201340345097.gifpost-15367-087183200%201340344597.gif
post-247365-0-10080400-1379403554_thumb.

#3

؟؟؟؟؟؟؟؟؟؟

data.txt

تم تعديل هذه المشاركة بواسطة A7meD SofT في 24 ديسمبر 2012 في 22:11

#4

تصحيح الكود :

#include <iostream>
#include <fstream>

using namespace std;

int main() {

    ifstream infile;
    char c, names[50];
    int grades, lines = 0;
    infile.open("data.txt", ios::in);
    fstream outfile;
    outfile.open("result.txt", ios::out);
    if (!infile) {
        cout << "Can't Open The File" << endl;
        return 0;
    }

    while (infile.get(c)) {
        if (c == '\n') lines++;
    }

    infile.clear();
    infile.seekg(0);

    for (int i = 0; i <= lines; i++) {
        infile >> names;
        outfile << names;
        infile >> grades;

        if (grades >= 50)
            outfile << " Your grade is " << grades << " Pass\n";
        else
            outfile << " Your grade is " << grades << " Fail\n";
    }

    infile.close();
    outfile.close();
    return 0;
}

المُخرجات :

post-219439-049086200 1356375938_thumb.p
المرفقات
OutPut.png
#5

تمام طيب لو سمحت الدالة دى فايدتها ايه ؟؟

infile.seekg(0);

infile.clear();

تم تعديل هذه المشاركة بواسطة محمد عودة في 28 ديسمبر 2012 في 18:54

#6

طيب لو سمحت انا عايز الدرجات تبقى مترتبة من الأعلى للأقل ؟؟

#7
اقتباس
تمام طيب لو سمحت الدالة دى فايدتها ايه ؟؟

infile.seekg(0);
infile.clear();

  • الدلة seekg هي إحدى الدوال الأعضاء للصنف fstream (مُشابهة للدالة fseek في السي) : تقوم بالتحكم في مكان المؤشر في ملف نصي.
  • الدالة clear تقوم بإعادة الــ flags إلى حالتها الأصلية.

اقتباس
طيب لو سمحت انا عايز الدرجات تبقى مترتبة من الأعلى للأقل ؟

ضع محاولتك و سنقوم بتوجيهك للطريق الصحيح.

بالمناسبة, لماذا مسحت مشاركاتك ؟

#8

ابحث عن خوارزميات الترتيب مثل bubble sort, merge sort, quick sort ستجد ماتريده.

(map share people)

فضلا لاتقم بمراسلتي من أجل أسئلة لها أقسامها في المنتدى حتى تعم الفائدة على الجميع وللحصول على إجابات أفضل من أعضاء أكثر خبرة.
Weblog
@bitbucket
@xmonader

#9

@A7meD SofT

إذا أعطيناك الحل جاهزا فلن تستفيد شيئا و هذا هو السبب الذي جعلنا نُطالبك بإدراج محاولتك.

راجع خوارزميات البحث و الترتيب

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…