Basic - вводный курс


   Приобрести анонимно доверенность на недвижимость по отличной цене у качественного продавца          

Заполнение одномерных массивов и вывод их на экран

Первая задача, встающая перед программистом прежде чем, обработать массив, — заполнить его "жильцами". Для этого в Бейсике существует несколько способов, которые мы и рассмотрим. Кроме того, для контроля правильности заполнения, лучше бы сразу выводить массив на экран, чтобы потом можно было проверить правильность решения поставленной задачи.
Для всех случаев мы рассмотрим один и тот же пример — заполнить массив N целыми числами, каждое из которых не более 100. Мы не берем конкретное значение N, чтобы вы понимали: программа не должна зависеть от исходных данных. Сейчас мы хотим создать массив из 10 чисел, а в следующий раз — из 1000. Программа останется той же.

Заполнение одномерного массива с клавиатуры

Рассмотрим следующий пример:

CLS
INPUT "Введите количество элементов массива"; N
DIM MASS(N)
FOR 1=1 ТО N
? "Введите"; N; "элемент массива"
INPUT MASS(I) NEXT I
7
FOR 1=1 TO N ? MASS(I); NEXT I

Программа требует некоторых пояснений. Первая команда тра-диционна — очистка экрана. Далее идет запрос с клавиатуры количества элементов массива. Потом цикл, в котором от 1 до N программа последовательно запрашивает у пользователя ввод очередного элемента массива и записывает его значение по указанному адресу mass(i) . После первого цикла выполняется оператор print без параметров. Он отображает пустую строку между вводом значений и их выводом. Последний оператор цикла выводит значения массива на экран в строчку, что обеспечивается
добавлением к оператору print точки с запятой. Результаты работы программы для трех элементов будут выглядеть так:

Введите 1 элемент массива
? 23
Введите 2 элемент массива
? 13
Введите 3 элемент массива
? 98
23 13 98

Заполнение одномерного массива заранее известными значениями из оператора DATA

Часто встречаются задачи, когда данные для обработки уже известны и содержатся в операторе data. (Однако, если их много, тяжелый труд — их туда заносить. Обычно — работа для молодых программистов.)

DATA 23, 13, 98, 77, 45, 56, 32,' 10, 90, 55
CLS
INPUT "Введите количество элементов массива"; N
DIM MASS(N)
FOR 1=1 ТО N
READ MASS(I)
? MASS(I); NEXT I

Программа стала несколько короче, т. к. в этом случае можно совместить чтение данных из data и одновременный вывод их на экран — ведь пользователь освобожден от необходимости вводить данные с клавиатуры. Мы сразу увидим массив на экране.
Этот способ экономичней первого, и, кроме того, при отладке программы нет нужды всякий раз заново вводить данные.

Заполнение массива при помощи стандартных функций

Так как чаше мы решаем учебные задачи, то конкретные числовые или строковые значения элементов массива нас мало интересуют. Важно, чтобы программа работала правильно. Поэтому часто массив заполняется случайными значениями.

CLS
RANOMIZE TIMER
INPUT "Введите количество элементов массива"; N
DIM MASS(N)
FOR 1=1 ТО N
MASS(I)=INT(RND(l)*100)
? MASS(I); NEXT I

Мы вычисляем какую-либо функцию, например синус, и значения этой функции заносим в массив. Пусть дана функция y-sinx , где х меняется от 1 до 10 с шагом 0,5. Здесь мы должны сначала решить для себя, а сколько будет значений вычислено. Мы это уже делали, но, повторение — мать учения.

N=(Хнач. — Хкон.)/шаг+1

В нашем случае:

N=(10-1)/0.5 +1=19

Тогда программа будет выглядеть так:

CLS
INPUT "Введите начальное, конечное значения аргумента
и шаг приращения"; XN, XK, DX
N=INT((XK - XN)/DX)+1
DIM MASS(N)
1=1
FOR X=XN TO XK STEP DX
MASS(I)=SIN(X)
? MASS(I);
1=1+1 NEXT X

Здесь нам уже приходится вручную наращивать индекс г, т. к. параметром цикла в данном случае является х.
После заполнения массива настает пора его обрабатывать. Чаще всего приходится обрабатывать все элементы массива, поэтому действия выполняются в цикле.
Изменение значений элементов массива ведется с помощью оператора присваивания, например:

