13 FreeBASIC - массивы(задачи)

Рассмотрим сначала как заполнять массив значениями и как ыводить массив на экран.
В задачах я быду использовать массив на 25 элементов: ширина экрана 80 символов, если хранить в массиве числа до 100 и учесть разделитель между ними в строке поместится как раз 25 символов))

Давайте обьявим массив и сразу же выведем его на экран(убедимся что там нули)

Действительно нули))

Теперь заполним массив случайными числами и выведем на печать

В строках 8 и 13 добавлен пустой оператор print для того чтобы после вывода массива следующий вывод начинался с новой строки.

Если хотите программу можно сделать "короче", записав цикл в одной строке - это дело вкуса и собственного стиля.

Этот код программы теперь можно брать как шаблон для решения задач с массивами. Нужно только в 14 строке в первом варианте и в 7 строке во втором варианте добавить строки по условию задачи.

Маленькое отступление

Вывод на экран может быть не только черно-белым(вернее бело-черным)
Можно используя старый оператор бейсика COLOR устанавливать цвет выводимых символов. COLOR n, n - код цвета. Во FreeBASIC оператор COLOR обладает более широкими возможностями, это можно посмотреть в справке.

От частого использования эти 16 цветов можно запомнить, ну а если забудете, или пока ещё не знаете можно их и узнатьпо коду.

Как видите можно сказать даже что их восемь, первые восем тусклее, а вторые ярче. 4- красный, 4+8=12 ярко красный))

Нам же пока для решения задач достаточно выводить на экран разным цветом.

Будем считать что в задачах дан массив на 25 элементов. Чтобы не тратить время на ввод 25 элементов массива(input (a(i)), заполняем массив случайными числами.

Задача 1

Найти среднее арифметическое элементов массива. При выводе массива на экран элементы меньшие за арифметическое среднее вывести желтым цветом(код 14), большие голубым(код 11). Если же в массиве встретится элемент равный среднему арифметическому - вывести его белым цветом.

Нам понадобится ещё одна переменная, для среднего арифметического. Правда уже не целого, а вещественного типа.

Добавим в третью строку шаблона строки:

dim sarifm as double
sarifm=0

В седьмой же строке циклом выполним подсчет среднего арифметического.

for i=1 to 25:sarifm=sarifm+a(i):next i
sarifm=sarifm/25

А вывод(в 16 строке шаблона) изменим на условие задания.
От значения элемента зависит цвет выводимого элемента, но сам вывод не зависит - мы выводим ведь все элементы. Вот и зададим цвет выводимиого элемента в зависимости от его значения. А потом безо всяких условий выведем и сам элемент.

if a(i)<sarifm then color 14
if a(i)>sarifm then color 11
if a(i)=sarifm then color 15
print a(i);

Задача 2

Вывести элементы массива четные белым, нечетные - красным. Если встретится ноль - серым.

Задача 3

Вывести элементы масива котрые стоят на чётной позиции белыми, а те что стоят на нечётной - красными.

Задача 4

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

Предлагаю решить эти задачи самостоятельно, и потом можете переходить к следующим задачам, чуточку посложнее

Задача 5

Вывести элементы которые больше чем предыдущий красным цветом, а те которые меньше - серым, если равен предыдущему - белым.

Особенность это й задачи в том, что у первого элемента нет предыдущего. И можно или каждый раз проверять индекс в цикле больеш ли он за 1, или начать цикл со второго элемента)) - так и сделаем

Сначала выведем первый элемент массива, каким бы он ни был.
print a(1);
for i=2 to 25
if a(i)>a(i-1) then color 4
if a(i)<a(i-1) then color 7
if a(i)=a(i-1) then color 15

можно и немного по иному

print a(1);
for i=2 to 25
считаем что элемент равен предыдущему
color 15
проверяем и если случилось по иному, т.е. что не равен, переустановим цвет на другой.
if a(i)>a(i-1) then color 12
if a(i)<a(i-1) then color 7


откуда же взялся жёлтый цвет? от предыдущей задачи - нужно в начале программы установить цвет.

Долго программируя в школьных и других слабых бейсиках я и забыл о том, что в FreeBASIC есть очень много нового...

Как сделать так чтобы в программе в 15 строке было не i=2, а i=1
поначалу я думал так:
if i>1 and a(i)>a(i-1) then color 4
if i>1 and a(i)<a(i-1) then color 7
if i>1 and a(i)=a(i-1) then color 15
т.е. цвет переопределять только для последующих элементов после первого, а поэтому сразу выбрал второй вариант, как более "красивый", но теперь вот вспомнил одно новшество циклов на FreeBASIC. А вы вспомнили?

for i=1 to 25
if i=1 then continue for
if a(i)>a(i-1) then color 4
if a(i)<a(i-1) then color 7
if a(i)=a(i-1) then color 15

Ещё несколько легких задачек, как для первого раза при работе с массивами.

Задача 6

Найти сумму четных и сумму нечётных элементов массива.

Задача 7

Найти среднее арифметичексое элементов массива больших за среднее арифметичексое элементов массива.

Задача 8

Найти наибольший элемент в массиве

Задача 9

Найти наименьший элемент в массиве

13 FreeBASIC - массивы(задачи)
12 FreeBASIC - массивы
11 FreeBASIC - задачки
10 FreeBASIC - Игра угадай число
09 FreeBASIC - случайные числа, RND
08 FreeBASIC - случайные числа, RND
07 FreeBASIC - циклы
06 FreeBASIC - условный оператор
05 FreeBASIC - первые простые задачки
04 FreeBasic - графика
03 FreeBASIC. Текстовые переменные и операции с ними
02 FreeBASIC Переменные в Бейсике
01 Начинаем изучать FreeBasic
00 FreeBASIC лучший из диалектов бейсика

Справка FreeBASIC(рус)

компьютерыпрограммированиеsgfbsgpgобучение
901
559.114 GOLOS
0
В избранное
Сергей
Кибернетик... а кто это? deals.weku.io/@sergiy, serey.io/@sergiy, whaleshares.io/@sergiy, sola.ai/nsergiy
901
0
Комментарии (6)
Сортировать по:
Сначала старые
Зарегистрируйтесь, чтобы проголосовать за пост или написать комментарий
Авторы получают вознаграждение, когда пользователи голосуют за их посты. Голосующие читатели также получают вознаграждение за свои голоса.