مناقشة الوظيفة الخامسة - عملي برمجة2

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

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

Re: مناقشة الوظيفة الخامسة - عملي برمجة2

مشاركة غير مقروءةبواسطة Ghais » الجمعة إبريل 01, 2011 8:41 pm

شباب موضوع مناقشة المسائل العامة هون :
viewtopic.php?f=20&t=10119

لو سمحتوا خلوا هون المناقشة محصورة بالوظيفة الخامسة .. أو ما يتعلق بها

مشكورين على وضع حلولكون وأنا رح حط الحل تبعي قريباً
Ghais Zaher
ghais.speedy@gmail.com

syrian es

صورة العضو الشخصية
Ghais
مشرف منتديات السنة الأولى
مشرف منتديات السنة الأولى
 
مشاركات: 685
اشترك في: الجمعة أكتوبر 01, 2010 1:38 am
الجتس: ذكر
الشهادة الثانوية: سورية (علمي)
الجامعة: جامعة دمشق
الكلية: الهندسة المعلوماتية
المرحلة الدراسية: السنة الثانية

Re: مناقشة الوظيفة الخامسة - عملي برمجة2

مشاركة غير مقروءةبواسطة BINARY » الجمعة إبريل 01, 2011 8:42 pm

ITE-S3ed كتب:
walaa231 كتب:
ITE-S3ed كتب:
LuliRose كتب:لو سمحتو بالمسألة الأولى ...

الطلب الرابع شرح الفكرة تبعو(إظهار مجموعة المضاعفات) :mrgreen:

مشكورين :ism:

المقصود هو التالي :
اناعندي مصفوفة ادلتها هي اعداد ومحتواها هي قواسم الادلة و بالتالي انا لما بكون معي رقم و بدي اعرف شو مضاعفاته ببحث عن هالرقم بخانات المصفوفة اذا وجدت العدد يلي معي موجود شي بخانة من خانات المصفوفة بتكون النتيحة انو هاد العدد يلي عم ابحث عنه قاسم لدليل الخانة يلي لاقيته موجود بقلبها وبالتالي دليل الخانة هو مضاعف لهاد العدد يلي عم ابحث عنه وبالتالي ادلة الخانات يلي موجود هاد العدد فيها هي مضاعفات لهاد العدد.
انشالله تكون وصلت الفكرة
تقبلو مروري
.. :iok: :iok: ..

معلش إذا ما في إزعاج :imb: :imb:
تحطنا الكود لنتأكد من حلنا
ولك جزيل الشكر :wink:


هلا انت عم تحكو عن مسائل الكتاب مو :???: :???: صار في موضوع خاص بهدول المسائل ورح حط الكود هنيك انشاء الله

والله ما حليتها انا بس حلها بحطه
صورة العضو الشخصية
BINARY
عضو فعال
عضو فعال
 
مشاركات: 408
اشترك في: السبت أكتوبر 02, 2010 3:39 pm
الجتس: أنثى
الشهادة الثانوية: سورية
الجامعة: جامعة دمشق
الكلية: الهندسة المعلوماتية
المرحلة الدراسية: السنة الثانية
الاختصاص: هندسة برمجيات

Re: مناقشة الوظيفة الخامسة - عملي برمجة2

مشاركة غير مقروءةبواسطة ITE-S3ed » الجمعة إبريل 01, 2011 8:47 pm