MASS(1!=13
MASS(3)=12
MASS(3)=SQR(MASS(1)+MASS(3))
? MASS(3)

Вопрос. Какое значение будет выведено на экран? Чему равны значения mass ( i ) и mass (3) ?
Задания. Прежде всего попрактикуемся в заполнении массивов и выводе на экран не только численных значений элементов массива, но и графической их интерпретации.
236. Заполните массив десятью случайными целыми числами, каждое их которых лежит в пределах от 50 до 200, и выведите на экран их численные значения, а также графическое представление в виде вертикальных закрашенных прямоугольников шириной 30, и высотой, соответствующей их значению. Нижние стороны прямоугольников лежат на линии с координатой Y=300, левой стороне первого прямоугольника соответствует координата Х=100 (рис. 1.67).
237. Заполните массив десятью случайными целыми числами, каждое их которых лежит в пределах от 5 до 30, и выведите на экран их численные значения, а также графическое представление в виде закрашенных соприкасающихся кругов, радиусы которых равны значениям элементов массива (рис. 1.68).

Рис.1.67. Столбиковая интерпретация одномерного массива

Рис.1.68. Круговая интерпретация одномерного массива

238. Напишите программу вычисления среднего арифметического содержащихся в операторе data следующих десяти чисел: 31, 19, 52, 65, 6, 8, 13, 16, 97, 33.
239. Напишите программу вычисления выражения:

где х, — числа из оператора data предыдущего задания;
N— их количество; S — среднее арифметическое элементов массива х.
240. Найти сумму 1-го, 4-го, 9-го, 16-го и 81-го элементов массива, состоящего из 100 целых случайных чисел, каждое из которых лежит в пределах от 2 до 22.
241. Замените в массиве из 10 случайных целых чисел, каждое из которых лежит в пределах от 1 до 10, все четные элементы нулями и выведите полученный массив на экран.
242. Массив состоит из 60 случайных двузначных целых чисел. Выведите их на экран в обратном порядке по 6 чисел в строке.
243. В массиве содержатся 10 букв — С, Ф, О, И, К, Л, О, И, Л, Н. Выведите на экран слово, образованное буквами с четными индексами, и слово, образованное буквами с нечетными индексами.
244. Массив состоит из 20 целых положительных и отрицательных чисел, модуль каждого из которых в пределах от 2 до 12. Выведите на экран сначала отрицательные, а затем положительные числа. Определите, модуль суммы каких чисел больше — положительных или отрицательных.
245. Найдите максимальный и минимальный элементы массива из 10 случайных целых двузначных чисел и разность между ними. Представьте графическую столбиковую интерпретацию этого массива, выделив максимальный элемент красным, а минимальный — зеленым цветом. Остальные прямоугольники должны быть желтого цвета.
Если в программе используется несколько массивов, то они могут быть описаны через запятую, например:

DIM Х(10) , Y(10) , W$ (20)

Теперь задания с несколькими массивами.
246. Даны два массива, заполненные каждый десятью случайными целыми числами, каждое из которых от 1 до 9 включительно. Сложите массивы поэлементно, результаты запишите в третий массив. На экран вывести все три массива.
247. Даны три массива с одинаковым количеством элементов 5, в которых содержатся стороны треугольников Aj, Bj и Q. Определите периметр Pj и площадь S; каждого треугольника по формуле Герона. (Так как для того, чтобы треугольник существовал, необходимо определенное соотношение его сторон, то лучше элементы массивов задать в операторе
DATA.)
248. Найдите скалярное произведение двух массивов А и В, состоящих из 5 элементов каждый, которые содержат случайные числа от 2 до 9 включительно. Воспользуйтесь формулой:

где n — размер массива.
249. Найдите соотношение sx/sy, где sx и sy — средние арифметические значения массивов X и Y. соответственно. (Массивы из 10 элементов содержат случайные двузначные целые числа.)
250. Определите объем каждого из 10 цилиндров, для которых заданы радиусы оснований Rj (случайные целые числа от 5 до 25 см) и высоты Hj (случайные целые числа от 10 до 30 см).
251. Заданы 10 пар координат Xj, Yj одних точек на плоскости и 10 пар координат Aj, Bj других точек на плоскости. Вычислите попарно расстояния между точками по формуле:
Занесите эти расстояния в массив S. Проиллюстрируйте задачу графически (соответствующими отрезками на экране). Выделите разными цветами наибольшую и наименьшую длину.
252. Дан одномерный массив W из 10 случайных целых чисел, каждое из которых лежит в пределах от 1 до 100. Получите новый массив R, где каждый элемент создается из массива W делением соответствующего элемента на его индекс.
253. Вычислите и представьте в виде массива последовательность первых 20 чисел Фибоначчи, если Xi~l, X2=2, а каждый последующий элемент равен сумме двух предыдущих.
254. В операторе data содержатся данные о среднесуточной температуре в течение февраля 2000 г. по Санкт-Петербургу. Вычислите среднюю температуру февраля, наибольшую и наименьшую температуры. Постройте линейный график изменения среднесуточной температуры.
255. Школьники неохотно носят одежду, отличающуюся по цвету от одежды одноклассников. Напишите программу, выбирающую 2 цвета (для мальчиков и для девочек) из 12 возможных цветов, которые сегодня будут носить все. Выбор производится случайным образом и сопровождается выводом на экран прямоугольников соответствующих цветов, внутри одного из которых написано "Сегодня этот цвет для мальчиков", а внутри другого "Сегодня этот цвет для девочек".
256. В фирме "Green Beavis Ltd" работают семь сборщиков компьютеров. Для того чтобы повысить производительность их труда, в конце недели обрабатывают сведения о количестве компьютеров, собранных каждым из них ежедневно. Напишите программу, которая выдаст на экран следующие данные:

  • наибольшее количество компьютеров, собранных одним служащим за неделю;
  • среднее количество собранных за день компьютеров;
  • лучший результат за один день;
  • номер служащего, показавшего этот результат и день, в который он был достигнут.

257. Дан массив X, состоящий из 100 целых случайных чисел, каждое из которых лежит в пределах от 3 до 13. С клавиатуры вводится целое число N, также лежащее в этих пределах. Определите количество элементов массива, равных числу N.
258. Даны два числовых массива X и Y с количеством элементов 10 и-20, соответственно. Получите массив Z из 30 элементов, составленный добавлением массива X в коней массива Y.
259. Дан массив из 20 случайных целых чисел, каждое из которых лежит в пределах от 10 до 50. Найдите максимальное число и его номер, а если таких чисел несколько, то подсчитайте, сколько их.
260. Дан массив из 20 случайных целых чисел, каждое из которых лежит в пределах от 10 до 50. Определите среднее арифметическое элементов массива, а также значение элемента, ближайшего к среднему, и его номер.
261. Дан массив среднемесячных температур за год. Определите, в каком месяце была самая высокая температура, а в каком самая низкая, а также среднесезонные температуры.
262. У автора этой книги была копилка, в которой было 100 советских монеток достоинством в 1, 2, 3, 5, 10, 15, 20 и 50 копеек. Задайте массив М(100) случайным образом из этого набора, а затем подсчитайте, сколько в копилке было пятачков и полтинников, и какова общая сумма накопленного.
263. Дан массив из десяти целых двузначных случайных чисел. Найдите сумму трех максимальных из них.
264. Заполните массив R(25) случайными целыми двузначными числами так, чтобы числа не повторялись.
265. Программа "Пожиратель звезд". Когда мы говорили о циклах и построении графиков функций, то писали программу о движении "звездолета", который, пролетая по траектории заданной тригонометрической функции, уничтожал планету, находящуюся от него в опасной близости. Теперь, со знанием массивов, мы можем написать более красивую и более сложную программу. Сначала заполним экран тысячью разноцветных звезд, изображенных либо точками, либо окружностями радиусом 1. Координаты всех звезд запоминаются в массивах Х( 1000) и Y(1000). Затем по траектории


начинает двигаться кавалькада. Впереди сторожевой звездолет (закрашенный круг радиусом 2), проверяющий, не находится ли какая-нибудь звезда в опасной близости от армады (S<=30), и уничтожающий ее в таком случае (звезда заменяется точно такой же, но цветом фона). Позади движутся три крейсерских звездолета (закрашенные круги радиусом 4). В результате выполнения программы на экране должен быть проложен коридор по траектории функции с шириной 60 экранных точек (рис. 1.69).

Рис.1.69. "Пожиратель звезд"

266. Напишите программу "Сторож", которая бы заставила змейку (рис. 1.70) оббегать стороны экрана по часовой стрелке (это можно написать и без массива). Усложните программу, взяв на службу еще одну "змейку". Теперь они ползают друг за другом (рис. 1.71). Еще сложнее — программа для движения змейки, управляемой стрелками или буквенными клавишами и совершающей повороты под прямым углом. А если и это все по плечу, то заставьте змейку поворачивать еще и под углом 45°.

Рис.1.70. "Сторож-змейка"

Рис.1.71. "Пожиратель звезд"


Назад    Содержание    Вперед





Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий