Алгоритмика в теории и практике
.pdf
5. Дано два массива А(5) и В(5). Сформируйте массив С(10), каждый четный элемент которого, равен сумме элементов А и В , а нечетный их разности.
Выведите на экран все массивы.
Решение:
Dim C(10): Data 10, 18, -5, 50, -6, -9, 45, 34, -12, 61 For k=1 to 10: Read C(k): Print C(k); :Next k: Print s=0: s1=0
For k=1 to 10
If C(k) mod 2 = 0 then s=s+1 else s1=s1+1: next k Dim A(s); B(s1):k1=1; k2=1
For k=1 to 10
If C(k) mod 2 = 0 then A(k1)=C(k): k1=k1+1 else B(k2)=C(k): k2=k2+1
Next k:
For k=1 to s : print A(k); : next k :Print For k=1 to s1: print B(k);:Next k
6. Результаты игр по футболу хранятся в массиве. Каждые три последовательных элемента массива содержат соответственно номер игры, количество забитых и количество пропущенных мячей. Определите и выведите в скольких играх разность забитых и пропущенных мячей больше трех
Решение:
Dim A(15) KOL=0
For k=1 to 15 step3 A(k)=N:N=N+1 A(k+1)=int(rnd(1)*10) A(k+2)=int(rnd(1)*10) Print A(k); A(k+1); A(k+2) Next k
For k=1 to 15 step 3
If (A(k+1)– (A(k+2))>3 then KOL= KOL+1 Next k
Print ''В'',KOL, «играх разность забитых и пропущенных мячей больше 3"
7. Составьте программу, подсчитывающую общее время удаления игроков хоккейной команды. Фамилии и штрафное время
61
7. Одномерные массивы
хранятся в соответствующих массивах. Определите суммарное штрафное время.
Решение:
DATA Иванов, Петров, Сидоров, ...
Dim A(10), B$(10)
For k=1 to 10
A(k)=int(rnd(1)*150)
S=S+ A(k):
Read B$(k)
Print A(k), B$(k);
Next k
Print ''Суммарное штрафное время равно''; S
8. Для анализа работы ГЭС собраны среднемесячные данные за год, хранящиеся в одномерном массиве. Изобразите данные в виде гистограммы на диапазоне от 100 до 300.
Решение:
Dim A(12) For k=1 to 12
10 f=int(rnd(1)*300
if f>300 or f<100 then 10 A(k)=f
Print A(k); Next k sh=0: x1=50
For k=1 to 12 Line(x1+sh,200)-(x1+10, A(k)),,B sh=sh+15
next k
9. Составьте программу формирования нового массива и вывода исходных и результирующих массивов в виде таблицы с шапкой, поясняющей содержимое столбцов
................................................................................
! ном ! заданные массивы ! новый !
................................................................................
! п/п ! 1 ! 2 ! массив !
................................................................................
Сформируйте два массива по 10 элементов в каждом датчиком случайных чисел. Получите третий массив по правилу: каждый
62
элемент нового массива равен разности соответствующих элементов исходных массивов. Найдите в новом массиве минимальное значение элементов и его номер.
Решение:
Dim A(10),B(10), C(10)
Print tab (6),"¹",tab(12)," 1 '',tab (22),'' 2 '', tab(30),''новый" For k=1 to 10
A(k)=int(rnd(1)*150)
B(k)=int(rnd(1)*150) C(k)= A(k)-B(k)
Print tab(5),k, tab(10), A(k), tab(20),B(k), tab(30),C(k)
Next k
min = C(1): n = 1 For k=1 to 10
If (C(k) >max then max=C(k);n=k Next k
Print ''максимальный элемент массива равен ''; max
Print ''номер максимального элемента '';т
10. Заполните массив С из 10 элементов положительными и отрицательными числами. Подожительные и нулевые элементы перепешите в массив A, отрицательные в массив B, предварительно определите размер массивов А и В.
Решение:
Dim C(10): Data 10, 18, -5, 50, -6, -9, 45, 34, -12, 61 For k=1 to 10: Read C(k): Print C(k); :Next k: Print s=0: s1=0
For k=1 to 10
If C(k)=>0 then s=s+1 else s1=s1+1: next k Dim A(s); B(s1):k1=1; k2=1
For k=1 to 10
If C(k)>=0 then A(k1)=C(k): k1=k1+1 else B(k2)=C(k): k2=k2+1 Next k:
For k=1 |
to s : print A(k); : |
next k :Print |
For k=1 |
to s1: print B(k);:Next k |
|
11. Задайте символьный массив. Найдите и выведите те элементы, которые имеют длину слова равную 5.
63
7. Одномерные массивы
Решение:
Dim A$(10):Data кот, паровоз, глина,......
For k=1 to 10:Read A$(k):Print A$(k),:Next k:Print
For k=1 to 10:If len(A$(k))=5 then Print A$(k):Next k
12. Задайте символьный массив и замените элементы, начинающиеся на букву А, максимальным по длине словом. Выведите полученный массив.
Решение:
Dim A$(10)
Data кот, паровоз, глина,......
For k=1 to 10:Read A$(k):Print A$(k), :Next k:Print m$=A$(1)
For k=1 to 10:If len(A$(k))>len(m$) then m$= A$(k)
Next k
For k=1 to 10:If mid$(A$(k,1,1))="a" then A$(k)=m$ Print A$(k),
Next k
13. Задайте символьный массив из 6 элементов и подсчитайте количество букв «к», содержащихся во всех элементах массива. Выведите массив и это количество.
Решение:
Dim A$(6)
Data кот, паровоз, глина,......
For k=1 to 6:Read A$(k):Print A$(k), :Next k:Print kol=0
For k=1 to 6
For s=1 to len (A$(k))
If mid$(A$(k),s,1)="ê" then kol=kol+1 Next s
Next k
Print ''количество букв о ='';kol
64
8.Двумерные массивы
Âдвумерном массиве каждый элемент фиксируется номером строки и столбца, на пересечениях которых он расположен. Положение элемента в двумерном массиве определяется двумя индексами. Они разделяются запятой. В качестве индексов могут использоваться любые арифметические выражения, константы, переменные. Если арифметическое выражение содержит дробную часть, то при определении индекса она отбрасывается. Появление отрицательного значения индекса вызывает сообщение об ошибке.
Для определения двумерного массива в программе используется тот же оператор DIM, только при определении размера необходимо указать два индекса — количество строк и столбцов: DIM A (5,7)
Данное описание предполагает, что в массиве с именем А будет 5 строк и 7 столбцов. При обращении к элементу двумерного массива необходимо указывать два индекса: номер строки и номер столбца.
Элемент двумерного массива А(3,6) равен 30.
При заполнении и выводе на экран элементов двумерных массивов необходимо использовать вложенные циклы. Внешний цикл будет определять номер строки, а внутренний номер столбца.
Ниже приведены примеры заполнения и вывода на экран элементов двумерного массива, а также некоторые программы по работе с этими массивами.
Примеры решения задач по теме
1. Напишите программу формирования и вывода массива произвольного размера так, чтобы каждый последующий элемент, на- чиная со второго, был больше предыдущего на 5. Первый элемент задайте датчиком случайных чисел.
65
8. Двумерные массивы
Решение:
CLS :Dim A(10,10):A(1,1)=int(rnd(1)*100)
For k=1 to 10:For ò=1 to 10 If k=1 and m=1 then10
If m=1 and k>1 then A(k,m)=A(k-1,10)+5 else A(k,m)=A(k,m-1)+5 10 Next m
Next k
For k=1 to 10
For m=1 to 10 Print A(k,m); Next m:Print
Next k End
2. Напишите программу формирования и вывода массива размером (6 9), каждые 3 последовательных элемента в строке которого составлены по следующему правилу:
1-ый — числу введенному с клавиатуры
2-ой — удвоенному индексу строки
3-ий — случайному однозначному числу
Решение:
Dim A(6,9)
For k=1 to 6
For m=1 to 9 step3
Input "ведите 1 элемент массива'';A(k,m)
A(k,m+1)= 2*k
A(k,m+2)= int(rnd(1)*10)
Next m
Next k
For k=1 to 6 :For m=1 to 9
Print A(k); Next m: Print
Next k
3. Напишите программу формирования массива размером 5х5 датчиком случайных чисел. Замените в нем нечетные значения элементов максимальным. Выведите исходный и измененный массивы.
Решение:
CLS :Dim A(5,5)
For k=1 to 5:For ò=1 to 5
66
A(k,m)=int(rnd(1)*100)
Print A(k,m);:Next m:Print: Next k
MAX=0
For k=1 to 5
For ò=1 to 5
IF A(k,m)>max then max=A(k,m)
Next m
Next k
Print ''Максимальное число массива ='';MAX
For k=1 to 5
For ò=1 to 5
IF A(k,m) mod 2<>0 THEN A(k,m)=max
Print A(k,m);
Next m
Next k
4. Составьте программу формирования одномерного массива из максимальных элементов строк двумерного массива, заданного датчиком случайных чисел.
Решение:
CLS :Dim A(10,10),B(10)
For k=1 to 10:For ò=1 to 10
A(k,m)=int(rnd(1)*100)
Print A(k,m);:Next m:Print: Next k
For k=1 to 10: min= A(k,1)
For ò=1 to 10
If A(k,m)<min then min=A(k,m)
Next m
B(k)= min:Next k
For k=1 to 10: print B(k):next k
5. Напишите программу, которая заполняет массив А(3,3) словами разного размера и заменяет самое короткое слово главной диагонали на максимальное по длине слово всего массива. Выведите исходный и измененный массив.
Решение:
CLS :Dim A$(5,5)
Data нота, краски, монитор, еж, клавиатура...
For k=1 to 5:For ò=1 to 5
67
8. Двумерные массивы
Read A$(k,m)
Print A$(k,m),:Next m:Print: Next k MAX$=A$(1,1)
For k=1 to 5 For ò=1 to 5
IF len( A$(k,m))>len (MAX$) THEN MAX$=A$(k,m) Next m
Next k
Print ''Максимальное по длине слово массива ='';MAX$ min$=A$(1,1)
For k=1 to 5
IF len (A$(k,k)) < min$ THEN min$= A$(k,k):km=k
Next k
Print ''Минимальное по длине слово на главной диагонали ='';min$ A$(km,km)=max$
For k=1 to 5:For ò=1 to 5
Print A$(k,m);:Next m:Print: Next k
6. Напишите программу, которая заполняет первую строку массива размером 2Х10 фамилиями врачей, а вторую их специальностями. Определите и выведите по запросу с клавиатуры фамилию нужного специалиста.
Решение:
CLS :Dim A$(2,10)
Data Иванов, Петров, Сидоров...
Data окулист, педиатр, стоматолог...
For ò=1 to 2 For n=1 to 10 read A$(m,n) print A$(m,n), next n
Print next n
Inpun"введите специальность врача" F$ For т=1 to 10
If A$(2,m)=F$ then Print A$(1,m) Next m
68
Содержание
Введение ........................................................................................ |
3 |
1. Операторы графики .................................................................... |
4 |
Примеры решения задач по теме ................................................. |
6 |
Основные команды оператора DRAW ......................................... |
7 |
Относительные координаты команды DRAW........................... |
10 |
Примеры решения задач по теме ............................................... |
11 |
2. Операторы ввода/вывода .......................................................... |
14 |
Величины, имя значение, тип .................................................... |
14 |
Запись простых арифметических выражений |
|
в линейной форме........................................................................ |
17 |
Оператор вывода информации ................................................... |
19 |
Оператор ввода информации INPUT......................................... |
21 |
Примеры решения задач по теме ............................................... |
22 |
3. |
Операторы условного перехода.................................................. |
29 |
|
Разберем следующие примеры:................................................... |
30 |
|
Примеры решения задач по теме ............................................... |
33 |
4. |
Операторы цикла...................................................................... |
40 |
|
Примеры решения задач по теме ............................................... |
43 |
6. |
Символьные переменные ........................................................... |
53 |
|
Примеры решения задач по теме ............................................... |
53 |
7. |
Одномерные массивы................................................................ |
56 |
|
Примеры решения задач по теме ............................................... |
57 |
8. |
Двумерные массивы .................................................................. |
65 |
|
Примеры решения задач по теме ............................................... |
65 |
69
Серия «Элективный курс * Профильное обучение»
Людмила Александровна Анеликова
Алгоритмика в теории и практике
Ответственный за выпуск
В. Митин
Макет и верстка
А. Иванова
Обложка
Å.Холмский
ÎÎΫСОЛОН-ПРЕСС» 123242, г. Москва, а/я 20
Телефоны:
(495)254-44-10, (495) 252-36-96, (495) 252-25-21
E-mail: solon-avtor@coba.ru
По вопросам приобретения обращаться:
ООО «АЛЬЯНС-КНИГА КТК»
Òåë: (495) 258-91-94, 258-91-95, www.abook.ru
ООО «СОЛОН-ПРЕСС»
127051, г. Москва, М. Сухаревская пл., д. 6, стр. 1 (пом. ТАРП ЦАО) Формат 60 88/16. Объем 4,5 п. л. Тираж 1500 экз.
Отпечатано в ООО «Арт-диал»
143983, МО, г. Железнодорожный, ул. Керамическая, д. 3 Заказ ¹