انا رح حط حلي بس حقوق النشر محفوظة :nau: :nau: :nau:
آخر تعديل بواسطة ITE-S3ed في الجمعة إبريل 01, 2011 8:51 pm، عدل 1 مرة
Bye !!(
صورة العضو الشخصية
ITE-S3ed
عضو نشيط
عضو نشيط
 
مشاركات: 1266
اشترك في: الاثنين سبتمبر 13, 2010 12:02 am
الجتس: ذكر
الشهادة الثانوية: سورية
الجامعة: جامعة دمشق
الكلية: الهندسة المعلوماتية
المرحلة الدراسية: السنة الثانية
الاختصاص: ذكاء صنعي

Re: مناقشة الوظيفة الخامسة - عملي برمجة2

مشاركة غير مقروءةبواسطة BINARY » الجمعة إبريل 01, 2011 8:50 pm

ITE-S3ed كتب:انا ما رح حط حلي حقوق النشر محفوظة :nau: :nau: :nau:



:cry: :cry: :cry: :cry: :cry: زعلتني :wink2: :wink2:
صورة العضو الشخصية
BINARY
عضو فعال
عضو فعال
 
مشاركات: 408
اشترك في: السبت أكتوبر 02, 2010 3:39 pm
الجتس: أنثى
الشهادة الثانوية: سورية
الجامعة: جامعة دمشق
الكلية: الهندسة المعلوماتية
المرحلة الدراسية: السنة الثانية
الاختصاص: هندسة برمجيات

Re: مناقشة الوظيفة الخامسة - عملي برمجة2

مشاركة غير مقروءةبواسطة Ghais » السبت إبريل 09, 2011 3:04 pm

آآآخ على هالكود
493 سطر

رح حط الإجرائيات ورا بعضا, اللي عندو سؤال أنا جاهز :

أولاً : تعريف الأنماط والمتحولات :
CODE: تحديد الكل
type
  EmpType=record
    Number:integer;
    Name:String[20];
    Salary:Real;
  end;

  EmpFileType=File of EmpType;
var
  EmpFile:EmpFileType;
  Location:String;
  Choice:integer;



ثانياً : إجرائية ملء الملف :
CODE: تحديد الكل
(*إجرائية ملء الملف*)
procedure FillFile(var EmpFile:EmpFileType;Location:String);
var
  n,i:integer;
  Temp:EmpType;
begin
  writeln('>>>>>> Fill the employees file <<<<<<');
  write('Please enter the number of employees: ');readln(n);
  assign(EmpFile,Location);
  Rewrite(EmpFile);
  for i := 1 to n do
    begin
      writeln('~~~~~~~~~~~~~~~ Employee ',i,' ~~~~~~~~~~~~~~~');
      write('Please enter the number: ');readln(Temp.Number);
      write('  Please enter the name: ');readln(Temp.name);
      write('Please enter the Salary: ');readln(Temp.Salary);
      write(EmpFile,Temp);
    end;
  writeln('File Saved.');
  writeln;
  writeln('Press ENTER to continue...');
  writeln;
  readln;
  Close(EmpFile);
end;


ثالثاً : إجرئية عرض كافة السجلات وعددها:

CODE: تحديد الكل
(*إجرئية عرض كافة السجلات وعددها*)
procedure PrintFile(var EmpFile:EmpFileType;Location:String);
var
  i:integer;
  Temp:EmpType;
begin
  writeln('>>>>>> Print the employees table <<<<<<');
  i:=0;
  assign(EmpFile,Location);
  reset(EmpFile);
  while not eof(EmpFile) do
    begin
      if ((i mod 20=0) and (i<>0)) then
        readln;
      i:=i+1;
      read(EmpFile,Temp);
      writeln('~~~~~~~~~~~~~~~ Employee ',i,' ~~~~~~~~~~~~~~~');
      writeln('Number: ',Temp.Number);
      writeln('  Name: ',Temp.Name);
      writeln('Salary: ',Temp.Salary:0:2);

    end;
  writeln('***********************');
  writeln('Number of Employees: ',i);
  writeln;
  writeln('Press ENTER to continue...');
  writeln;
  readln;
end;


رابعاً : إجرائية مساعدة لنقل محتوى ملف إلى آخر :
CODE: تحديد الكل
(*إجرائية لنقل محتوى ملف إلى آخر*)
procedure CopyFile(var FromFile:EmpFileType;FromLocation:String;
                       var ToFile:EmpFileType;ToLocation:String);
var
  Temp:EmpType;
begin
  Assign(FromFile,FromLocation);
  Reset(FromFile);
  Assign(ToFile,ToLocation);
  Rewrite(ToFile);

  while not eof(FromFile) do
    begin
      Read(FromFile,Temp);
      write(ToFile,Temp);
    end;

  Close(ToFile);

  (*تفريغ الملف المصدر*)
  Rewrite(FromFile);
  Close(FromFile);
end;


خامساً : إجرائية إضافة سجل موظف :
CODE: تحديد الكل
procedure AddEmp(var EmpFile:EmpFileType;Location:String);
var
  i,n:integer;
  Temp:EmpType;
  TempFile:EmpFileType;
begin
  writeln('>>>>>> Add Employee <<<<<<');
  Assign(EmpFile,Location);
  Reset(EmpFile);
  Assign(TempFile,'TempFile.nth');
  Rewrite(TempFile);

  while not eof(EmpFile) do
    begin
      read(EmpFile,Temp);
      write(TempFile,Temp);
    end;

  write('Please enter the number of employees: ');readln(n);
  for i := 1 to n do
    begin
      writeln('~~~~~~~~~~~~~~~ Employee ',i,' ~~~~~~~~~~~~~~~');
      write('Please enter the number: ');readln(Temp.Number);
      write('  Please enter the name: ');readln(Temp.name);
      write('Please enter the Salary: ');readln(Temp.Salary);
      write(TempFile,Temp);
    end;

  Close(TempFile);
  Close(EmpFile);

  CopyFile(TempFile,'TempFile.nth',EmpFile,Location);

  writeln('Employees successfully added.');
  writeln;
  writeln('Press ENTER to continue...');
  writeln;
  readln;
end;


سادساً : إجرائية حذف أحد الموظفين حسب اسمه:
CODE: تحديد الكل
(*إجرائية حذف أحد الموظفين حسب اسمه*)
procedure DeleteEmp(var EmpFile:EmpFileType;Location:String);
var
  TempFile:EmpFileType;
  Temp:EmpType;
  EmpName:String[20];
  Found:Boolean;
  Choice:Char;
begin
  Found:=False;
  writeln('>>>>>> Delete Employee <<<<<<');

  write('Please enter the name of the employee you want to delete: ');
  readln(EmpName);

  Assign(EmpFile,Location);
  Reset(EmpFile);
  Assign(TempFile,'TempFile.nth');
  Rewrite(TempFile);

  while not eof(EmpFile) do
    begin
      read(EmpFile,Temp);
      if Temp.Name<>EmpName then
        write(TempFile,Temp)
      else
        begin
          writeln('Number: ',Temp.Number);
          writeln('  Name: ',Temp.Name);
          writeln('Salary: ',Temp.Salary:0:2);
          writeln('Delete this employee ? (Y/N)');
          Readln(Choice);
          if Choice in ['Y','y'] then
            Found:=True
          else
            write(TempFile,Temp)
        end;

    end;

  Close(TempFile);
  Close(EmpFile);

  CopyFile(TempFile,'TempFile.nth',EmpFile,Location);

  if Found then
    writeln('Employee successfully deleted.')
  else
    writeln('Employee NOT found!');

  writeln;
  writeln('Press ENTER to continue...');
  writeln;
  readln;
end;


سابعاً : إجرائية إظهار معلومات موظف حسب رقمه :
CODE: تحديد الكل
(*إجرائية إظهار معلومات موظف حسب رقمه*)
procedure PrintEmpInfo(var EmpFile:EmpFileType;Location:String);
var
  Temp:EmpType;
  Found:Boolean;
  EmpNumber:Integer;
begin
  writeln('>>>>>> Print an employee''s info <<<<<<');
  write('Please enter the number of the Employee you want to find: ');
  readln(EmpNumber);
  Assign(EmpFile,Location);
  Reset(EmpFile);
  Found:=False;
  while (not eof(EmpFile)) and (not Found) do
    begin
      read(EmpFile,Temp);
      if Temp.Number=EmpNumber then
        begin
          Found:=True;
          writeln('Employee Successfully Found.');
          writeln('Number: ',Temp.Number);
          writeln('  Name: ',Temp.Name);
          writeln('Salary: ',Temp.Salary:0:2);
       end;
    end;

  if not Found then
    writeln('Employee NOT Found!');

  Close(EmpFile);

  writeln;
  writeln('Press ENTER to continue...');
  writeln;
  readln;

end;


ثامناً : إجرائية تعديل معلومات لموظف ما:
CODE: تحديد الكل
(*إجرائية تعديل معلومات لموظف ما*)
procedure EditEmp(var EmpFile:EmpFileType;Location:String);
var
  EmpNumber,Choice:Integer;
  EmpName:String[20];
  Temp:EmpType;
  TempFile:EmpFileType;
  Found:Boolean;
  CharChoice:Char;
begin
  Found:=False;
  writeln('>>>>>> Edit an employee''s info <<<<<<');
  repeat
    writeln('Look for the employee:');
    writeln('   1-By name');
    writeln('   2-By number');
    write('Please enter you choice: ');Readln(Choice);
  until Choice in [1,2] ;

  if Choice=1 then
    begin
      write('Enter the name: ');readln(EmpName);
    end
  else if Choice=2 then
    begin
      write('Enter the number: ');readln(EmpNumber);
    end;

  Assign(EmpFile,Location);
  Reset(EmpFile);
  Assign(TempFile,'TempFile.nth');
  Rewrite(TempFile);

  while not eof(EmpFile) do
    begin
      read(EmpFile,Temp);
      if ((Choice = 1) and (Temp.Name=EmpName)) or
         ((Choice = 2) and (Temp.Number=EmpNumber)) then
        begin
          writeln;
          writeln('Employee found.');
          writeln('Number: ',Temp.Number);
          writeln('  Name: ',Temp.Name);
          writeln('Salary: ',Temp.Salary:0:2);
          writeln('Edit this employee ? (Y/N)');
          Readln(CharChoice);
          if CharChoice in ['Y','y'] then
            begin
              writeln('Please enter the new informations: ');
              write('Please enter the new number: ');readln(Temp.Number);
              write('  Please enter the new name: ');readln(Temp.name);
              write('Please enter the new Salary: ');readln(Temp.Salary);
             Found:=True;
            end;
        end;

      write(TempFile,Temp);
    end;


  Close(EmpFile);
  Close(TempFile);

  CopyFile(TempFile,'TempFile.nth',EmpFile,Location);

  if not Found then
    writeln('Employee NOT found!')
  else
    writeln('Employee successfully updated.');

  writeln;
  writeln('Press ENTER to continue...');
  writeln;
  readln;

end;


تاسعاً : أجرائية إظهار لائحة بأسماء الموظفين الذين يتقاضون راتباً أكبر من قيمة معينة :
CODE: تحديد الكل
procedure PrintSpecificEmp(var EmpFile:EmpFileType;Location:String);
var
  MinSal:Real;
  Temp:EmpType;
  Found:Boolean;
begin
  Found:=False;
  MinSal:=0;
  writeln('>>>>>> Employees that have a specefic salary <<<<<<');
  write('Please enter the minimum salary: ');readln(MinSal);
  Assign(EmpFile,Location);
  Reset(EmpFile);

  writeln('Employees with Salary more than ',MinSal:0:2,': ');
  while not eof(EmpFile) do
    begin
      read(EmpFile,Temp);
      if Temp.Salary>=MinSal then
        begin
          Found:=True;
          writeln(Temp.Name);
        end;
    end;

  if not Found then
    writeln('NO employee found!');

  Close(EmpFile);
  writeln;
  writeln('Press ENTER to continue...');
  writeln;
  readln;
end;


عاشراً : إجرائية لترتيب سجلات الموظفين حسب رواتبهم (باستخدام مصفوفة):
CODE: تحديد الكل
(*إجرائية لترتيب سجلات الموظفين حسب رواتبهم*)
procedure ArrangeEmp(var EmpFile:EmpFileType;Location:String);
var
  EmpArray:array[1..100] of EmpType;
  Temp:EmpType;
  i,j,n:integer;
begin
  i:=0;
  Assign(EmpFile,Location);
  reset(EmpFile);
  while not eof(EmpFile) do
    begin
      i:=i+1;
      Read(EmpFile,EmpArray[i]);
    end;
  n:=i;
  Close(EmpFile);

  for I := 1 to n-1 do
    for j := i+1 to n do
      if EmpArray[i].Salary<EmpArray[j].Salary then
        begin
          Temp:=EmpArray[i];
          EmpArray[i]:=EmpArray[j];
          EmpArray[j]:=Temp;
        end;

  Rewrite(EmpFile);
  for i := 1 to n do
    write(EmpFile,EmpArray[i]);

  writeln('Table successfully arranged.');
  writeln;
  writeln('Press ENTER to continue...');
  writeln;
  readln;
end;


11 : الترتيب بدون استخدام مصفوفة :
أ - إجرائية لمعرفة الموظف ذي أكبر قيمة راتب وأصغر من السابقة :
CODE: تحديد الكل
{إجرائية لمعرفة الموظف ذي أكبر قيمة راتب وأصغر من السابقة}
procedure FindMaxSalary(var EmpFile:EmpFileType;Location:String;
                        var MaxEmp,HigherEmp:EmpType);
var
  Temp:EmpType;
begin
  with MaxEmp do
    begin
      Number:=0;
      Name:='';
      Salary:=0;
    end;

  Assign(EmpFile,Location);
  Reset(EmpFile);
  while not eof(EmpFile) do
    begin
      read(EmpFile,Temp);
      if (Temp.Salary > MaxEmp.Salary) then
        if (HigherEmp.Salary=0) or (Temp.Salary < HigherEmp.Salary) then
          MaxEmp:=Temp;
    end;
end;


ب - إجرائية الترتيب :
CODE: تحديد الكل
{إجرائية الترتيب}
procedure ArrangeEmp2(var EmpFile:EmpFileType;Location:String);
var
  MaxEmp,HigherEmp:EmpType;
  ArrangedFile:EmpFileType;
begin
  with MaxEmp do
    begin
      Number:=-1; Name:=''; Salary:=0;
    end;

  Rewrite(ArrangedFile,'ArrangedFile.nth');

  repeat
    HigherEmp := MaxEmp;
    FindMaxSalary(EmpFile,Location,MaxEmp,HigherEmp);
    if MaxEmp.Salary<>0 then
      write(ArrangedFile,MaxEmp);
  until MaxEmp.Salary=0;

  Close(ArrangedFile);

  CopyFile(ArrangedFile,'ArrangedFile.nth',EmpFile,Location);

  writeln('Table successfully arranged.');
  writeln;
  writeln('Press ENTER to continue...');
  writeln;
  readln;
end;


12 : البرنامج والاستدعاء :
CODE: تحديد الكل
var
  YesNo:Char;
begin
  Location:='EmpTable.nth';

  repeat
    repeat
      writeln('***** Please enter your choice *****');
      writeln('1-Fill the Employees table');
      writeln('2-Print the Employees table');
      writeln('3-Add Employees');
      writeln('4-Delete an Employee');
      writeln('5-Print an Employee''s informations');
      writeln('6-Update an Employee''s informations');
      writeln('7-Print Employees that have a specefic salary');
      writeln('8-Arrange Employees by Salary');
      writeln;
      writeln('Enter 0 to exit.');

      write('Enter you choice: ');Readln(Choice);

      if not (Choice in [0..8]) then
        writeln('Error !!!');

      writeln;
    until Choice in [0..8];

    case choice of
      1:
        begin
          writeln('Attention! This will delete the existing table.');
          writeln('Are you sure about that ? (Y/N)');
          readln(YesNo);

          if YesNo in ['Y','y'] then
            FillFile(EmpFile,Location);
        end;
      2:PrintFile(EmpFile,Location);
      3:AddEmp(EmpFile,Location);
      4:DeleteEmp(EmpFile,Location);
      5:PrintEmpInfo(EmpFile,Location);
      6:EditEmp(EmpFile,Location);
      7:PrintSpecificEmp(EmpFile,Location);
      8:ArrangeEmp2(EmpFile,Location);
    end;

  until Choice=0;


end.



وعذراً على التأخير

جاهز لأي استفسار
:iok:
Ghais Zaher
ghais.speedy@gmail.com

syrian es

صورة العضو الشخصية
Ghais
مشرف منتديات السنة الأولى
مشرف منتديات السنة الأولى
 
مشاركات: 685
اشترك في: الجمعة أكتوبر 01, 2010 1:38 am
الجتس: ذكر
الشهادة الثانوية: سورية (علمي)
الجامعة: جامعة دمشق
الكلية: الهندسة المعلوماتية
المرحلة الدراسية: السنة الثانية

السابق

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

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

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