You are on page 1of 18

‫פתרון מועד א אלגוריתמיקה ‪ 2023‬קיץ‬

‫שאלון ‪97104‬‬
‫עורך ‪ :‬גל בראון‬

‫‪Q1‬‬

‫‪-----‬‬

‫{)‪for (int i=1; i< 1000; i++‬‬

‫;‪int div‬‬

‫חדספרתי‪//‬‬

‫{)‪if (i<10‬‬

‫;‪div = i‬‬

‫}‬

‫דו ספרתי‪//‬‬

‫{)‪else if (i>=10 && i<100‬‬

‫;‪div = i%10+i/10‬‬

‫}‬

‫תלת ספרתי‪//‬‬

‫{)‪else if (i>=100‬‬

‫;‪div = i%10+i/10%10+i/100‬‬

‫}‬

‫)‪if (i%div ==0‬‬

‫;)‪syso(i‬‬

‫}‬

‫;)‪syso(1000‬‬

‫רח' יעקב רייפן ‪ 15‬רחובות טל‪1-700-602-702 :‬פקס‪08-9350837 :‬‬


‫כתובת אתר האינטרנט‪ |www.crehovot..ort.org.il :‬חפשו אותנו בפייסבוק |‬
‫אורט ישראל – חברה לתועלת הציבור חל"צ ‪174 /‬‬
---------------------------------------------------------------

Q2

-----

Scanner input = new Scanner(System.in);

int flag;

int counter =0;

String phoneNum="";

while (flag != 3){

flag = 0;

phoneNum = input.next();

counter++;

if (phoneNum.subString(0,2) == "05" && phoneNum.charAt(2) >='0' &&


phoneNum.charAt(2) <='8')

flag+=1;

if (phoneNum.charAt(2) == '-')

flag+=1;

String restNum = phoneNum.subString(4)

if (restNum.length == 7){

boolean isGood = true;

for (int i=0; i<7; i++){

if (restNum.charAt(i) <'0' || phoneNum.charAt(i) >'9')

isGood = false;

if (isGood)

flag+=1;

08-9350837 :‫פקס‬1-700-602-702 :‫ רחובות טל‬15 ‫רח' יעקב רייפן‬


| ‫| חפשו אותנו בפייסבוק‬www.crehovot..ort.org.il :‫כתובת אתר האינטרנט‬
174 / ‫אורט ישראל – חברה לתועלת הציבור חל"צ‬
syso(counter);

---------------------------------------------------------------

Q3A

-----

public static boolean idOrdered(int[]arr){

for (int i=0; i<arr.length; i++){

if (arr[i]%2 ==1){

boolean flag = true;

for (int j=i+1; j<arr.length; j++){

if (arr[j]%2 ==0)

return false;

return true;

return true;

---------------------------------------------------------------

Q3B

-----

public static int[] buildOrderArray(int size, int x, int y){

int counter =0;

int leftInx = 0;

int rigthInx = size-1;

int [] arr = new int[size];

08-9350837 :‫פקס‬1-700-602-702 :‫ רחובות טל‬15 ‫רח' יעקב רייפן‬


| ‫| חפשו אותנו בפייסבוק‬www.crehovot..ort.org.il :‫כתובת אתר האינטרנט‬
174 / ‫אורט ישראל – חברה לתועלת הציבור חל"צ‬
while (counter<size){

int num = (int)(Math.random()*(y-x+1)) + x;

if (num%2==0){

arr[leftInx] = num;

leftInx++;

}else{

arr[rigthInx] = num;

rigthInx--;

counter++;

return arr;

Q4a

----

class Time{

public int difference(Time other){

int currentMinSum = this.hour*60+this.min;

int otherMinSum = other.hour*60+other.min;

return otherMinSum-currentMinSum;

08-9350837 :‫פקס‬1-700-602-702 :‫ רחובות טל‬15 ‫רח' יעקב רייפן‬


| ‫| חפשו אותנו בפייסבוק‬www.crehovot..ort.org.il :‫כתובת אתר האינטרנט‬
174 / ‫אורט ישראל – חברה לתועלת הציבור חל"צ‬
Q4b

----

boolean flag = true;

Scanner input = new Scanner(System.in);

for (int i=1; i<=100; i++){

sysou("‫;)"הזן שעת קבלת המשלוח‬

int hour1 = input.next();

sysou("‫;)"הזן שעת קבלת המשלוח‬

int min1 = input.next();

sysou("‫;)"הזן שעת קבלת המשלוח‬

int hour2 = input.next();

sysou("‫;)"הזן שעת קבלת המשלוח‬

int min2 = input.next();

Time arvTime = new Time(hour1,min1);

Time supTime = new Time(hour2,min2);

if (arvTime.difference(supTime)>180)

flag = false;

if(flag)

08-9350837 :‫פקס‬1-700-602-702 :‫ רחובות טל‬15 ‫רח' יעקב רייפן‬


| ‫| חפשו אותנו בפייסבוק‬www.crehovot..ort.org.il :‫כתובת אתר האינטרנט‬
174 / ‫אורט ישראל – חברה לתועלת הציבור חל"צ‬
‫;)"החברה עמדה בהתחיבות"(‪syso‬‬

‫‪else‬‬

‫;)"לא עמדה"(‪syso‬‬

‫‪------------------------------------------------------‬‬

‫‪Q5c‬‬

‫‪----‬‬

‫הפעולה בודקת האם במערך נתון במקומות הזוגיים המספרים עולים‬


‫ובמקומות האי זוגיים המספרים יורדים‬

‫‪Q5d‬‬

‫‪----‬‬

‫)‪ O(1‬זמן ריצה‬

‫{)‪public static int check(int[]arr‬‬

‫)‪if (a.length == 1‬‬

‫]‪return arr[0‬‬

‫;‪int maxEven, maxOdd‬‬

‫;]‪maxOdd = arr[1‬‬

‫)‪if (arr.length%2==0‬‬

‫;]‪maxEven = arr[arr.length-2‬‬

‫‪else‬‬

‫;]‪maxEven = arr[arr.length-1‬‬

‫;)‪return math.max(maxEven, maxOdd‬‬

‫}‬

‫רח' יעקב רייפן ‪ 15‬רחובות טל‪1-700-602-702 :‬פקס‪08-9350837 :‬‬


‫כתובת אתר האינטרנט‪ |www.crehovot..ort.org.il :‬חפשו אותנו בפייסבוק |‬
‫אורט ישראל – חברה לתועלת הציבור חל"צ ‪174 /‬‬
‫‪--------------------------------------------------‬‬

‫‪6a‬‬

‫‪---‬‬

‫‪gAlBaRoN1‬‬

‫‪6b‬‬

‫‪---‬‬

‫‪.‬הטענה נכונה‬

‫הפעולה בודקת האם העבור מחרוזת נתונה‬


‫במקומות הזויים אסור שתמצא אות גדולה‬
‫בעוד שבמקומות האי זוגיים חייבות להמצא רק אותיות גדולות‬

‫‪6c‬‬

‫‪---‬‬

‫כגודל המחרוזת ‪: n‬אורך קלט‬

‫עוברים פעמיים על המחרוזת‬


‫‪2n‬‬

‫ולכן סיבויות הפעולה‬


‫)‪O(n‬‬

‫‪--------------------------------‬‬

‫‪7a‬‬

‫‪---‬‬

‫{)‪public static boolean sameProducer(Coffee[]arr‬‬

‫;)(‪String name = arr[0].getName‬‬

‫{)‪for (Coffee c : arr‬‬

‫)))(‪if (!name.equals(c.getName‬‬

‫;‪return false‬‬

‫רח' יעקב רייפן ‪ 15‬רחובות טל‪1-700-602-702 :‬פקס‪08-9350837 :‬‬


‫כתובת אתר האינטרנט‪ |www.crehovot..ort.org.il :‬חפשו אותנו בפייסבוק |‬
‫אורט ישראל – חברה לתועלת הציבור חל"צ ‪174 /‬‬
}

return true;

7b

---

public static String[] weekSorts(Coffee[]arr, int num){

int size=0;

String [] arr2;

int counter=0;

for (Coffee c : arr){

if (c.getStrength() < num)

size++;

arr2 = new String[size];

for (Coffee c : arr){

if (c.getStrength() < num){

arr2[counter] = c.getType();

counter++;

return arr2;

7C

----

08-9350837 :‫פקס‬1-700-602-702 :‫ רחובות טל‬15 ‫רח' יעקב רייפן‬


| ‫| חפשו אותנו בפייסבוק‬www.crehovot..ort.org.il :‫כתובת אתר האינטרנט‬
174 / ‫אורט ישראל – חברה לתועלת הציבור חל"צ‬
public static void mostExpensive(Coffee[]arr){

double maxPrice=arr[0].getPrice();

for (Coffee c : arr){

maxPrice = math.max(c.getPrice(), maxPrice);

for (Coffee c : arr){

if (c.getPrice() == maxPrice){

syso(c.toString());

----------------------------------------------------

8a

---

public static boolean check(int[]a, int[]b){

if (a.length != b.length)

return false;

int aIndex = 0;

int bIndex = b.length-1;

for(aIndex<a.length; aIndex++){

if (a[aIndex] != b[bIndex]

08-9350837 :‫פקס‬1-700-602-702 :‫ רחובות טל‬15 ‫רח' יעקב רייפן‬


| ‫| חפשו אותנו בפייסבוק‬www.crehovot..ort.org.il :‫כתובת אתר האינטרנט‬
174 / ‫אורט ישראל – חברה לתועלת הציבור חל"צ‬
‫;‪return false‬‬

‫;‪bIndex--‬‬

‫}‬

‫;‪return true‬‬

‫}‬

‫‪8b‬‬

‫‪---‬‬

‫כאורך המערכים ‪: n -‬גודל קלט‬

‫)‪ O(n‬סיבויות‬

‫עוברים במקביל פעם אחת על שני המערכים‬

‫‪8d‬‬

‫‪---‬‬

‫]‪b=[6,4,10,13‬‬

‫‪8e‬‬

‫‪---‬‬

‫‪ aIndex‬מוכל בתוך מערך ‪ B‬הפעולה בודקת האם מערך‬

‫‪8f‬‬

‫‪----‬‬

‫‪ a‬גודל מערך ‪n -‬‬

‫‪ b‬גודל מערך ‪m -‬‬

‫)‪ O(n*m‬סיבוכיות‬

‫‪ a‬עבור כל תא במערך‬

‫‪ b‬עוברים על כל מערך‬

‫‪-------------------------------------------------------------------‬‬

‫רח' יעקב רייפן ‪ 15‬רחובות טל‪1-700-602-702 :‬פקס‪08-9350837 :‬‬


‫כתובת אתר האינטרנט‪ |www.crehovot..ort.org.il :‬חפשו אותנו בפייסבוק |‬
‫אורט ישראל – חברה לתועלת הציבור חל"צ ‪174 /‬‬
--------------------------------------------

Q9(a)

‫ מחלקה‬Digits

arrDigits - ‫ תאים כל תא מייצג את מספר הפעמיים שבו הספרה מופיע במספר‬10 ‫מערך בן‬

public static void BuiltArr (int x)

int dig = 0;

int num = x;

bool flag = true;

if (x > 0)

while (flag)

if (num > 0)

dig = x%10 ;

arrDigits[dig]++ ;

num = x/10

else

flag = false;

Q9(b)

public static bool equals (Digits X)

for(int aIndex=0; aIndex<10 ; aIndex++)

if (X.arr.Digits[i] != this.arr.Digits[i])

return false;

return true;

08-9350837 :‫פקס‬1-700-602-702 :‫ רחובות טל‬15 ‫רח' יעקב רייפן‬


| ‫| חפשו אותנו בפייסבוק‬www.crehovot..ort.org.il :‫כתובת אתר האינטרנט‬
174 / ‫אורט ישראל – חברה לתועלת הציבור חל"צ‬
‫}‬

‫)‪Q9(c‬‬

‫)‪Q9(d‬‬

‫ידוע מספר הפעמיים שמופיע כל ספרה אבל לא יודע מיקום הספרה‬


‫יכול לבצע בדיקה האם כמות הספרות במערך‬
‫)‪public static int compareTo (Digits X‬‬

‫{‬

‫;‪int sumD1=0, sumD2=0‬‬

‫)‪for(int aIndex=0; aIndex<10 ; aIndex++‬‬

‫{‬

‫]‪sumD1+=this.arr.Digits[aIndex‬‬

‫]‪sumD2+=X.arr.Digits[aIndex‬‬

‫}‬

‫)‪if (sumD1 > sumD2‬‬

‫‪return 1‬‬

‫‪else‬‬

‫)‪if (sumD1 < sumD2‬‬

‫‪return 2‬‬

‫‪else‬‬ ‫במקרה של שוויון ואין אפשרות לדעת ‪//‬‬

‫‪return 0‬‬

‫}‬

‫===========================================================================‬
‫========‬

‫רח' יעקב רייפן ‪ 15‬רחובות טל‪1-700-602-702 :‬פקס‪08-9350837 :‬‬


‫כתובת אתר האינטרנט‪ |www.crehovot..ort.org.il :‬חפשו אותנו בפייסבוק |‬
‫אורט ישראל – חברה לתועלת הציבור חל"צ ‪174 /‬‬
Q10(A)

public static int Room(string type, double area, int freq)

public static int App(int appNum, string owner, Room[]rooms, double rate)

public static int Bulding(string address, App[]apartments)

Q10(B)

‫אני ביצעתי חישוב בצורה הבאה‬:

‫ מחיר נקיון של מטר מרובע‬- rate * ‫ מספר הפעמיים בחודש‬freq * ‫ שטח החדר‬area

public double monthCost()

double costApp=0.0;

for(int aIndex=0; aIndex<rooms.length; aIndex++)

costApp+= app.rate * room[i].area * room.freq

return costApp;

Q10(C)

‫צריך לחושב האם המערך הדירות ממויון לפי לקוח‬


‫צריך לעבור על מערך של הבנינים לכל לקוח בנפרד‬
‫ צריך מערך של לקוחות שמכיל את מערך הדירות ששיכות לכל לקוח‬-

‫אז עוברים על המערך של בנינים פעם אחד‬

08-9350837 :‫פקס‬1-700-602-702 :‫ רחובות טל‬15 ‫רח' יעקב רייפן‬


| ‫| חפשו אותנו בפייסבוק‬www.crehovot..ort.org.il :‫כתובת אתר האינטרנט‬
174 / ‫אורט ישראל – חברה לתועלת הציבור חל"צ‬
public static void monthReport(Building[] bArr, String[] clients)

monthCost()

Console.WriteLine("Monthly invoice for a customer: " app.owner + "For cleaning of the


following assets: " +

app.appNum + ,monthCost + "The total price for service: " ,totalCost);

===========================================================================
===========================

Q11

"‫דוגמא מלמערך ריבועי "בריא‬

6 ‫ על‬6 ‫מערך של‬

5 4 3 2 1 0

5 4 3 2 1 7 0

4 6 8 9 11 1 1

1 2 4 13 9 2 2

10 16 17 10 8 3 3

1 19 15 5 5 4 4

21 1 12 4 6 5 5

‫עוברים על התאים של אכסון ראשי‬


‫ובודקים שהתא הוא המקסימלי באותה עמודה וגם באותה שורה‬

08-9350837 :‫פקס‬1-700-602-702 :‫ רחובות טל‬15 ‫רח' יעקב רייפן‬


| ‫| חפשו אותנו בפייסבוק‬www.crehovot..ort.org.il :‫כתובת אתר האינטרנט‬
174 / ‫אורט ישראל – חברה לתועלת הציבור חל"צ‬
static bool maxRowColDiagonal(int[,] darr)

for (int i = 0; i< darr.length ; i++)

int diagonalxy = array[i, i];

bool MaxInRow = true;

bool MaxInCol = true;

// Check the row

for (int col = 0; col < darr.length ; col++)

if (darr[i, col] > diagonalxy)

return false;

// Check the column

for (int row = 0; row < darr.length; row++)

if (array[row, i] > diagonalxy)

return false;

return true;

08-9350837 :‫פקס‬1-700-602-702 :‫ רחובות טל‬15 ‫רח' יעקב רייפן‬


| ‫| חפשו אותנו בפייסבוק‬www.crehovot..ort.org.il :‫כתובת אתר האינטרנט‬
174 / ‫אורט ישראל – חברה לתועלת הציבור חל"צ‬
‫‪--------------------------------------------‬‬

‫‪Q12‬‬

‫‪---‬‬

‫הפונקציה מחזירה את תוצאת החזקה של ‪ 10‬בכמות ספרות המספר ‪b.‬‬

‫‪d. num = 456‬‬

‫מתחית ‪ Num1‬מוכל ב ‪ num2‬הפעולה תחזיר אמת אם המספר ‪e.‬‬

‫‪num1‬‬

‫‪12-a‬‬

‫‪12-b‬‬

‫רח' יעקב רייפן ‪ 15‬רחובות טל‪1-700-602-702 :‬פקס‪08-9350837 :‬‬


‫כתובת אתר האינטרנט‪ |www.crehovot..ort.org.il :‬חפשו אותנו בפייסבוק |‬
‫אורט ישראל – חברה לתועלת הציבור חל"צ ‪174 /‬‬
‫רח' יעקב רייפן ‪ 15‬רחובות טל‪1-700-602-702 :‬פקס‪08-9350837 :‬‬
‫כתובת אתר האינטרנט‪ |www.crehovot..ort.org.il :‬חפשו אותנו בפייסבוק |‬
‫אורט ישראל – חברה לתועלת הציבור חל"צ ‪174 /‬‬
‫רח' יעקב רייפן ‪ 15‬רחובות טל‪1-700-602-702 :‬פקס‪08-9350837 :‬‬
‫כתובת אתר האינטרנט‪ |www.crehovot..ort.org.il :‬חפשו אותנו בפייסבוק |‬
‫אורט ישראל – חברה לתועלת הציבור חל"צ ‪174 /‬‬

You might also like