- •Практика алгоритмизации и программирования Предисловие
- •Настройки
- •Var Name: String; {Описание переменной Name строкового типа}
- •V, {объем цилиндра }
- •Input "Введите высоту цилиндра : ", h
- •Input "Введите радиус основания : ", r
- •Пример 1.3. Даны три точки на плоскости. Определить, какая из них ближе к началу координат. Система тестов
- •Демонстрация
- •Пример 1.4. Найти произведение цифр заданного целого четырехзначного числа. Система тестов
- •Демонстрация
- •Var Number, {заданное число}
- •I, j, k, l, {цифры числа}
- •Input "Введите четырехзначное число : ", Number
- •Система тестов
- •Демонстрация
- •Var a, b, c : Real; {a, b, c - коэффициенты уравнения}
- •X1, x2 : Real; {x1, x2 - корни }
- •Input "Введите количество тестов : ", nTest
- •Демонстрация
- •Var a1, b1, c1, {коэффициенты уравнения первой прямой}
- •X, y : Real; {координаты точки пересечения }
- •Результаты работы Pascal-программы:
- •Input "Введите количество тестов : ", nTest
- •Input ". Введите a1, b1, c1 : ", a1, b1, c1
- •Input " Введите a2, b2, c2 : ", a2, b2, c2
- •Задачи для самостоятельного решения
- •Алгоритмы, реализуемые с помощью циклов типа для
- •Демонстрация
- •Демонстрация
- •Пример 2.3. В баскетбольную команду могут быть приняты ученики, рост которых превышает 170 см. Составьте список кандидатов в команду из учеников класса. Система тестов
- •Демонстрация
- •Исполнение алгоритма
- •Input "Сколько всего учеников ? " , nPupil
- •Input "Рост - " , Height(I)
- •Пример 2.4. Для заданного X вычислить
- •Демонстрация
- •Пример 2.5. Дан массив X(n). Получить новый массив y(n) такой, что в нем сначала идут положительные числа, затем нулевые, и затем отрицательные из X. Тест
- •Демонстрация
- •Задачи для самостоятельного решения
- •Алгоритмы, реализуемые с помощью вложенных циклов типа для
- •Пример 3.1. Вычислить суммы элементов столбцов заданной матрицы a(n, m). Тест
- •Демонстрация
- •InputOutput; {вызов процедуры ввода-вывода исходных данных }
- •Input "Количество строк - ", n
- •Input "Количество столбцов - ", m
- •Пример 3.2. Подсчитать, сколько раз встречается в заданной целочисленной матрице a(n, m) максимальное по величине число. Тест
- •Демонстрация
- •InputOutput(a); {Вызов процедуры ввода-вывода матрицы}
- •Input "Количество столбцов - ", m
- •Демонстрация
- •InputOutput(a); {вызов процедуры ввода-вывода исходных данных}
- •Input "Количество строк - ", n
- •Input "Количество столбцов - ", m
- •Пример 3.4. Элементы заданного числового массива a1, a2, ..., aN упорядочить по возрастанию. Тест
- •Демонстрация
- •Input; {вызов процедуры ввода массива }
- •Пример 3.5. В массиве a(n, n) вычислить две суммы элементов, расположенных ниже и выше главной диагонали. Тест
- •Демонстрация
- •InputOutput; {Вызов процедуры ввода-вывода матрицы }
- •Задачи для самостоятельного решения
- •Алгоритмы, реализуемые с помощью циклов типа пока
- •Цикл типа пока с прерыванием
- •Цикл типа пока без прерывания
- •Пример 4.1. Определить, является ли заданная последовательность чисел a1 , a2 , ... , aN монотонно убывающей. Система тестов
- •Демонстрация
- •If Otvet then Write(’образует ’)
- •InputOutput; {вызов процедуры ввода-вывода}
- •Input "Количество элементов – ", n : dim a(n)
- •Система тестов
- •Демонстрация
- •Var X, y : Mas; {массивы координат точек }
- •I, nPoints : Integer; {nPoints – количество точек}
- •Пример 4.3. Определить, имеется ли среди элементов главной диагонали заданной целочисленной матрицы a(n, n) хотя бы один положительный нечётный элемент. Система тестов
- •Демонстрация
- •If Flag then WriteLn (’есть нечетные положительные.’)
- •InputOutput(a); {вызов процедуры ввода-вывода данных}
- •Демонстрация
- •Var m, {заданное число }
- •Input "Введите натуральное м : " , m
- •Пример 4.5. Включить заданное число d в массив a(n), упорядоченный по возрастанию, с сохранением упорядоченности. Система тестов
- •Демонстрация
- •Задачи для самостоятельного решения
- •Исполнение алгоритма
- •InputOutput; {вызов процедуры ввода-вывода данных }
- •If Flag then WriteLn('Есть совпадающие числа.' )
- •Пример 5.2. Дана целочисленная матрица a(n, n). Определить, имеются ли среди её элементов, лежащих ниже главной диагонали, отрицательные числа. Система тестов
- •Демонстрация
- •Исполнение алгоритма
- •If Flag then WriteLn('есть отрицательные.')
- •InputOutput(a); {вызов процедуры ввода-вывода данных }
- •Пример 5.3. Выяснить, есть ли в баскетбольных командах "Спартак" и "Зенит" игроки одинакового роста. Система тестов
- •Демонстрация
- •Исполнение алгоритма
- •Пример 5.4. Из партии шин отобрать две шины, диаметры которых отличаются не более, чем на d см, а вес — не более, чем на w грамм. Система тестов
- •Демонстрация
- •Задачи для самостоятельного решения
- •Алгоритмы, реализуемые с помощью комбинации циклов типа для и пока
- •Пример 6.1. В заданной целочисленной матрице a(n, m) найти количество строк, содержащих нули. Тест
- •Демонстрация
- •Пример 6.2. Дана целочисленная матрица a(n, m). Определить, встречается ли заданное целое k среди максимальных элементов столбцов этой матрицы. Система тестов
- •Демонстрация
- •Исполнение алгоритма
- •Демонстрация
- •Блок-схема (фрагмент)
- •Блок-схема (продолжение)
- •Исполнение алгоритма
- •InputOutput; {Вызов процедуры ввода-вывода }
- •If Flag then WriteLn('Это магический квадрат.')
- •Пример 6.4. Дана матрица a(n, n). Если хотя бы один элемент строки матрицы отрицателен, то все элементы этой строки заменить нулями. Тест
- •Демонстрация
- •Исполнение алгоритма
- •Var Flag : Boolean; {строки матрицы }
- •If Flag then {обнуление строки, содержашей}
- •InputOutput; {вызов процедуры ввода-вывода матрицы}
- •Задачи для самостоятельного решения
- •Алгоритмы обработки символьной информации
- •Типы данных, используемые для обработки символьной информации
Input "Сколько всего учеников ? " , nPupil
DIM SurName$(NPupil), Height(NPupil), Cand$(NPupil)
PRINT "Введите фамилии и рост учеников :"
FOR i = 1 TO NPupil
INPUT "Фамилия - " , SurName$(i)
Input "Рост - " , Height(I)
NEXT i : PRINT
K = 0
FOR i = 1 TO NPupil
IF Height(i) > 170 THEN K = K + 1 : Cand$(K) = SurName$(i)
NEXT i
IF K = 0 THEN
PRINT "В КЛАССЕ НЕТ КАНДИДАТОВ В КОМАНДУ."
ELSE
PRINT "КАНДИДАТЫ В БАСКЕТБОЛЬНУЮ КОМАНДУ :"
FOR i = 1 TO K
PRINT i ; ". " ; Cand$(i)
NEXT i
END IF
END
Пример 2.4. Для заданного X вычислить
Здесь n! = 1. 2. 3 .... n (читается как "n-факториал").
Тест
Данные |
Результат |
|
X=1 |
n=3 |
|
Демонстрация
Начало формы
Конец формы
Школьный АЯ
алг Сумма Ряда (арг вещ х, арг цел n, рез вещ S)
нач цел i, вещ P | P - очередное слагаемое
S := 1; P := 1
нц для i от 1 до n
P := - P*x /i | получение очередного слагаемого
S := S + P
кц
кон
Turbo Pascal Program SumUp; Uses Crt; Var x, S, P : Real; {P - очередное слагаемое} i, n : Integer; BEGIN ClrScr; Write('Введите n = '); ReadLn(n); Write('Введите x = '); ReadLn(x); WriteLn; S := 1; P := 1; For i := 1 to n do begin P := - P*x /i; {получение очередного слагаемого} S := S + P end; WriteLn('О т в е т : S = ', S : 7 : 3 ); ReadLn END. |
Блок-схема
|
QBasic CLS INPUT "Введите n = ", n INPUT "Введите x = ", x S = 1 : P = 1 FOR i = 1 TO n P = -P * x / i S = S + P NEXT i PRINT : PRINT "О т в е т : S = " ; S END |
Результат работы QBasic-программы
|
Пример 2.5. Дан массив X(n). Получить новый массив y(n) такой, что в нем сначала идут положительные числа, затем нулевые, и затем отрицательные из X. Тест
Данные |
Результат |
N=7 X=(-1, 2, 0, 4, -3,-2,0) |
Y=(2, 4, 0, 0, -1, -3, -2) |
Демонстрация
Начало формы
Конец формы
Школьный АЯ
алг Новый Порядок (арг цел N, арг вещ таб Х[1:N], рез вещ таб Y[1:N])
нач цел i, k | k - индекс массива Y
k := 0
нц для i от 1 до N | Занесение в Y положительных чисел из X
если X[i] > 0
то k := k+1; Y[k] := X[i]
все
кц
нц для i от 1 до N | Занесение в Y чисел, равных нулю, из X
если X[i] = 0
то k := k+1; Y[k] := X[i]
все
кц
нц для i от 1 до N | Занесение в Y отрицательных чисел из X
если X[i] < 0
то k := k+1; Y[k] := X[i]
все
кц
кон
Turbo Pascal Program NewOrder; Uses Crt; Var N, i, k : Integer; X, Y : Array [1..20] of Real; BEGIN ClrScr; Write('Введите N = '); ReadLn(N); For i := 1 to N do begin Write('X[ ', i, ' ] = '); ReadLn(X[i]) end; k:=0; For i := 1 to N do If X[i]>0 then begin k:=k+1; Y[k]:=X[i] end; For i := 1 to N do If X[i]=0 then begin k:=k+1; Y[k]:=X[i] end; For i := 1 to N do If X[i]<0 then begin k:=k+1; Y[k]:=X[i] end; Write('О т в е т : полученный массив'); For i := 1 to N do Write(Y[i] : 5 : 1); WriteLn; ReadLn END. |
Блок-схема (фрагмент)
|
QBasic
CLS : INPUT "N = "; N : DIM X(N), Y(N)
FOR i = 1 TO N
PRINT "X("; i; ") = "; : INPUT X(i)
NEXT i
k = 0
FOR i = 1 TO N
IF X(i) > 0 THEN k = k + 1 : Y(k) = X(i)
NEXT i
FOR i = 1 TO N
IF X(i) = 0 THEN k = k + 1 : Y(k) = X(i)
NEXT i
FOR i = 1 TO N
IF X(i) < 0 THEN k = k + 1 : Y(k) = X(i)
NEXT i
PRINT "О т в е т : полученный массив" ;
FOR k = 1 TO N
PRINT Y(k) ;
NEXT k : PRINT
END
