Есеп: 12 заттың массасы берілген. Ең ауыры мен жеңілін тауып, ауыры жеңілден нешеге артық екенін анықтау.
Program esep_1;
Var A: array [1..12] of integer; i, max, min, S: integer;
Begin
For i:= 1 to 12 do
Readln(a[i]);
Min:= A[1];
Max:= A[1];
For i:= 2 to 12 do
Begin
If Max
If Min A[i] Then Min:= A[i];
End;
S:= Max - Min;
Writeln(‘ауыры женилден ’, S, ‘ауыр’ );
Readln;
End.
Жаңа тақырыпты түсіндіру. (15 мин) Массивті өсу реті бойынша реттеу.
1-мысал. Сыныптағы оқушылардың бойларының ұзындығы массивте сақталған. Бойларының ұзындығын өсу реті бойынша орналастыр.
1-әдіс.
Алг өсу (арг бүт n, бүткес A[1:n],
нәтбүткес А[1:n])
Басыбүт і, j, c, m, min
Енгізу n, А
Үшін і бастап 1 дейін (n-1)
Цб
Min:= A[i]; m:= i;
Үшін j бастап (i+1) дейін (n)
Цб
Егер Min A[j]
Онда Min:= A[j]; m:= j
Бітті
Program osy;
Var A: array [1..100] of integer;
i, j, c, m, n, Min: integer;
Begin
Readln(n);
For i:= 1 to n do
Readln(A[i]);
For i:= 1 to (n-1) do
Begin
Min:= A[i]; m:= i;
For j:= (i+1) to n do
If Min A[j] Then begin Min:=A[j]; m:=j; end;
Цс
Цс
c:= A[i]; A[i]:= Min; A[m]:= c
Шығару А
Соңы.
c:= A[i]; A[i]:= Min; A[m]:= c;
End;
For i:= 1 to n do
Write(A[i]: 5);
Readln;
End.
2- әдіс. Көпіршік әдісімен:
Кестенің көрші A[j] және A[j+1] элементтерін салыстырады.
Егер олар реттелмеген болса, онда бұл 2 элементтің орны ауыстырылады.
Бұл әрекеттер n-1 рет қайталану керек.
Алг өсу2 (арг бүт n, бүткес A[1:n],
нәтбүткес А[1:n])
Басыбүт і, j, c
Енгізу n, А
Үшін і бастап 1 дейін (n-1)
Цб
Үшін j бастап 1 дейін (n-i)
Цб
Егер A[j] A[j+1]
Онда c:= A[j];
A[j]:= A[j+1]; A[j+1]:= c
Бітті
Цс
Цс
Шығару А
Соңы.
Program osy2;
Var A: array [1..100] of integer;
i, j, c, n: integer;
Begin
Readln(n);
For i:= 1 to n do
Readln(A[i]);
For i:= 1 to (n-1) do
Begin
For j:= 1 to (n-i) do
If A[j] A[j+1] Then begin c:= A[j];
A[j]:= A[j+1]; A[j+1]:= c; end;
End;
For i:= 1 to n do
Write(A[i]: 5);
Readln;
End.
Массивті кему реті бойынша реттеу.
1-әдіс.
Алг кему (арг бүт n, бүткес A[1:n],
нәтбүткес А[1:n])
Басыбүт і, j, c, m, max
Енгізу n, А
Үшін і бастап 1 дейін (n-1)
Цб
Max:= A[i]; m:= i;
Үшін j бастап (i+1) дейін (n)
Цб
Егер Max A[j]
Онда Max:= A[j]; m:= j
Бітті
Цс
Цс
c:= A[i]; A[i]:= Max; A[m]:= c
Шығару А
Соңы.
Program kemy;
Var A: array [1..100] of integer;
i, j, c, m, n, Max: integer;
Begin
Readln(n);
For i:= 1 to n do
Readln(A[i]);
For i:= 1 to (n-1) do
Begin
Max:= A[i]; m:= i;
For j:= (i+1) to n do
If Max
c:= A[i]; A[i]:= Max; A[m]:= c;
End;
For i:= 1 to n do
Write(A[i]: 5);
Readln;
End.
2- әдіс. Көпіршік әдісімен:
Алг кему2 (арг бүт n, бүткес A[1:n],
нәтбүткес А[1:n])
Басыбүт і, j, c
Енгізу n, А
Үшін і бастап 1 дейін (n-1)
Цб
Үшін j бастап 1 дейін (n-i)
Цб
Егер A[j] A[j+1]
Онда c:= A[j];
A[j]:= A[j+1]; A[j+1]:= c
Бітті
Цс
Цс
Шығару А
Соңы.
Program kemy2;
Var A: array [1..100] of integer;
i, j, c, n: integer;
Begin
Readln(n);
For i:= 1 to n do
Readln(A[i]);
For i:= 1 to (n-1) do
Begin
For j:= 1 to (n-i) do
If A[j]
A[j]:= A[j+1]; A[j+1]:= c; end;
End;
For i:= 1 to n do
Write(A[i]: 5);
Readln;
End.
Бекіту. (10 мин)
Мектеп жарысында кросс нәтижелері жазылып алынды. Оқушылардың көрсеткен нәтижелерін кему реті бойынша орналастырыңдар да, олардың аты-жөнін көрсеткен нәтижелерінің ретінде басып, оқушылардың қайсысы 1-ші, 2-ші, 3-ші орын алғанын анықтаңдар.
Program kemy3;
Var A: array [1..100] of integer; B: array [1..100] of string;
i, j, c, m, n, Max: integer; s: string;
Begin
Readln(n);
For i:= 1 to n do
Readln(A[i]);
For i:= 1 to (n-1) do
Begin
Max:= A[i]; m:= i;
For j:= (i+1) to n do
If Max
c:= A[i]; A[i]:= Max; A[m]:= c;
s:= B[i]; B[i]:= Max; B[m]:= s;
End;
Writeln(‘орындарды болу’);
For i:= 1 to n do
Writeln(B[i], A[i]: 10);
Readln;
End.
Қорытындылау. (5 мин)
Өсу және кему реті бойынша реттеу алгоритмдері қалай орындалады?
Үй тапсырмасын беру. (2 мин)
Кітаптың 98-беттегі таңдау арқылы сұрыптау әдісін оқып, алгоритмін қарастыру және осы алгоритмге қарап Pascal тіліндегі программасын жазып келу.