русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Примеры обработки двумерных массивов


Дата добавления: 2013-12-23; просмотров: 1648; Нарушение авторских прав


Примеры обработки одномерных массивов

Пример 1. Ввод с клавиатуры и вывод на экран одномерного массива.

Пример 2. Ввод вещественного массива и вычисление среднего значения.

Пример 3. Сортировка массива «методом пузырька».

В данной программе массив инициализирован. Его размер равен числу заданных значений. Чтобы сделать программу универсальной по отношению к размеру массива, значение размера вычисляется автоматически и заносится в переменную n. Для этого используется операция sizeof() - определение размера в байтах. Результат sizeof (X) равен размеру в памяти всего массива Х - 20 байтам. Результат sizeof(X[0]) равен размеру одного элемента массива - 2 байтам. Отношение этих величин равно 10 - числу элементов массива. Внимательно проанализируйте организацию перебора значений параметров вложенных циклов - i, j.

Пример 4. Вычисление и вывод на экран таблицы умножения в форме матрицы Пифагора.

По данной программе в двумерном массиве а не будут заполнены нулевая строка и нулевой столбец. По-прежнему интерпретируем первый индекс двумерного массива как номер строки матрицы, а второй индекс - как номер столбца.

Пример 5. Заполнение матрицы случайными числами в диапазоне от 0 до 99 и поиск в ней максимального значения.

В результате тестирования этой программы получен следующий результат:

В данной программе имеются новые элементы, использование которых требует пояснения. В стандартной библиотеке с заголовочным файлом stdlib.h содержится функция, прототип которой имеет вид: int rand(void).

Результатом этой функции является целое случайное число из диапазона от 0 до RAND_MAX. Значение константы RAND_MAX определено в заголовочном файле stdlib.h и обычно равно 32767 - максимально допустимому целому числу. Для получения случайных чисел в диапазоне от 0 до N-1 достаточно вычислить остаток от целого деления rand() на N. Функция с прототипом void randomize (void) выполняет первоначальную настройку датчика случайных чисел так, чтобы последовательность чисел не повторялась при повторном выполнении программы.



Другим новым элементом в данной программе является использование манипуляторов для управления потоковым выводом с помощью стандартного объекта cout. Манипуляторы объявляются в заголовочном файле iomanip.h. Манипулятор setw(n) влияет на формат следующего элемента выходного потока. Он указывает на то, что значение будет выводиться в n позиций на экране (в программе n=6). Другой использованный манипулятор - endl - обозначает конец строки и переводит экранный курсор на начало новой строки. Его действие аналогично действию управляющего символа \n.

 

Имя массива является адресом его начала! Оно имеет тип константный указатель на <тип элементов массива>.

Конструкция a[i] эквивалентна *(a + i).

Для многомерного массива надо указать соответствующее количество индексов в квадратных скобках.

В С++ массивы тесно связаны с указателями. Имя массива можно использовать в качестве указателя на его первый элемент. Гарантируется осмысленность значения указателя на элемент, следующий за последним элементом массива. Это важно для многих алгоритмов. Но ввиду того, что такой указатель на самом деле не указывает ни на какой элемент массива, его нельзя использовать ни для чтения, ни для записи. Результат получения адреса элемента массива, предшествующего первому, не определён, и такой операции следует избегать.

Неявное преобразование имени массива в указатель на его первый элемент широко используется в вызовах функций.

int f(..., int x[], ...) { ... } int f(..., int *x, ...) { ... } void main() { int a[10]; ... // Можно использовать любой из двух вариантов
f(..., a, ...); ... } // Передаём в функцию f указатель на массив a

Неявное преобразование массива в указатель при вызове функции приводит к потере информации о размере массива. Вызываемая функция должна каким-либо образом определить этот размер, чтобы выполнять осмысленные действия.

При объявлении многомерного массива как параметра функции можно опустить только первую размерность.

int g(..., int x[][10], ...) { ... } //Вторая и последующие размерности обязательны

Это ограничение при желании можно обойти. Правда, при этом возникают другие проблемы.



<== предыдущая лекция | следующая лекция ==>
Примеры инициализации массивов | Указатели


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.004 сек.