| нц пока <условие
1>
тело внешнего цикла . . . . . . .
кц |
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
Школьный АЯ
алг Равенство(арг цел N, арг цел таб A[1:N],
рез лит Otvet)
нач цел i, j, лит Flag
i:=1; Flag:="Нет"
нц пока (i<=N–1) и (Flag="Нет")
| цикл по первому числу из пары
j:=i+1
нц пока (j<=N) и (Flag="Нет")
| цикл по второму числу из пары
если A[i]=A[j] | проверка равенства чисел
то Flag:="Да"
иначе j:=j+1
все
кц
i:=i+1
кц
если Flag="Да"
то Otvet:="Есть совпадающие числа"
иначе Otvet:="Нет совпадающих чисел"
все
кон
|
![]() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Program Equal;
Uses Crt;
Type Mas = Array [1..20] of Integer;
Var A : Mas;
i, j, N : Integer;
Flag : Boolean;
{------------------------------------------}
Procedure InputOutput; {Описание процедуры ввода-вывода данных}
Begin ClrScr;
Write('N = '); ReadLn(N);
For i := 1 to N do
begin Write('A[' , i , '] = ') ; ReadLn(A[i]) end;
WriteLn; WriteLn('Массив А');
For i := 1 to N do Write(A[i] : 4);
WriteLn; WriteLn
End;
{------------------------------------------}
Procedure Search(Var A:Mas; Var Flag:Boolean); {Описание процедуры}
Begin {поиска решения }
i:=1; Flag:= FALSE;
While (i<=N-1) and not Flag do {цикл по первому числу из пары}
begin
j:=i+1;
While (j<=N) and not Flag do {цикл по второму числу из пары}
If A[i]=A[j] then Flag:=TRUE else j:=j+1;
i:=i+1
end;
End;
{------------------------------------------}
BEGIN
InputOutput; {вызов процедуры ввода-вывода данных }
Search(A, Flag); {вызов процедуры поиска решения задачи}
WriteLn( 'О т в е т : ');
If Flag then WriteLn('Есть совпадающие числа.' )
else WriteLn('Нет совпадающих чисел.');
ReadLn
END.
CLS
INPUT "N = ", N : DIM A(N) ' ввод массива А
FOR i = 1 TO N PRINT "A(" ; i ; ") = " ;
INPUT A(i)
NEXT i
PRINT : PRINT "Массив А" ' вывод массива А
FOR i = 1 TO N
PRINT A(i) ;
NEXT i : PRINT
i = 1 : Flag = 0 ' поиск совпадающих чисел
WHILE (i <= N - 1) AND (Flag = 0)
j = i + 1
WHILE (j <= N) AND (Flag = 0)
IF A(i)=A(j) THEN Flag=1 ELSE j=j+1
WEND
i = i + 1
WEND
PRINT : PRINT "О т в е т :"
IF Flag = 1 THEN
PRINT "Есть совпадающие числа."
ELSE PRINT "Нет совпадающих чисел."
END IF
END
|
|
|
|
||
|
|
| |||
|
| ||||
Школьный АЯ
алг Ниже диагонали (арг цел N, арг цел таб
A[1:N, 1:N], рез лит Otvet)
нач цел i, j, лит Flag
Flag:="Нет"; i:=2
нц пока (i< =N) и (Flag="Нет") | цикл по строкам
j:=1
нц пока (j<i) и (Flag="Нет")
| цикл по элементам строки
если A[i, j]<0 | условие прерывания циклов
то Flag:="Да"
иначе j:=j+1 | продвижение по строке
все
кц
i:=i+1 | переход на новую строку
кц
если Flag="Да"
то Otvet:="Есть отрицательные ниже диагонали"
иначе Otvet:="Нет отрицательных ниже диагонали"
все
кон |
![]() |
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Program UnderDiagonal;
Uses Crt;
Type Mas = Array [1..10, 1..10] of Integer;
Var A : Mas;
N, i, j : Integer;
Flag : Boolean;
{-----------------------------------}
Procedure InputOutput(Var A : Mas); {описание процедуры }
Begin {ввода-вывода данных}
ClrScr;
Write('Количество строк и столбцов - '); ReadLn(N);
For i := 1 to N do
For j := 1 to N do
begin Write('A[' , i , ', ' , j , ']= ? ');
ReadLn(A[i, j])
end; WriteLn;
WriteLn('Матрица :');
For i := 1 to N do
begin
For j := 1 to N do Write(A[i, j] : 5);
WriteLn
end; WriteLn
End; { of InputOutput }
{------------------------------------}
Procedure Solution(Var A : Mas); {описание процедуры поиска решения}
Begin
i := 2 ; Flag := FALSE;
While (i<=N) and not Flag do
begin
j:=1;
While (j<i) and not Flag do
If (A[i, j]<0)
then Flag:=TRUE
else j:=j+1;
i:=i+1
end;
End; { of Solution }
{--------------------------------------------}
Procedure OutResult;
Begin
WriteLn('О т в е т :');
Write('Среди элементов, лежащих ниже главной диагонали, ');
If Flag then WriteLn('есть отрицательные.')
else WriteLn('нет отрицательных.');
ReadLn
End; { of OutResult }
{--------------------------------------------}
BEGIN
InputOutput(A); {вызов процедуры ввода-вывода данных }
Solution(A); {вызов процедуры поиска решения задачи}
OutResult {вызов процедуры вывода результата }
END.
CLS : INPUT "Количество строк и столбцов матрицы = ", N
DIM A(N, N)
FOR i = 1 TO N
FOR j = 1 TO N
PRINT "A(" ; i ; ", " ; j ; ") = " ;
INPUT A(i, j)
NEXT j
NEXT i
CLS : PRINT "Матрица А"
FOR i = 1 TO N
FOR j = 1 TO N
PRINT A(i, j);
NEXT j : PRINT
NEXT i
i = 2 : Flag = 0
WHILE (i < = N) AND (Flag = 0)
j = 1
WHILE (j < i ) AND (Flag = 0)
IF A(i, j) < 0 THEN Flag = 1 ELSE j = j + 1
WEND
i = i + 1
WEND
PRINT : PRINT "О т в е т :"
PRINT "Среди элементов матрицы, лежащих ниже главной диагонали, ";
IF Flag = 1 THEN
PRINT "есть отрицательные."
ELSE PRINT "нет отрицательных."
END IF
END
|
|
|
|
|
|||
|
|
|
|
||||
|
|
|
|
|
|||
| 1 | Есть |
|
|
|
|
|
|
|
Нет |
|
|
|
|
|
Школьный АЯ
алг Рост (арг цел N, M, арг целтаб S[1:N],
Z[1:M], резлит Otvet)
нач цел i, j, лит Flag
i:=1; Flag:="Нет"
нц пока (i<=N) и (Flag="Нет")
|цикл по игрокам "Спартака"
j:=1
нц пока (j<=M) и (Flag="Нет")
|цикл по игрокам "Зенита"
если S[i]=Z[j] |проверка равенства ростов
то Flag:="Да"
иначе j:=j+1
все
кц
i:=i+1
кц
если Flag="Да"
то Otvet:="Есть игроки одинакового роста"
иначе Otvet:="Нет игроков одинакового роста"
все
кон
|
![]() |
| Номер
теста |
|
|
|
|
|
S[i]=Z[j] |
|
|
|
|
"Нет"
"Да" |
|
1
2 |
|
|
|
|
|
-(кц) |
|
|||||
|
|
|
"Нет" |
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
Program EqualHeight;
Uses Crt;
Type Mas = Array [1..20] of Integer;
Var
Spart, Zenit : Mas; {массивы ростов игроков}
N, M, i, j : Integer; {N - к-во игроков "Спартака", M - "Зенита"}
Flag : Boolean;
Name : String; {название команды}
{------------------------------------------}
Procedure Input(NCommand : Integer; Var Number : Integer; Var Rost:Mas);
{NCommand - номер команды (равен 1 или 2)}
Begin {описание процедуры ввода данных по команде}
If NCommand=1 then Name:='Спартак' else Name:='Зенит';
Write('Введите количество игроков команды ', Name, ': ');
ReadLn(Number);
WriteLn('Введите роста игроков:');
For i := 1 to Number do
begin Write(i, ' игрок - '); ReadLn(Rost[i]) end;
WriteLn
End;
{------------------------------------------}
Procedure Search; {описание процедуры поиска решения задачи}
Begin
i:=1; Flag:=FALSE;
While (i<=N) and not Flag do {цикл по игрокам Спартака}
begin
j:=1;
While (j<=M) and not Flag do {цикл по игрокам Зенита}
If Spart[i]=Zenit[j] then Flag:=TRUE else j:=j+1;
i:=i+1
end;
End;
{------------------------------------------------------------}
Procedure OutResult; {описание процедуры вывода результата}
Begin
Write('О т в е т : в командах Спартак и Зенит ');
If Flag then Write('есть игроки ') else Write('нет игроков ');
WriteLn('одинакового роста.');
ReadLn
End;
{------------------------------------------}
BEGIN ClrScr; {вызов процедур}
Input(1, N, Spart); {ввод данных для первой команды}
Input(2, M, Zenit); {ввод данных для второй команды}
Search; {поиск решения задачи}
OutResult {вывод результата}
END.
CLS INPUT "Введите количество игроков команды Спартак : " , N DIM Spart(N) PRINT "Введите роста игроков:" FOR i = 1 TO N PRINT i ; " игрок - " ; : INPUT Spart(i) NEXT i INPUT "Введите количество игроков команды Зенит : " , M DIM Zenit(M) PRINT "Введите роста игроков:" FOR i = 1 TO M PRINT i ; " игрок - " ; : INPUT Zenit(i) NEXT i i = 1 : Flag = 0 WHILE (i <= N) AND (Flag = 0) 'цикл по игрокам Спартака j = 1 WHILE (j <= M) AND (Flag = 0) 'цикл по игрокам Зенита IF Spart(i) = Zenit(j) THEN Flag = 1 ELSE j = j + 1 WEND i = i + 1 WEND PRINT "О т в е т : в командах Спартак и Зенит "; IF Flag = 1 THEN PRINT "есть игроки "; ELSE PRINT "нет игроков "; PRINT "одинакового роста." END
|
|
|
|
|
||||
|
|
|
|
|
|
|||
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Школьный АЯ
алг МоиШины (арг цел N, арг вещ таб Диам[1 : N] , Вес[1 : N] ,
арг вещ ДопДиам, ДопВес, рез цел Шина1, Шина2,
рез лит Otvet)
нач цел i, j, лит Flag
i:=1; Flag:="Нет"
нц пока (i< =N-1) и (Flag="Нет") | цикл по первой шине из пары
j:=i+1
нц пока (j< =N) и (Flag="Нет") | цикл по второй шине из пары
если (abs(Диам[i] - Диам[j]) <= ДопДиам) | условие соче-
и (abs(Вес[i] - Вес[j]) <= ДопВес ) | таемости шин
то Flag:="Да"; Шина1:=i; Шина2:=j
иначе j:=j+1
все
кц
i:=i+1
кц
если Flag="Да"
то Otvet := "По параметрам подходят друг другу "
+ Шина1 + "-ая и " + Шина2 + "-ая шины."
иначе Otvet := "Шин, подходящих друг другу, в партии нет."
все
кон
|
(i < N) и (Flag = "Нет") => (2) (abs(Диам[i] - Диам[j]) <= ДопДиам) и (abs(Вес[i] - Вес[j]) <= ДопВес) => (3)
|
![]() |
Program MyTyres;
Uses Crt;
Type Mas = Array [1..100] of Real;
Var
Number, i, j : Integer; { Number - количество шин }
Diameter, Weight : Mas; { массивы параметров шин }
First, Second : Integer; { номера отобранных шин }
Flag : Boolean;
D, W : Real; {D, W - допуски по параметрам}
{-------------------------------------------------------}
Procedure InputOutput; {описание процедуры ввода-вывода данных}
Begin
ClrScr;
Write('Количество шин : '); ReadLn(Number);
WriteLn('Параметры шин : ');
For i := 1 to Number do
begin
Write(i, '-ая шина: Диаметр - '); ReadLn(Diameter[i]);
Write(' Вес - '); ReadLn(Weight[i])
end; WriteLn;
Write('Допуск по диаметру : '); ReadLn(D);
Write('Допуск по весу : '); ReadLn(W);
WriteLn; WriteLn(' Пapаметры шин ');
WriteLn('N шины Диаметр Вес');
For i := 1 to Number do
WriteLn(i:4, Diameter[i]:10:1, Weight[i]:10:1);
WriteLn
End; { of InputOutput }
{----------------------------------------------------------}
Procedure YesNo(Var First, Second : Integer; Var Flag : Boolean);
Begin {описание процедуры поиска решения задачи}
i:=1; Flag := FALSE;
While (i<=Number-1) and not Flag do {цикл по первой шине из пары}
begin
j := i+1;
While (j<=Number) and not Flag do {цикл по второй шине из пары}
If (Abs(Diameter[i]-Diameter[j]) <= D)
and (Abs(Weight[i]-Weight[j]) <= W)
then begin Flag:=TRUE; First:=i; Second:=j end
else j := j+1;
i:=i+1
end;
End; {of YesNo }
{----------------------------------------------------------}
BEGIN
InputOutput; {Вызов процедуры ввода-вывода исходных данных}
YesNo(First, Second, Flag);{Вызов процедуры поиска решения задачи}
WriteLn('О т в е т :');
If Flag then WriteLn('По параметрам подходят друг другу ',
First, '-ая и ', Second, '-ая шины.')
else WriteLn('Шин, подходящих друг другу, в партии нет.');
ReadLn
END.
CLS : INPUT "Количество шин : " , Number
DIM Diam(Number), Weight(Number)
PRINT "Параметры шин :"
FOR i = 1 TO Number
PRINT i; "-ая шина: " ; : INPUT "Диаметр - " , Diam(i)
PRINT TAB(14);
INPUT " Вес - ", Weight(i)
NEXT i : PRINT
INPUT "Допуск по диаметру : " , D
INPUT "Допуск по весу : " , W
PRINT : PRINT TAB(11); "Пapаметры шин"
PRINT "N шины Диаметр Вес"
FOR i = 1 TO Number
PRINT TAB(3) ; i , Diam(i) , Weight(i)
NEXT i : PRINT
i = 1 : Flag = 0
WHILE (i <= Number-1) AND (Flag = 0)
j = i + 1
WHILE (j <= Number) AND (Flag = 0)
IF (ABS(Diam(i)-Diam(j))<=D) AND (ABS(Weight(i)-Weight(j))<=W) THEN
Flag = 1 : First = i : Second = j
ELSE j = j + 1
END IF
WEND
i = i + 1
WEND
PRINT : PRINT "О т в е т :"
IF Flag = 1 THEN
PRINT "По параметрам подходят друг другу ";
PRINT First; "-ая и "; Second; "-ая шины."
ELSE PRINT "Шин, подходящих друг другу, нет."
END IF
END
5.1. [Pascal | C | Basic] В заданной целочисленной матрице A(N, M) выведите на печать индексы первого положительного элемента, кратного заданному числу K. Если таких элементов в матрице нет, то выведите соответствующий текст. Элементы матриц просматривайте слева направо и сверху вниз.
5.2. [Pascal | C | Basic] В заданной целочисленной матрице A(N, M) замените первый отрицательный элемент максимальным элементом матрицы. Если отрицательных элементов нет, то выведите соответствующий текст. Элементы матриц просматривайте слева направо и сверху вниз.
5.3. [Pascal | C | Basic] Из заданной матрицы A(N, N) удалите строку, в которой находится первый отрицательный элемент. Элементы матриц просматривайте слева направо и сверху вниз.
5.4. [Pascal | C | Basic] В заданной матрице A(N, N) найдите индексы первого элемента, превосходящего среднее арифметическое всех элементов. Элементы матриц просматривайте слева направо и сверху вниз.
5.5. [Pascal | C | Basic] Из заданной матрицы A(N, N) удалите строку и столбец, в которых находится первый элемент, равный нулю. Полученную матрицу уплотните. Элементы матриц просматривайте слева направо и сверху вниз.
5.6. [Pascal | C | Basic] Если в заданной матрице A(N, N) есть хотя бы один элемент, больший ста, то элементы обеих диагоналей замените нулями.
5.7. [Pascal | C | Basic] Дана целочисленная матрица А(N, N). Найдите номер первой из её строк, которые начинаются с К положительных чисел подряд.
5.8. [Pascal | C | Basic] Элементы заданной матрицы A(N, N) переписывайте построчно в одномерный массив до тех пор, пока не встретится нулевой элемент.
5.9. [Pascal | C | Basic] Заданное натуральное число M представьте в виде суммы квадратов двух неравных натуральных чисел. В случае, если это невозможно, выведите соответствующее сообщение.
5.10. [Pascal | C | Basic]
Дана целочисленная матрица А(N, N). Просматривая её элементы в заданном
порядке, найдите первый чётный элемент и поменяйте его местами с диагональным
элементом той строки, в которой он находится. Порядок просмотра:
а) сверху вниз и справа налево;
б) снизу вверх и слева направо;
в) справа налево и снизу вверх.
5.11. [Pascal | C | Basic] Проверьте, удовлетворяет ли заданная матрица A(N, N) следующему условию: для всех i >1 и для всех j >1 верно неравенство
5.12. [Pascal | C | Basic] В заданном множестве точек на плоскости найдите пару точек, удалённых друг от друга на расстояние, большее заданного D.
5.13. [Pascal | C | Basic] Для заданной матрицы A(N, N) найдите хотя бы одно k, такое, что k-ая строка матрицы совпадает с k-м столбцом.
5.14. [Pascal | C | Basic] Даны три целочисленных массива A(N), B(M) и C(L). Найдите хотя бы одно число, встречающееся во всех трех массивах. Если таких чисел нет, выдайте соответствующее сообщение.
5.15*. [Pascal | C | Basic] Выберите три различные точки из заданного множества точек на плоскости так, чтобы внутри треугольника с вершинами в выбранных точках лежала ровно одна точка.
5.16. [Pascal | C | Basic]
В школе имеется три параллельных десятых класса. Даны списки десятиклассников,
содержащие фамилию и имя каждого ученика. Выясните:
а) в каких классах имеются однофамильцы;
б) в каких классах имеются тезки;
в) имеются ли в параллельных десятых классах однофамильцы;
г) в каких классах имеются ученики, у которых совпадают и имя и фамилия;
д) есть ли в десятых классах однофамильцы первого космонавта.
5.17. [Pascal | C | Basic]
В детском саду есть N мячей. Имеются сведения о диаметре и цвете каждого
мяча. Выясните:
а) есть ли среди мячей такой, что он не пройдет
в квадратное окошко площадью 900 см2;
б) есть ли мячи одинакового цвета или диаметра;
в) есть ли среди красных мячей такой, что его диаметр
превосходит средний диаметр всех мячей.
5.18*. [Pascal | C | Basic] В заданном множестве точек на плоскости найдите три точки, которые могут служить вершинами остроугольного треугольника.
5.19*. [Pascal | C | Basic] В заданном множестве точек на плоскости найдите четыре точки, которые могут служить вершинами квадрата.
5.20*. [Pascal | C | Basic] В заданном множестве точек на плоскости найдите четыре точки, которые могут служить вершинами ромба.
5.21*. [Pascal | C | Basic] В заданном множестве точек на плоскости найдите четыре точки, которые могут служить вершинами выпуклого четырёхугольника.
5.22. [Pascal | C | Basic]
Дана целочисленная квадратная матрица A(N, N). Проверьте,
являются ли все числа, расположенные выше главной и побочной диагоналей:
а) различными;
б) одинаковыми.
5.23. [Pascal | C | Basic] Дана целочисленная квадратная матрица A(N, N). Определите, имеется ли среди элементов, расположенных ниже ее главной и побочной диагоналей хотя бы одно составное двузначное число.
5.24. [Pascal | C | Basic] На плоскости даны две точки А(1, 1) и В(8, 1), а также N точек со своими координатами. Определитe, есть ли среди этих N точек хотя бы одна пара точек, которые являлись бы вершинами трапеции с большим основанием АВ.
5.25*. [Pascal | C | Basic] Дана квадpатная таблица А(N, N), элементами котоpой являются нули и единицы. Установите наличие в ней квадpата, строны которого состоят из М единиц (M<=N) и параллельны строкам или столбцам таблицы. Если такой квадpат найдется, то нужно вывести кооpдинаты его веpхнего левого угла.
5.26*. [Pascal | C | Basic] Известно, что в пачке банкнот есть одна фальшивая банкнота и ее подлинник, серии и номера которых совпадают. Найдите эти банкноты в пачке, замените их двумя резервными банкнотами с известными сериями и номерами, и затем перенумеруйте всю пачку, расположив банкноты в соответствии с алфавитным порядком их серий, а банкноты с одинаковыми сериями по возрастанию номеров.
5.27*. [Pascal | C | Basic]
Имеется список учеников класса (все фамилии различны). Каждый ученик
представил список одноклассников, у которых он был в гостях. Определите:
а) есть ли в классе ученик, который побывал в гостях у всех одноклассников,
кроме одного;
б) есть ли в классе хотя бы одна пара учеников, которые не были в гостях
друг у друга.