нц пока <условие
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]
Имеется список учеников класса (все фамилии различны). Каждый ученик
представил список одноклассников, у которых он был в гостях. Определите:
а) есть ли в классе ученик, который побывал в гостях у всех одноклассников,
кроме одного;
б) есть ли в классе хотя бы одна пара учеников, которые не были в гостях
друг у друга.