פתרונות למתכונת א

2006 – ‫פתרונות למתכונת א‬
1 ‫שאלה‬
‫משפט הבא בביצוע‬
Tennis:=3
3
Units:=0
Num:=tens*10+units
While…
Tennis:=tens+1
4
Units:=tebs-3
Num:=tens*10+units
While…
Tennis:=tens+1
5
Units:=tebs-3
Num:=tens*10+units
While…
Writeln(num)
tens
units
num
?
?
?
‫פלט‬
Num<99 and tennis+units<>7
0
30
true
1
41
true
2
52
false
52
52 ‫ הפלט הוא‬.‫א‬
‫ וסכום‬30 -‫ גדול מ‬:‫ספרתי הראשון שמקיים תנאים הבאים‬-‫ מטרת הקטה למצוא מספר דו‬.‫ב‬
.‫ מספרת אחדות‬3-‫ כמו כן ספרת עשרות גדולה ב‬, 7-‫ספרותיו שווה ל‬
. 2 ‫שאלה‬
)‫ לכן יחזר אמת‬,‫ יקבל שקר‬T ( writeln(BOL(5 ,9)) .‫א‬
)‫ לכן יחזר שקר‬,‫ יקבל אמת‬T ( writeln( BOL(2 ,9)) .‫ב‬
3 ‫שאלה‬
Program ex3;
Var x,a,b,I, new:integer;
Begin
For i:=10 to 99 do
Begin
Readln(x);
A:=x mod 10;
B:=x div 10;
New:=a*1000+b*100+a*+10+b;
Writeln(new);
End
End.
)4‫י‬-‫ דרך ג(של דניאלה‬-4 ‫שאלה‬
Program ex4_c;
Count n=100;
Var a:array[1..n] of
integer; x,count:integer;
Begin
Count:=0;
For i:=1 to n do
Begin
Readln(x);
If x<0 then
A[i]:=0
Else
A[i]:=1;
End;
For i:=1 to n-1 do
Begin
If a[i]<>a[i+1] then
Count:=count+1;
end;
writeln(count);
End
‫ דרך ב‬-4 ‫שאלה‬
‫ – דרך א‬4 ‫שאלה‬
Program ex4_b;
Program ex4_a;
Var
Var x,a,b,siman:integer;
x,a,b,siman1,siman2,count:integer; Begin
Begin
Siman:=0;
Readln(a);
Readln(a);
If a<>0 then Siman1:=1
For i:=2 to 100 do
Else Siman1:=2;
Begin
Count:=0;
Readln(b);
For i:=2 to 100 do
If a*b<0 then
Begin
Siman:=siman+1;
Readln(b);
a:=b;
If b<>0 then
end;
Siman1:=1
writeln(siman);
Else
End.
Siman1:=2
If siman1<>siman2 then
count:=count+1;
a:=b;
end;
writeln(count);
End.
5 ‫שאלה‬
-3
5
5
9
3
-19
‫משפט הבא בביצוע‬
For …
M[y,y+1]:=y
y
M[1,2] M[2,3]
M[3,4]
8
2
12
2
0
5
1
19
0
8
-9
-17
M[4,5]
1
1
2
2
M[y,y+1]:=y
3
3
M[y,y+1]:=y
4
M[y,y+1]:=y
Y:=3
M[y+1,5]:=m[5,y+1]
4
3
15
6
2
3
3
15
20
5
0
3
15
5
-98
7‫שאלה‬
‫דרך ב‬
Program ex7b;
Var n:integer;
Function max_num(x:integer);
Var a,b,c,max,mini:integer;
Begin
A:=x mod 10;
B:=x div 10 mod 10;
C:=x div 100;
If (a>=b) and (a>=c) then
Max:=a
Else
If (b>=a) and (b>=c) then
Max:=b
Else
Max:= c;
If (a<=b) and (a<=c) then
Mini:=a
Else
If (b<=a) and (b<=c) then
mini:=b
Else
mini:= c;
if (a<=max) and (a>=mini) then
max_num:=max*100+a*10+mini
else
if (b<=max) and (b>=mini) then
max_num:=max*100+b*10+mini
else
max_num:=max*100+c*10+mini
End;
Begin
Readln(n);
While n>0 do
begin
if (n div 100>=1) and (n div 100<=9) then
writeln(max(n));
readln(n);
end.
‫דרך א‬
Program ex7a;
Var n:integer;
Function max(x:integer);
Var a,b,c:integer;
Begin
A:=x mod 10;
B:=x div 10 mod 10;
C:=x div 100;
If (a>=b) and (b>=c) then
Max:=a*100+b*10+c
Else
If (a>=c) and (c>=b) then
Max:=a*100+c*10+b
Else
If (b>=a) and (a>=c) then
Max:=b*100+a*10+c
Else
If (b>c) and (c>a) then
Max:=b*100+c*10+a
Else
If (c>a) and (a>b) then
Max:=c*100+a*10+b
Else
Max:=c*100+a*10+b
End;
Begin
Readln(n);
While n>0 do
begin
if (n>=100) and (n<=999) then
writeln(max(n));
readln(n);
end.
‫דרך ג‬
Function max_num(x:integer);
Var a:array[1..3] of integer;:integer;
Begin
A[1]:=x mod 10;
A[2]:=x div 10 mod 10;
A[3]:=x div 10;
End;
Max:=a[1];
Mini:=a[1];
Medium:=a[1];
For i:=2 to 3 do
Begin
If a[i]>=max ten
Max:=a[i];
If a[i]<=mini ten
mini:=a[i];
if (a[i]>=mini) and (a[i]<=max) then
medium:=a[i];
end;
max_num:=max*100+medium*10+min;
end;
8 ‫שאלה‬
2 ‫בקבוק כמספר‬, 1 ‫ניתן לסמן סוג שהוא פחית כמספר‬
‫ – קטן‬2 , ‫ גדול‬-1 :‫כנ''ל לגבי גודל‬
,‫ מונה פחיות גדולות‬-Cp_big ,‫ מונה בקבוקים גדולים‬-Cb_big
,‫ מונה פחיות קטנות גדולות‬-Cp_small , ‫ מונה בקבוקים קטנים‬-Cb_small
Program ex8;
Var sug,size, Cb_big, Cp_big,
Cb_small,
Cp_small,sum,shkalim,agorot:integer;
Begin
Readln(sug);
Cb_big:=0;
Cp_big:=0;
Cb_small:=0;
Cp_small:=0;
Sum:=0;
While sug<>9 do
Begin
Readln(size);
Case sug of
1: case size of
1:
begin
sum:=sum+15 ;
cb_small:=cp_small+1;
end;
2:
begin
sum:=sum+25 ;
cb_big:=cp_big+1;
end ;
2:
Program ex8;
Var sug,size, Cb_big, Cp_big, Cb_small,
Cp_small,sum,shkalim,agorot:integer;
Begin
Readln(sug);
Cb_big:=0;
Cp_big:=0;
Cb_small:=0;
Cp_small:=0;
Sum:=0;
While sug<>9 do
Begin
Readln(size);
Case sug of
1: begin
if size=1 then
begin
sum:=sum+15 ;
cb_small:=cp_small+1;
end
else
begin
sum:=sum+25 ;
cb_big:=cp_big+1;
end ;
2:
begin
if size=1 then
case size of
1:begin
sum:=sum+10 ;
cp_small:=cp_small+1;
end;
2:
begin
sum:=sum+20 ;
cp_big:=cp_big+1;
end ;
end;
writeln(sug);
end;
writeln(sum);
if (cb_big>=5) and (cp_big>=3) then
begin
writeln('more then 5 big bottle
and 3 big pahiot');
sum:=sum+3;
shkalim:= sum div 100;
agorot:=sum1 mod 100;
if agorot>0 then
shkalim:=shkalim+1;
end;
writeln(shkalim);
end.
begin
sum:=sum+10 ;
cp_small:=cp_small+1;
end
else
begin
sum:=sum+20 ;
cp_big:=cp_big+1;
end ;
end;
writeln(sug);
end;
writeln(sum);
if (cb_big>=5) and (cp_big>=3) then
begin
writeln('more then 5 big bottle and
3 big pahiot');
sum:=sum+3;
shkalim:= sum div 100;
agorot:=sum mod 100;
if agorot>0 then
shkalim:=shkalim+1;
end;
writeln(shkalim);
end.
10 ‫שאלה‬
9 ‫שאלה‬
‫פונקציות בפיתרון‬/‫משימות בהתאם לפרוצדורות‬-‫חלוקה לתת‬
Program ex10;
Const n=10;
Type my_arr=array[1..n] of integer;
Var cars:my_arr;
Procedure ipus(var cars:my_arr);
‫ הלא מאותחל‬CARS ‫הפרוצדורה מקבלת מערך צוברים‬:‫ט''כ‬
CARS ‫הפרוצדורה מאתחלת באפסים מערך צוברים‬:‫ט''י‬
Var i:integer;
Begin
For i:=1 to n do
Cars[i]:=0;
End;
Procedure kelet(var cars:my_arr);
Var I,j,car:integer;
‫ מאופס‬CARS ‫הפרוצדורה מקבלת מערך צוברים‬:‫ט''כ‬
‫הפרוצדורה קולטת מספרי רכבים לפי סדר הגעתם ובהתאם‬:‫ט''י‬
‫מעדכנת מספר נקודות כולל עבור כל רכב במערך צוברים‬
CARS
Program ex9;
Const n=6;
Type my_arr=array[1..n] of integer;
Var ulamot:my_arr;
Procedure ipus(var ulamot:my_arr);
‫ הלא‬ulamot ‫הפרוצדורה מקבלת מערך צוברים‬:‫ט''כ‬
‫מאותחל‬
‫הפרוצדורה מאתחלת באפסים מערך צוברים‬:‫ט''י‬
ulamot
Var i:integer;
Begin
For i:=1 to n do
ulamot [i]:=0;
End;
Procedure kelet(var ulamot:my_arr);
ulamot ‫הפרוצדורה מקבלת מערך צוברים‬:‫ט''כ‬
‫מאותחל באפסים‬
‫הפרוצדורה קולטת כרטיסים לקונה ובהתאם‬:‫ט''י‬
Begin
For i:=1 to 7 do
For j:=1 to n do
Begin
Readln(car);
Cars[car]:=cars[car]+(n+1-j);
End;
End;
Function max_point(cars:my_arr):integer;
CARS ‫הפונקציה מקבלת מערך צוברים‬:‫ט''כ‬
‫הפונקציה מחזירה מספר נקודות המקסימלי שהצטברו בשבוע‬:‫ט''י‬
Var I,max:integer;
Begin
Max:=cars[1];
For i:=2 to n do
If cars[i]>max then
Max:=cars[i]
Max_point:=max;
End;
Procedure Winners(cars:my_arr);
ulamot ‫מעדכנת כמות המקומות במערך צוברים‬
Var n_ulam,tic:integer;
Begin
Readln(n_ulam);
While (n_ulam >0) and (n_ulam<=6) do
Begin
Readln(tic);
Ulamot[n_ulam]:= Ulamot[n_ulam]+tic;
Readln(n_ulam);
End;
End;
Procedure pelet(ulamot:my_arr);
Ulamot ‫ הפרוצ' מקבלת מערך צוברים‬:‫ט''כ‬
‫הפרוצ' מדפיסה עולמות שהקרנה לא תתקיים‬:‫ט''י‬
,‫כמה מקומות פנויים ישנם באולמות אחרים‬,‫בהם‬
‫כמה פיצות וארגזים יש לחלק לילדים‬
Var I,pizot,argazim:integer;
Begin
For i:=2 to n do
CARS ‫הפרוצדורה מקבלת מערך צוברים‬:‫ ט''כ‬If ulamot[i]<10 then
‫הפרוצדורה מדפיסה מספרי רכבים אשר ניצחו‬:‫ט''י‬
Writeln('no show in ulam num:',i)
Var I,max:integer;
Else
Begin
Writeln('free places:',200-a[i]);
Max:= max_point(cars);
Pizot:=ulamot[1] div 8;
For i:=1 to n do
If ulamot[1] mod 8>0 then
If cars[i]=max then
Pizot:=pizot+1;
Writeln('num of car:',i)
Argazim:= ulamot[1] div 20;
End;
If ulamot[1] mod 20>0 then
Procedure pahot_20(cars:my_arr);
Argazim:= Argazim+1;
CARS ‫הפרוצדורה מקבלת מערך צוברים‬:‫ט''כ‬
'‫ נק‬20-‫הפרוצדורה מדפיסה מספרי רכבים אשר צברו פחות מ‬:‫ ט''י‬End;
Begin{main}
Var I:integer;
Ipus(ulamot);
Begin
Kelet(ulamot);
For i:=1 to n do
pelet(ulamot);
If cars[i]<20 then
End.
Writeln('num of car:',i)
End;
Begin{main}
Ipus(cars);
Kelet(cars);
Winners(cars);
Pahot_20(cars);
End.