» נושאי לימוד
» נושאי לימוד
יום שישי 3 במאי 2024
מבחן 1-תשובות (חלק ג)
דף ראשי  פרק 6: מבחנים לדוגמא  מבחן 1-תשובות (חלק ג) גרסה להדפסה

פרק שלישי

 

שאלה מספר 9

א.       בחירת משתנים עיקריים, הגדרת טיפוסיהם ותפקידם:

קבועים

MaxCustomers - מספר לקוחות

טיפוסים

  MonthArrays - מערך מספרים מטיפוס  integer  לשמירת מספר ההפרעות בכל חודש.

 

משתנים

  FirstMonth - מערך מטיפוס MonthArrays  לשמירת מספר ההפרעות של כל לקוח בחודש הראשון.

 SecondMonth - מערך מטיפוס MonthArrays  לשמירת מספר ההפרעות של כל לקוח בחודש השני.

FirstSum - משתנה שלם לשמירת סך ההפרעות בחודש הראשון.

 SecondSum - משתנה שלם לשמירת סך ההפרעות בחודש השני.

  CAve- משתנה לשמירת ממוצע ההפרעות של החברה במשך חודשיים.

 

ב.        פירוק הבעיה לתת בעיות

1.        קליטת הנתונים עבור כל לקוח בשני חודשים והשמתם ב FirstMonth  וב- SecondMonth     בהתאמה

        2.          חישוב סך ההפרעות של הלקוחות בחודש הראשון והשמתו  ב FirstSum.

        3.          חישוב סך ההפרעות של הלקוחות בחודש השני והשמתו ב SecondSum

        4.          הודעה אם  SecondSum גדול  מ-  FirstSum.

        5.          חישוב ממוצע ההפרעות של החברה במשך שני החודשים.

 

 

הפרוצדורות והפונקציות המתאימים

1.  קליטת הנתונים עבור כל לקוח :

procedure GetInfo(var FirstMonth,SecondMonth:MonthArray);

 

{טענת יציאה: הפרוצדורה מחזירה במערך FirstMonth את מספר ההפרעות של כל לקוח        }

{                 בחודש הראשון ובמערך SeconMonth FirstMonth את מספר ההפרעות של כל }

{                 לקוח בחודש השני                                                                              }

 

2.  חישוב סך ההפרעות של הלקוחות בחודש

function SumDis(Month:MonthArray):integer;

 

{טענת כניסה:  הפונקציה מקבלת מערך של הפרעות הלקוחות במשך חודש אחד }

{טענת יציאה :  הפונקציה מחזירה את סך כל ההפרעות בחודש }

 

3.  חישוב ממוצע ההפרעות של החברה במשך שני החודשים

function CompanyAve(FirstSum , SecondSum :integer):real;

 

{טענת כניסה: הפונקציה מקבלת את סך כל ההפרעות בשני החודשים            }

{טענת יציאה  הפונקציה מחזירה את ממוצע ההפרעות בחושיים                   }

 

4.  מציאת מספרי המנויים שממוצע ההפרעות גדול ממוצע החברה בחודשיים

 

procedure CustomerAve(FirstMonth , SecondMonth : MonthArray;CompanyAve:real);

 

{ טענת כניסה: הפרוצדורה מקבלת מערכי הפרעות של שני החודשים וממוצע ההפרעות של }

{                   החברה בחודשים אלה                                                                  }

{טענת יציאה : הפרוצדורה מדפיסה את מספרי המנויים שממוצע ההפרעות שלהם גדול       }

{                   מממוצע החברה בחודשיים                                                             }

 

5. הדפסת המנוי שמספר הההפרעות שלו הקרוב ביותר למספר ההפרעות הממוצע

procedure CloseCustomer(FirstMonth: MonthArray ; FirstSum : integer);

 

{טענת כניסה: הפרוצדורה מקבלת מערך הפרעות של החודש הראשון וסך ההפרעות של          }

{                   החברה בחודש הראשון                                                                      }

{ טענת יציאה: הפרוצדורה מדפיסה את המנוי שמספר הההפרעות שלו הקרוב ביותר למספר     } 

{                  ההפרעות הממוצע                                                                             }

 

ג. התוכנית בשפת פסקל

 

program Telephon(input,output);
const
    MaxCustomers=100;
type
    MonthArray=array[1..MaxCustomers] of integer;
var
    FirstMonth , SecondMonth : MonthArray;
    FirstSum , SecondSum : integer;
    CAve: real;

procedure GetInfo(var FirstMonth,SecondMonth:MonthArray);
var
    I:integer;
begin
    for I := 1 to MaxCustomers do
    begin
         writeln('הקש את מספר ההפרעות בחודש הראשון ובחודש השני ');
         readln(FirstMonth[I], SecondMonth[I]);
    end;
end; { GetInfo }
 
function SumDis(Month:MonthArray):integer;
var
     I,Sum:integer;
begin
     Sum := 0;
     for I := 1 to MaxCustomers do
          Sum := Sum+Month[I];
     SumDis := Sum
end;
 
function CompanyAve(FirstSum , SecondSum :integer):real;
begin
     CompanyAve := (FirstSum+SecondSum)/(2*MaxCustomers)
end;
 
procedure CustomerAve(FirstMonth,SecondMonth :MonthArray;
                                            ompanyAve:real);
var
     I:integer;
begin
     for I := 1 to MaxCustomers do
     if ((FirstMonth[I]+SecondMonth[I]) / 2  ) > CompanyAve  then 
                 writeln(I,'more dis');
end;
 
procedure CloseCustomer(FirstMonth: MonthArray;FirstSum:integer);
var
     I:integer;
     Ave,Temp:real;
     Closest:integer;
begin
     Closest := 1;
     ave := FirstSum/MaxCustomers;
     for I := 1 to MaxCustomers do
     begin
           Temp := abs(FirstMonth[I]-Ave);
           if Temp<Closest then
                 Closest := I;
     end;
     writeln(Closest,'cusomer');
end;
 

begin  { main }
GetInfo (FirstMonth , SecondMonth );
FirstSum  :=  SumDis( FirstMonth );
SecondSum  :=  SumDis( SecondMonth );
if (SecondSum  >  FirstSum) then
writeln ('סה"כ ההפרעות בחודש השני גדול מסה"כ ההפרעות בחודש הראשון ');
else writeln ('סה"כ ההפרעות בחודש השני אינו גדול מסה"כ ההפרעות בחודש
ראשון ');
CAve  :=  CompanyAve (FirstSum , SecondSum);
CustomerAve (FirstMonth , SecondMonth , CAve);
CloseCustomer (FirstMonth , FirstSum);
end.

 

  

 

 13-03-04 / 19:57  עודכן ,  17-02-04 / 16:53  נוצר ע"י ליזי פרגו'ן בתאריך 
 מבחן 1-תשובות (חלק ב) - הקודםהבא - מבחן 1-תשובות (חלק ד) 
תגובות הקוראים    תגובות  -  0
דרכונט
מהי מערכת הדרכונט?
אינך מחובר, להתחברות:
דוא"ל
ססמא
נושאי לימוד
חיפוש  |  לא פועל
משלנו  |  לא פועל
גולשים מקוונים: 2