^Back To Top
foto1 foto2 foto3 foto4 foto5 foto6 foto7 foto8 foto9 foto10 foto11 foto12 foto13 foto14 foto15 foto16 foto17 foto18 foto19 foto20 foto19

 

C++  для   Ch--

 

 

Массив: на экране - красиво упорядоченные данные

 

..... Для удобства программирования разработчики языка С++ создали еще один вид переменных в виде набора ячеек, в которых можно хранить однотипные данные. Эта переменная называется массив. Ей присваивается имя, например, int arrow[n]. В квадратных скобках указывают количество ячеек, а статус массива совпадает со статусом переменных, которые хранятся в этих ячейках. Вот команда, которая заносит в ячейки массива arrow числа, кратные семи:

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

..... Решим задачу о нахождении делителей , используя массивы. Назовем эту программу «mass» - «массив» и известным способом создадим файл mass.cpp. По сравнению с программой divi изменится только шапка, строка объявления переменных и условный оператор, введённый на втором шаге.

 

Шапка программы

..... Для вывода на экран красиво упорядоченных данных подключим библиотеку таблиц, добавив в шапку программы divi еще одну директиву и строку:

..... Таким образом, шапка программы «mass» состоит из шести операторов.

 

Строка объявления переменных

..... В строку объявления переменных программы divi добавим массив arrow, в ячейках которого будут храниться делители. Поскольку их количество заранее неизвестно, заявим одну ячейку. Компьютер имеет право изменять длину массива.

..... Переменная t предназначена для нумерации ячеек массива, а нумерация, как было отмечено, начинается с нуля.

 

Тело программы

..... 2-й шаг. Изменение в теле программы divi касается только двух условных операторов.

..... Первый условный оператор записывается в формате:  if  ( условие {   }.

..... В рассматриваемом случае, если остаток от деления равен нулю (z = 0), то n имеет делитель i, который заносится в соответствующую ячейку массива arrow, начиная с t = 0, а t при этом увеличивается на 1. Таким образом все делители оказываются в ячейках массива:

..... Если после перебора всех делителей (при выходе из цикла) параметр t  не изменился (остался таким же как в строке объявления переменныхt = 0), то делителей нет, и управление перейдёт внутрь фигурных скобок оператора if. На экран будет выведено, что число n простое, а оператор else будет проигнорирован:

..... Если же после перебора всех делителей (при выходе из цикла) параметр t изменился (появился делитель), то управление перейдёт внутрь фигурных скобок оператора else, и на экране появится заглавная строка таблицы. Команда setw(13) из библиотеки таблиц сдвинет слово "Делители" на 13 пробелов вправо от слова "Номер".

..... После заглавной строки таблицы на экран будет выведено содержимое ячеек массива arrow, в которых находятся делители числа n. Это будет сделано при помощи оператора цикла, расположенного на месте многоточия:

Вывод начинается с первой ячейки массива с номером 0 (j=0), в которой находится делитель под номером 1. Поэтому на экран выводим номер на единицу больший номера ячейки массива (j+1). Команды setw(3) и setw(11) служат для выравнивания таблицы.

 

Простейшая схема программы и результаты расчетов

..... Программа mass готова. Шапка состоит из шести операторов. Тело программы расположено внутри функции main между операторами русификации текста setlocale и фиксации экрана cin.get ( ).

 

Программа «mass» - «массив» (простейшая схема)

..... Записываем программу в файл mass.cpp, и нажимаем F5. Результаты расчетов представим для трех значений n = 2013, 2014 и 2015:

Итак, 2013-й, 2014-й и 2015-й годы имеют ровно по 6 делителей.

 

Стандартная схема программы

..... В С++ простейшую схему используют очень редко. На практике приходится иметь дело с множеством функций, поэтому применяют стандартную схему. Тело распределяют по нескольким функциям, а управление осуществляют из главной функции main, с которой всегда начинается выполнение программы.

..... Вспоминаем. В математике функцию можно задать аналитически, графически, табличным способом или компьютерной программой. Всегда пишут y = f(x), где x - аргумент, а y - функция. Даем аргументу значение, например, x = 5 и получаем значение функции y = f(5). Функция может быть однозначной или многозначной.

..... Аналогичные обозначения используют в С++. Например, делители числа n будем вычислять при помощи функции divi:

..... Каждая функция в С++, как и переменная, имеет статус, который определяет её особые свойства. Пока мы используем нейтральный статус void. Итак, divi - многозначная функция нейтрального статуса с аргументом n. А теперь запишем программу «mass» по стандартной схеме.

..... 1. Шапка программы не изменится.

..... 2. Из строки объявления переменных удалим переменную n.

..... 3. Далее следует функция  void divi(double n) {  }, в круглых скобках которой в качестве аргумента объявим переменную n, а в фигурные скобки поместим тело программы «mass».

..... 4. После пропуска строки запишем основную функцию void main ( ) { }, с которой компьютер начинает выполнять программу. В фигурные скобки поместим операторы русификации текста и фиксации экрана, а между ними команду

..... Этот оператор - аналог записи f(5), т. е. является значением функции divi, если аргумент положить равным n = 2015.0. Функция divi(n) многозначная и, как ранее было показано, имеет 6 значений:

Это и высветится на экране с соответствующим комментарием.

 

Программа «mass» - «массив» (стандартная схема)

..... Подставляя в divi(2015.0) значения аргумента n = 2013.0 и 2014.0, получим те же результаты, что и по простейшей схеме.