Информатика в задачах, примерах, алгоритмах
.pdf
9. Циклы и массивы
'полученный массив выводим во второй столбец
For i = 1 To N Cells(i, 2) = a(i)
Next i
MsgBox (“ñì.ëèñò2") End Sub
Пример 2. При помощи датчика случайных чисел заполнить целочисленную квадратную матрицу А порядка N (N ввести с клавиатуры).
Данная программа написана как макрос к любой книге MSExcel.
VisualBasic
Sub ЗаполнениеМатрицы()
'При помощи датчика случайных чисел заполнить 'целочисленную квадратную матрицу А порядка N '(N ввести с клавиатуры) целыми числами от 1 до 100.
'Вывести матрицу А на рабочий лист2.
Dim a() As Integer, N As Integer, t As Integer
Dim i As Integer, j As Integer, col As Integer, numb As Integer
Sheets(“ëèñò2").Select: Cells.Delete 'очистить весь лист N = Val(InputBox(“Введите порядок матрицы”)) 'Ввод раз 'мерности массива
ReDim a(N, N) 'переопределяем массив(матрицу) Randomize Timer 'Инициируем генератор случайных
'чисел в зависимости от таймера 'компьютера.
For i = 1 To N 'начало цикла заполнения матрицы
For j = 1 To N
a(i, j) = Rnd * 99 + 1.1 'Генерируем случайное число от 1 'äî 100
Cells(i, j) = a(i, j) 'Засылаем элемент матрицы в ячейку
|
'рабочего листа |
Next j, i |
'конец цикла заполнения массива |
End Sub |
|
Обратите внимание, что массив А определен с начальным индексом 0, а заполняется с индекса 1.
121
Информатика в задачах, примерах, алгоритмах
Задачи
297. Написать таблицу перевода температур из градусов Цельсия (°С) в градусы Фаренгейта (F) по формуле: F=1,8 ½ C + 32 начи- ная с 0 °С и до 100 °С. Вывести на экран значения 1 °С, 17 °С, 25 °С и 95 °С. Какова температура возгорания бумаги градусах Цельсия, если это 400 °F.
Ответ: 1 °С = 33,8 °F, 17 °С = 62,6 °F, 25 °С = 77 °F, 95 °С = 203 °F, 400 °F = 204,4444 °C.
298. Напечатать таблицу соответствия между весом в фунтах (lbs) и весом в килограммах (кг), начиная с 1 кг и до 100 кг. 1 фунт = 0,454 г. Вывести на экран значения 1 кг, 10 кг, 16 кг, 70 кг, 54 кг, 150 pnd, 200 pnd.
Ответ: 1 кг = 2,202 6 lbs, 10 кг = 22,026 lbs, 16 кг = 35,2423 lbs, 70 кг = 154,185 lbs, 54 кг = 118,943 lbs, 150 lbs = 68,1 кг, 200 lbs = 90,8 кг.
299. Напечатать таблицу перевода длины в футах (f.) в длину в метрах, начиная с 1 м и до 100 м. 1 фут = 30,48 см. Вывести на экран значения 1 м, 10 м, 16 м, 70 м, 54 м, 1,80 футов, 6,5 футов, 200 футов, 150 футов.
Ответ: 1 м = 3,281 f., 10 м = 32,808 f., 16 м = 52,4931 f., 70 м = 229,6589 f., 54 м = 118,943 f., 1,8 футов = 5,906 м, 6,5 футов = 1,9812 м, 200 футов = 60,96 м, 150 футов = 45,72 м.
300. Напечатать таблицу перевода расстояний в дюймах в сантиметры, начиная с 1 дюйма и до 12 дюймов. 1 фут = 12 дюймов = 30,48 см. Вывести на экран все значения.
Ответ: 1 дюйм = 2,54 см, 2 дюйма = 5,08 см, 3 дюйма = 7,62 см, 4 дюйма = 10,16 см, 5 дюймов = 12,7 см, 6 дюймов = 15,24 см, 7 дюймов = 17,78 см, 8 дюймов = 20,32 см, 9 дюймов = 22,86 см, 10 дюймов = 25,4 см, 11 дюймов = 27,94 см, 12 дюймов = 30,48 см.
301. Заполнить массив в 25 элементов членами последовательно-
ñòè {a1 = 0, a2 = 4, ..., a n = a n−1 − 3a n−2 } и посчитать сумму отрицательных элементов.
Ответ: –1644128.
122
9. Циклы и массивы
302. Заполнить массив в 50 элементов членами последовательно-
|
1 |
|
1 |
|
1 |
|
|
ñòè |
|
, |
|
|
, |
|
, ... и посчитать сумму всех элементов. |
|
|
|
|
||||
|
2 |
|
3 |
|
4 |
|
|
Ответ: 3,518813.
303. Заполнить массив в 25 элементов членами последовательно-
|
1 |
|
|
2 |
|
3 |
|
ñòè |
|
|
, |
|
, |
|
, ... и посчитать сумму элементов с 10-го и |
|
|
|
|
||||
|
Sin1 |
|
Sin 2 |
|
Sin3 |
|
|
до конца.
Ответ: –2635,135
304. Составить таблицу расстояний до линии горизонта для наблюдателя, находящегося на высоте Н от поверхности земли для величины Н от 10 до 100 метров с интервалом 10 м. Радиус Земли принять равным 6380 км. (Расстояние можно рассчитать по формуле: l =
(R + h)2 − R 2 .)
Ответ: Ïðè h = 10 ì l = 11 296,02 ì; ïðè h = 20 ì l = 15 974,99 ì;
ïðè h = 30 ì l = 19 565,3 ì; ïðè h = 40 ì l = 22 592,07 ì; ïðè h = 50 ì l = 25 258,71 ì; ïðè h = 60 ì l = 27 669,54 ì; ïðè h = 70 ì l = 29 888,65 ì; ïðè h = 80 ì l = 31 950,06 ì; ïðè h = 90 ì l = 33 888,17 ì; ïðè h = 100 ì l = 35 721,28 ì.
305. Одноклеточная амеба каждые 3 часа делится на 2 клетки. Определить, сколько клеток будет через 3, 6, 9, ... , 24 часа?
Ответ: Через 3 часа 2 клетки; через 6 часов 4 клетки; через 9 ча- сов 8 клеток; через 12 часов 16 клеток; через 15 часов 32 клетки; че- рез 18 часов 64 клетки; через 21 час 128 клеток; через 24 часа 256 клеток.
306. Заполнить массив в 100 элементов членами последовательно-
|
|
= 25Sin 25 − Cos |
2 |
|
= 3,84, ..., a n = |
a n−1 − 3a n−2 |
|
ñòè: a |
1 |
|
25, a2 |
|
, ... . |
||
|
|
||||||
|
|
|
|
|
|
n |
|
123
Информатика в задачах, примерах, алгоритмах
Найти и напечатать минимальный и максимальный элементы массива.
Ответ: min = –4,291277, max = 5,571277.
307. Заполнить массив в 100 элементов членами последовательно-
|
|
= 25Sin 25 − Cos |
2 |
|
= 3,84, ..., a n = |
a n−1 − 3a n−2 |
|
ñòè: a |
1 |
|
25, a2 |
|
, ... . |
||
|
|
||||||
|
|
|
|
|
|
n |
|
Найти и напечатать среднее арифметическое всех элементов массива.
Ответ: 1,384347Е–02.
308. Заполнить массив в 100 элементов членами последовательно-
|
|
= 25Sin 25 − Cos |
2 |
|
= 3,84, ..., a n = |
a n−1 − 3a n−2 |
|
ñòè: a |
1 |
|
25, a2 |
|
, ... . |
||
|
|
||||||
|
|
|
|
|
|
n |
|
Найти и напечатать:
a)среднее арифметическое всех положительных элементов массива;
Ответ: 0,1940029.
b)среднее арифметическое всех отрицательных элементов массива.
Ответ: –0,2454103.
10. Работа с символьной информацией
При решении информационно-поисковых задач в автоматизированных системах управления (АСУ), в экономических задачах наряду с вычислительными операциями широко используется обработка символьных данных.
Средства обработки символьной информации в языке Бейсик представлены достаточно большим набором операторов и специальных функций. По назначению их можно разделить на группы (см. табл.).
124
10. Работа с символьной информацией
Преобразование кодов |
|
функции CHR$, ASC, LCASE$, |
|||
|
UCASE$ |
||||
|
|
|
|
||
|
|
|
|||
Выделение определенной |
части сим- |
функции LEFT$, MID$, RIGHT$ |
|||
вольного выражения |
|
|
|||
|
|
|
|||
|
|
|
|
|
|
Замена части символьного выражения |
оператор MID$, функции LTRIM$, |
||||
RTRIM$ |
|||||
|
|
|
|
||
|
|
|
|
|
|
Обмен символьными выражениями |
оператор SWAP — в VB отсутствует, |
||||
функции LSET, RSET |
|||||
|
|
|
|
||
|
|
|
|
||
Формирование |
строк |
одинаковых |
функции STRING$, SPACE$ |
||
символов |
|
|
|
||
|
|
|
|
||
|
|
|
|||
Обработка числовой |
информации в |
функции VAL, STR$ |
|||
тексте |
|
|
|
||
|
|
|
|
||
|
|
|
|
||
Перевод чисел |
èç |
одной системы |
функции OCT$, HEX$ |
||
счисления в другую |
|
|
|||
|
|
|
|||
|
|
||||
Определение количественных характе- |
функции LEN, INSTR |
||||
ристик символьных строк |
|
||||
|
|
||||
|
|
|
|
|
|
|
Символьные функции |
|
|
|
|
Функция |
Выполняемое действие |
|
|
|
|
ASC(x) |
Возвращает код ASCII первого символа в символьной пе- |
|
ременной õ |
||
|
||
|
|
|
CHR(x) |
Возвращает символ, соответствующий коду ASCII x |
|
|
|
|
INSTR(x,y) |
Возвращает позицию первого обнаружения строки õ â |
|
строке ó |
||
|
||
|
|
|
LEFT(õ,n) |
Возвращает n символов, стоящих с левого края символьной |
|
переменной õ |
||
|
||
|
|
|
LTRIM(x) |
Удаляет начальные пробелы в символьной переменной õ |
|
|
|
|
MID(x, i, k) |
Вырезает из символьной переменной õ k символов, начи- |
|
íàÿ ñ i-òîãî |
||
|
||
|
|
|
RIGHÒ(õ,n) |
Возвращает n символов, стоящих с правого края символь- |
|
ной переменной õ |
||
|
||
|
|
|
RTRIM(x) |
Удаляет конечные пробелы в символьной переменной õ |
|
|
|
|
SPACE(n) |
Возвращает n пробелов |
|
|
|
|
STR(x) |
Переводит числовое значение переменной õ в символное |
|
значение |
||
|
||
|
|
|
STRING(L,x) |
Возвращает L символов, совпадающих с первым символом |
|
символьной переменной õ |
||
|
||
|
|
|
VAL(x) |
Переводит символьное значение переменной õ в числовое |
|
значение |
||
|
||
|
|
125
Информатика в задачах, примерах, алгоритмах
Пример 1.
Макрос на VB
Sub пример()
'При помощи датчика случайных чисел ввести последо 'вательность {ai}, состоящую из N (случайное двузнач 'ное число) целых положительных случайных 4-значных 'чисел. Из {ai} получить последовательность {bi} 'переставив в элементах ai вторую и четвертую цифры. 'Обе последовательности вывести в соседние столбцы ра 'бочего листа книги Excel.
Dim a As Long, N As Integer
Randomize Timer |
'включаем генератор случайных |
|
'чисел |
N = Rnd * 89 + 10 |
'случайное 2-значное число |
Sheets(“ëèñò3").Select |
'переходим на третий лист |
Range(“d1:e100").Clear |
'очищаем область ввода данных |
Cells(1, 4) = “Задача 1" |
|
Cells(1, 4).Interior.ColorIndex = Int(Rnd * 10) |
|
For i = 2 To N + 1 |
|
a =Int(Rnd*8999+1000) |
'получаем случайное 4-значное |
|
'число |
Cells(i, 4) = a |
'выводим его в столбец D |
Cells(i, 5) = перестановка24(a) 'заполняем столбец E
Next End Sub
Function перестановка24(a As Long) As Long Dim s As String, t As String * 1
s = Trim(Str(a)) 'переводим число в строк. переменную t = Mid(s, 2, 1) 'переставляем 2-й и 4-й символы
Mid(s, 2, 1) = Mid(s, 4, 1) Mid(s, 4, 1) = t перестановка24 = Val(s) End Function
126
10. Работа с символьной информацией
Пример 2.
QBasic
'Программа для вычисления суммы цифр числа
INPUT d% |
'Ввод числа |
s$ = STR$(d%) |
'переводим в символьный вид |
L = LEN(s$) |
'определяем длину (число символов) |
d = 0 |
'для накопления суммы |
FOR i = 1 TO L |
'цикл на число символов |
t$ = MID$(s$, i, 1) 'вырезаем очередной символ |
|
n = VAL(t$) |
'переводим в число |
d = d + n |
'прибавляем к сумме |
NEXT |
|
PRINT d |
'выводим на экран |
Пример 3.
Qâasic
Написать программу, которая вводит два числа (N и D) и в интервале целых чисел от 0 до N находит все такие числа, норма которых равна D. (Нормой числа называется сумма всех цифр данного числа по модулю 10, то есть если сумма цифр числа больше девяти, то к этой сумме опять применяется суммирование. Нормой числа 35489 является число 2 (3 + 5 + 4 + 8 + 9 = 29; 2 + 9=11; 1 + 1 = 2)). Напечатать все такие числа и сколько их всего.
DECLARE FUNCTION trans! (ch!)
CLS
'Программа вычисления нормы числа (функция trans!- ре 'курсивная).
INPUT “Введите N”; n INPUT “Введите D”; d FOR i = 1 TO n
ch = i
127
Информатика в задачах, примерах, алгоритмах
WHILE trans(ch) > 9 |
'Для нормы числа |
ch = trans(ch) |
|
WEND |
|
IF trans(ch) = d THEN s = s + 1: PRINT i |
|
NEXT |
|
PRINT s |
|
|
|
FUNCTION trans (ch) |
'норма числа |
IF ch > 9 THEN |
|
trans=ch MOD 10 + trans(ch \ 10) 'Делим число по модулю 'и к полученному 'остатку прибавляем trans(ch)
'trans(ch) делает число на порядок меньше
ELSE trans = ch END IF
END FUNCTION
Задачи
309. Найти все четырехзначные числа, у которых сумма крайних цифр равна сумме средних цифр, а само число делится на 4 и на 22. Все такие числа вывести во второй столбец рабочего листа1 книги Excel, а число таких чисел вывести с помощью MsgBox.
Ответ: 27 чисел.
310. Найти все четырехзначные числа, в которых только две одинаковые цифры. Все такие числа вывести во второй столбец рабо- чего листа2 книги Excel, а число таких чисел вывести с помощью MsgBox.
Ответ: 1944 числа.
311.Определить, есть ли среди цифр трехзначного числа две одинаковые цифры.
312.Найти все четырехзначные числа, в которых сумма цифр является однозначным числом. Все такие числа вывести во второй столбец рабочего листа3 книги Excel, а число таких чисел вывести с помощью MsgBox.
Ответ: 495 чисел.
128
10. Работа с символьной информацией
313.Вывести число, полученное заменой порядка следования цифр введенного трехзначного числа. Например, если введено число 123, то программа должна напечатать число 321.
314.Вывести наибольшую из первых цифр трех введенных чисел. Например, если а = 38, b = 924, c = 87, то надо вывести цифру 9.
315.Подсчитать сумму трехзначных чисел, в десятичной записи которых нет четных цифр. Все такие числа вывести во второй столбец рабочего листа3 книги Excel, а сумму вывести с помощью MsgBox.
Ответ: Сумма = 69375.
316.Каждую четную цифру в записи натуральных чисел, записанных в первом столбце в 10 строках, уменьшить в два раза и вывести во второй столбец соответствующей строки. Например, для исходного числа 64583 получается число 32543.
317.В первом столбце первой и второй строки рабочего листа1 книги Excel записаны два натуральных числа — двузначное и трехзначное. В ячейку A3 вывести разность суммы цифр этих чи- сел.
Ответ: Если A1 = 57, а A2 = 695, то в A3 должно быть –8.
318.Каждую нечетную цифру в записи натуральных чисел, записанных в первом столбце рабочего листа1 книги Excel в 10 строках, увеличить на 1 и вывести во второй столбец соответствующей строки. Например, для исходного числа 64583 получается число 64684. Цифра 9 заменяется на 0.
319.Каждую четную цифру в записи натуральных чисел, записанных в первом столбце рабочего листа1 книги Excel в 10 строках, уменьшить на 1 и вывести во второй столбец соответствующей строки. Например, для исходного числа 64583 получается число 53573. Цифра 0 заменяется на 9.
320.В первом столбце первой и второй строки рабочего листа1 книги Excel записаны два натуральных числа. Во втором столбце рабо- чего листа1 книги Excel первой и второй строки — тоже два натуральных числа. В ячейку A3 вывести min(A1,A2). В ячейку B3 вывести max(B1,B2). В ячейку C3 вывести max(min(A1,A2),max(B1,B2)).
321.В записи натуральных чисел, записанных в первом столбце рабочего листа1 книги Excel в 10 строках, вычеркнуть цифры из
129
Информатика в задачах, примерах, алгоритмах
разрядов с четными номерами и вывести во второй столбец соответствующей строки. Например, для исходного числа 64583 полу- чается число 48. Нумерация разрядов начинается с 0.
322.В записи натуральных чисел, записанных в первом столбце рабочего листа1 книги Excel в 10 строках, вычеркнуть первую цифру и вывести во второй столбец соответствующей строки. Например, для исходного числа 64583 получается число 4583.
323.В записи натуральных чисел, записанных в первом столбце рабочего листа1 книги Excel в 10 строках, каждую цифру увели- чить на 3 и вывести во второй столбец соответствующей строки. Цифра 7 заменяется на 0, цифра 8 заменяется на 1, цифра 9 заменяется на 2.
324.В записи натуральных чисел, записанных в первом столбце рабочего листа1 книги Excel в 10 строках, поменять порядок следования цифр на обратный, удалив при этом из записи получаемого числа все вхождения цифры, записанной в ячейке C1, и вывести во второй столбец соответствующей строки. Например, для исходного числа 64583 и C1=3 получается число 8546.
11. Файлы. Работа с файлами
Общие сведения о файлах
Информация, которая вводится или выводится из программы, организована в файлы. Файлом называется именованная совокупность связанных между собой записей.
Запись представляет собой набор элементов, рассматриваемых как единое целое с точки зрения устройства ввода-вывода. Именно записями одно устройство компьютера (например, память) обменивается с другим (например, принтером или дисководом). В предельном случае запись может быть и одним символом. Для нас наибольший интерес представляют файлы на магнитных дисках, как наиболее распространенный способ хранения и обработки информации. Имя дискового файла хранится в оглавлении диска или каталога (в Windows-папке). Вместе с именем файла там же хранится информация о длине файла, дате его создания, дате обновления.
130
