160 likes | 346 Views
תרגיל #1 פתרונות. שאלה #1. יש לקלוט 10 מספרים למערך. לאחר מכן יש להעתיק את המספרים אשר נמצאים במקומות הזוגיים למערך שני שהוא בגודל 5. את המספרים אשר נמצאים במקומות האי-זוגיים במערך הראשון יש להעתיק למערך שלישי בגודל 5 . יש צורך להתחיל כל מערך במקום ה0 (ולא במקום 1). פתרון #1. Module Module1
E N D
שאלה #1 • יש לקלוט 10 מספרים למערך. לאחר מכן יש להעתיק את המספרים אשר נמצאים במקומות הזוגיים למערך שני שהוא בגודל 5. את המספרים אשר נמצאים במקומות האי-זוגיים במערך הראשון יש להעתיק למערך שלישי בגודל 5. יש צורך להתחיל כל מערך במקום ה0 (ולא במקום 1).
פתרון #1 Module Module1 Sub Main() Dim i, a(9), b(4), c(4), num1, num2 As Integer num1 = 0 num2 = 0 For i = 0 To 9 a(i) = Console.ReadLine Next For i = 0 To 9 If i Mod 2 = 0 Then b(num1) = a(i) num1 = num1 + 1 Else c(num2) = a(i) num2 = num2 + 1 End If Next Console.WriteLine("Zugi index") For i = 0 To num1 - 1 Console.Write(" {0},", b(i)) Next Console.WriteLine() Console.WriteLine("E Zugi index") For i = 0 To num2 - 1 Console.Write(" {0},", c(i)) Next Console.ReadKey() End Sub End Module
פתרון #2 Module Module1 Sub Main() Dim i, a(9), b(4), c(4) As Integer For i = 0 To 9 a(i) = Console.ReadLine Next For i = 0 To 9 If i Mod 2 = 0 Then b(i \ 2) = a(i) Else c(i \ 2) = a(i) End If Next Console.WriteLine("Zugi index") For i = 0 To 4 Console.Write(" {0},", b(i)) Next Console.WriteLine() Console.WriteLine("E Zugi index") For i = 0 To 4 Console.Write(" {0},", c(i)) Next Console.ReadKey() End Sub End Module
שאלה #2 יש לבנות שני מערכים חד ממדיים. יש למלא את המערך הראשון במחרוזות. (לנוחות, אפשר להניח שיש לך מערך קבוע בגודל 10.) לאחר מילוי המערך הראשון יש למלא במערך השני את אורך המחרוזת שנמצאת במערך הראשון באינדקס המקביל.
פתרון Module Module1 Sub Main() Dim a(9) As String Dim i, b(9) As Integer For i = 0 To 9 a(i) = Console.ReadLine Next For i = 0 To 9 b(i) = Len(a(i)) Next For i = 0 To 9 Console.Write("{0},", a(i)) Next Console.WriteLine("") For i = 0 To 9 Console.Write("{0},", b(i)) Next End Sub End Module
פתרון נוסף Module Module1 Sub Main() Dim arrS(9) As String Dim lens(9) As Integer Dim i As Integer For i = 0 To arrS.Length - 1 arrS(i) = Console.ReadLine() Next For i = 0 To lens.Length - 1 lens(i) = arrS(i).Length Next For i = 0 To arrS.Length - 1 Console.WriteLine(arrS(i) & ",") Next For i = 0 To lens.Length - 1 Console.WriteLine(lens(i) & ",") Next End Sub End Module
שאלה #3 . יש לכתוב פונקציה המקבלת מערך של מספרים (לאו דווקא שלמים) ומחזירה את המינימום שביניהם. הפרוטוטייפ של הפונקציה הוא: Function Min(ByVal x() As Decimal) As Integer
פתרון Module Module1 Sub Main() Dim i, x(9) As Decimal For i = 0 To 9 x(i) = Console.ReadLine Next Console.WriteLine("the minimum is:" & Min(x)) End Sub Function Min(ByVal x() As Decimal) As Decimal Array.Sort(x) 'Min = x(0) ' Do NOT do this! Return x(0) End Function End Module
פתרון Module Module1 Sub Main() Dim i, x(9) As Decimal For i = 0 To 9 x(i) = Console.ReadLine Next Dim val As Integer = Min(x) Console.WriteLine("the minimum is:" & val) Console.ReadKey() End Sub Function Min(ByVal x() As Decimal) As Decimal Dim temp As Decimal= x(0) Dim i As Integer = 0 For i = 1 To x.Length() - 1 If x(i) < temp Then temp = x(i) End If Next Return temp End Function End Module
שאלה #4 יש לכתוב פונקציה המקבלת מערך של מספרים (דווקא שלמים) ומדפיסה את העצרת של כל המספרים במערך. הפרוטוטייפ של הפונקציה הוא: Sub PrintAtzeret(ByVal x() As Integer)
Module Module1 Sub Main() Dim x() As Integer = {1, 2, 4, 5, 7} PrintAtzeret(x) Console.ReadKey() End Sub Sub PrintAtzeret(ByVal x() As Integer) Dim num, j, atseret(4) As Integer For i = 0 To 4 num = x(i) atseret(i) = 1 For j = 1 To num atseret(i) = atseret(i) * num num = num - 1 Next Console.WriteLine(" aatseret shel aeivar a {0} hi: {1}", i + 1, atseret(i)) Next End Sub End Module פתרון
יותר טוב? Module Module1 Sub Main() Dim i, x(4) As Integer For i = 0 To 4 x(i) = Console.ReadLine Next PrintAtzeret(x) Console.ReadKey() End Sub Sub PrintAtzeret(ByVal x() As Integer) Dim num, j, atseret(x.Length) As Integer j = x.Length For i = 0 To x.Length - 1 num = x(i) atseret(i) = 1 For j = 1 To num atseret(i) = atseret(i) * num num = num - 1 Next Console.WriteLine(" aatseret shel aeivar a {0} hu: {1}", i + 1, atseret(i)) Next End Sub End Module
שאלה #5 כתוב פונקציה הבודקת אם מערך הוא סימטרי. הפונקציה יחזיר את הערך הבוליאני TRUE אם הוא סימטרי, וFALSE אחרת. הפרוטוטיפ הוא: Function Compare(ByVal x() As Integer) As Boolean
פתרון Module Module1 Sub Main() Dim x(4), i AsInteger For i = 0 To 4 x(i) = Console.ReadLine Next Console.WriteLine(Compare(x)) EndSub Function Compare(ByVal x() AsInteger) AsBoolean Dim k AsInteger = x.Length - 1 Compare = True For i = 0 To x.Length - 1 If x(i) <> x(k) Then return False EndIf k = k - 1 Next return True EndFunction EndModule
פתרון Module Module1 Sub Main() Dim x() As Integer = {1, 2, 2, 1} Dim y() As Integer = {1, 2, 1, 1} Console.WriteLine(Compare(x)) Console.WriteLine(Compare(y)) End Sub Function Compare(ByVal x() As Integer) As Boolean Dim k As Integer = x.Length - 1 For i = 0 To x.Length - 1 If x(i) <> x(k) Then return False End If k = k - 1 Next return True End Function End Module