Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка по QBasic.doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
535.04 Кб
Скачать

Многомерные массивы

Объявим двумерный массив, в котором 3ряда и 3 столбца:

DIM A(3,3). Для заполнения, например элемента, стоящего во 2-ом ряду и 3- ем столбце пишем:

A(2,3)=2

Для его печати пишем:

PRINT A(2,3)

Аналогично можно определить 3-х мерный массив:

DIM B(2,5,3) и больше, но их трудно себе представить.

Пример:

Создадим программу, которая считает, сколько раз выпадает орёл при бросании монеты M раз. Бросание повторяем N раз (серий). Результаты бросаний заносим в массив.

INPUT "Сколько раз бросаем?"; M

INPUT "Сколько серий делаем?"; N

DIM SEERIA(N) 'Объявляем массив

RANDOMIZE TIMER 'Включаем генератор случайных чисел

FOR J = 1 TO N 'Цикл серии

'обнуляем счётчик

k = 0

FOR i = 1 TO M 'начинаем цикл бросаний

'значение при бросании может быть 1-орёл и 2 –решка

v = INT(RND * 2 + 1)

IF v = 1 THEN k = k+ 1

NEXT i

'заносим ответы в массив

SEERIA(J) = k

NEXT J

'выводим ответы на экран

FOR J = 1 TO N

PRINT ".В ".J; ". cериях было"; SEERIA(J); "орлов."

NEXT J

Пример:

Составим программу, которая позволяет учить иностранные слова. Задаётся количества пар слов N и создаёт массив SONAD$(N,2). Затем пользователь заполняет массив. Затем начинает спрашивать произвольные слова. Пользователь должен дать ответ. Программа проверяет, верно слово или нет. При неправильном ответе показывает верный вариант. После каждого слова экран очищается.

CLS 'чистим экран

INPUT "Сколько пар слов"; N

DIM SONAD$(N, 2)

'заполняем массив

FOR I = 1 TO N

INPUT "Вводим иностранное слово"; SONAD$(I, 1)

INPUT "Вводим перевод"; SONAD$(I, 2)

NEXT I

'начинаем спрашивать

CLS

RANDOMIZE TIMER

DO

V = INT(RND * N + 1) 'случайное число от 1-го до N

PRINT SONAD$(V, 2); "-";

INPUT Sona$

'Для выхода из программы вводим слово «хватит».

IF Sona$ = "хватит" THEN END

'проверяем правильность

IF Sona$ = SONAD$(V, 1) THEN

PRINT "Верно!"

ELSE

PRINT "Неверно!"

PRINT "Верное есть:"; SONAD$(V, 1)

END I

'спим 3 сек

SLEEP 3

CLS

LOOP

Создадим программу, генерирующую 20 случайных чисел из промежутка от 1 до 100 и сортирует их по возрастанию.

N = 20

DIM A(N)

RANDOMIZE TIMER

PRINT "Сортируемые случайные числа:"

FOR NUM = 1 TO N

LET A(NUM) = INT(100 * RND) + 1

PRINT A(NUM);

NEXT NUM

DO

OK = 1

FOR I = 1 TO N - 1

IF A(I) > A(I + 1) THEN

'SWAP меняет значения переменных

SWAP A(I), A(I + 1)

OK = 0 'признак, что обмен произошёл

END IF

NEXT I

LOOP UNTIL OK = 1

PRINT "Отсортированные числа:"

FOR NUM = 1 TO N

PRINT A(NUM);

NEXT NUM

Контролируем до тех пор, пока не произошло ни одного обмена.