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

11 дней назад

Рассмотрим сначала как заполнять массив значениями и как ыводить массив на экран.
В задачах я быду использовать массив на 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(рус)

Авторы получают вознаграждение, когда пользователи голосуют за их посты.
Голосующие читатели также получают вознаграждение за свой голос.
Порядок сортировки:  Популярное

✅🤙 🚀

32
  ·  10 дней назад

Сюда приплывал Моби Дик

Ничё не понятно)))

70
  ·  10 дней назад