مناقشة مسائل كتاب البرمجة2

كل ما يتعلق بمادة البرمجة 2 من استفسارات و مناقشات و محاضرات...........

المشرفون: Ghais, Karam

Re: مناقشة مسائل كتاب البرمجة2

مشاركة غير مقروءةبواسطة Mr.TAMER » الأربعاء يونيو 08, 2011 10:26 pm

ocean كتب:المسالة باختصار
كتابة اجرائية
CODE: تحديد الكل
PROCEDURE getline(var f:text;var l:line ;var n:integer

حيث line هو جدول محرفي طوله 80(مصفوفة محارف) :mrgreen:
تقوم الاجرائية بالمرور على سطر وحساب عدد المحارف الفعلية فيه وتضعه في n
الطلب
استخدام الاجرائية السابقة لقراءة ملف نصي سطرا تلو الاخر وحساب عدد الكلمات في كل واحد منها(الكلمة تتالي محارف لا يتضمن فراغات او ادوات تنقيط) :imb:
سؤالي اذا كانت لدينا الحالة المذكورة هنا
يعني المستخدم معبي السطر نقاط مثلا وحط بس هل 5 محارف فكيف بدي استفيد من عدد المحارف الفعلية بحساب الكلمات يعني ما رح يفيدني nبشي


حسب ما فهمت، يجب أن تكون الإجرائية بهذا الشكل:

CODE: تحديد الكل
procedure getline(var f:text; var l:line;var n:integer);
var i:integer;
   inWord:boolean;
   wordCount:integer;
   prev:char;
begin
   prev:=" ";
   wordCount:=0;
   inWord:=false;
   while (not eof(f)) do
      begin
         readln(f,l);
         for i:=1 to length(l) do
            begin
               if (l[i] in ["a".."z"])or(l[i] in ["A".."Z"]) then
                  begin
                     if (prev=" ") then
                        begin
                           inWord:=true;
                           wordCount:=wordCount+1;
                        end;
                  end
               else if (inWord) then
                  begin
                     if (l[i]<>" ")
                        wordCount:=wordCount-1;
                     inWord = false;
                  end;
               prev:=f[i];
            end;
      end;
end;


وبالتالي لا ضرورة لـ n، في الواقع إن أردنا الاستفادة من n فيجب أن نضع فيها طول l في كل مرة، أي يصبح الكود:

CODE: تحديد الكل
procedure getline(var f:text; var l:line;var n:integer);
var i:integer;
   inWord:boolean;
   wordCount:integer;
   prev:char;
begin
   prev:=" ";
   wordCount:=0;
   inWord:=false;
   while (not eof(f)) do
      begin
         readln(f,l);
         n:=length(l);
         for i:=1 to n do
            begin
               if (l[i] in ["a".."z"])or(l[i] in ["A".."Z"]) then
                  begin
                     if (prev=" ") then
                        begin
                           inWord:=true;
                           wordCount:=wordCount+1;
                        end;
                  end
               else if (inWord) then
                  begin
                     if (l[i]<>" ")
                        wordCount:=wordCount-1;
                     inWord = false;
                  end;
               prev:=f[i];
            end;
      end;
end;


ولكن هذا هدر لا داعي له!

على كل هذا حسب ما فهمت، وربما فهمي خاطئ، ولكن سؤال:
هل يجب التقيد بهذا الشكل للإجرائية؟ يعني فيها الكثير من الأشياء التي لا داعي لها، مثلاً لماذا نمرر l كوسيط متغير ولا نعرفه داخل الإجرائية، تمريره لا داعي له أبداً، وكذلك الأمر بالنسبة لـ n !

وكذلك ما هو هدف الإجرائية الأساسي؟ يعني حساب عدد الكلمات يجب أن يكون له مغزى.. فماذا سنفعل بعدد الكلمات؟

أرجو أن أكون قد أفدت :???:

تقبلوا مروري :iok:

والسلام عليكم ورحمة الله تعالى وبركاته.
Volunteer at Wikilogia

Member of WikiTechie

Contributor in Wiki ITE... Let's open-source our university

All with Proud & Pleasure :)
صورة العضو الشخصية
Mr.TAMER
عضو فعال
عضو فعال
 
مشاركات: 721
اشترك في: الجمعة يناير 01, 2010 12:46 pm
الجتس: ذكر
الشهادة الثانوية: سورية
الجامعة: جامعة دمشق
الكلية: الهندسة المعلوماتية
المرحلة الدراسية: السنة الثالثة

Re: مناقشة مسائل كتاب البرمجة2

مشاركة غير مقروءةبواسطة ocean » الأربعاء يونيو 08, 2011 10:56 pm

Mr.TAMER كتب:
ocean كتب:
يعني فيها الكثير من الأشياء التي لا داعي لها، مثلاً لماذا نمرر l كوسيط متغير ولا نعرفه داخل الإجرائية، تمريره لا داعي له أبداً، وكذلك الأمر بالنسبة لـ n !

وكذلك ما هو هدف الإجرائية الأساسي؟ يعني حساب عدد الكلمات يجب أن يكون له مغزى.. فماذا سنفعل بعدد الكلمات؟

أرجو أن أكون قد أفدت :???:

تقبلوا مروري :iok:

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

شكرا
هذه هي النتيجة المطلوبة :iok:
واساس السؤال هو للتطبيق على الملفات النصية لكن لم ار له داعي :???:
شكرا مرة ثانية واعتذر على اضاعة وقتك :imb:
صورة
صورة العضو الشخصية
ocean
عضو فعال
عضو فعال
 
مشاركات: 792
اشترك في: الأحد ديسمبر 19, 2010 11:23 am
الجتس: أنثى
الشهادة الثانوية: سورية
الجامعة: جامعة دمشق
الكلية: الهندسة المعلوماتية
المرحلة الدراسية: السنة الثانية
الاختصاص: ذكاء صنعي

السابق

العودة إلى البرمجة 2

الموجودون الآن

المستخدمون المتصفحون لهذا المنتدى: لا يوجد أعضاء مسجلين متصلين و 1 زائر

cron