Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Статические массивы. Объявление массивов.Содержание книги
Похожие статьи вашей тематики
Поиск на нашем сайте массивы – это упорядоченная последовательность, имеющая общее имя. Это общее понятие массива, хочется заметить, что массивы бывают статические и динамические. Массив имеет фиксированное число членов. Динамический массив может менять число членов в течение выполнения программы. Сверху идут индексы массива, а снизу элементы.
После рассмотрения общей теории по массивам, рассмотрим уже конкретно по языку программирования С.
Синтаксис массива в языке программирования С
Для начала посмотрим, как описывается массив на языке С.
<тип элементов массива> идентификатор (имя массива) [размерность массива];
Вот так выглядит описание массива в общем виде, теперь расскажу подробнее. Сначала вы указываете тип данных, который имею все элементы массива (это важно, что все элементы массива должны быть одного типа. Например, в целочисленный массив вы не можете добавить строку в качестве элемента). Идентификатор – это то, как будет называться массив в вашей программы, то же самое что имя и обычной переменной. Размерность массива – это то количество элементов, которое может иметь ваш массив. Нумерация элементов массива начинается с 0, поэтому в качестве размерности нужно указывать число n-1, где n-количество элементов в массиве. Напомню, что в статическом массиве число элементов постоянно в течение выполнения всей программы, и поэтому в качестве размерности массива может быть либо целое число, либо константное выражение целого типа данных.
Обращаются к элементам массива следующим образом: имя массива [номер элемента]; где номер элемента это целое число или переменная, причем небольшие, чем n-1, где n – количество элементов массива.
Теперь мы узнали, как объявлять массив и как обращаться к его элементам, но мы еще не можем использовать их в программе, пока мы не узнаем несколько алгоритмов для работы с массивами и начнем мы с заполнения и вывода массива.
Заполнение и вывод массива
Заполнение и вывод массива выполняется похожим образом. Я прокомментирую и то и другое, чтобы вы увидели эту схожесть, хотя логикой понятно, что это просто взаимообратные процессы. Заполнять массив можно несколькими способами:
1. Самый нерекомендуемый, но иногда применяемый способ – заполнение массива вручную, то есть вид a[1]=x1; a[2]=x2, a[3]=x3 … a[n-1]=xn_m1, то есть вы в коде даете элементам массива значения, которые придумываете сами (значения должны совпадать с типом элементов массива)
2. Заполнение с клавиатуры – это заполнение идет чаще всего циклом, но пользователь с клавиатуры вводит значения элементов массива. Вот так это будет выглядеть for(int i=0;i<n;i++) scanf(“%i”,&a[i]); В этом примере у нас есть одномерный целочисленный массив a размерности n и цикл, идущий от 0 до n-1, и оператор scanf, про который вы можете найти в уроке «Основные элементы языка С», который считывает с клавиатуры элементы массива.
3. Заполнение случайными числами – заполнение массива идет чаще всего циклами, но дополнительно используются функции rand и srand, которые вы найдете в библиотеке stdio.h
Мы рассмотрели способы ввода массивов, способы вывода абсолютно такие же только везде вместо scanf нужно писать printf и не ставить &.
Теперь мы смогли заполнить массив, но нам нужно произвести с ним какие-либо действия, я покажу такие действия: нахождение максимума и минимума, нахождение суммы и произведения элементов массива и подсчет элементов массива, удовлетворяющих определенному условию. Сортировки и перестановки в массивах достойны отдельного урока.
Нахождение максимального и минимального элемента в массиве
Алгоритм нахождение максимального (минимального) элемента массива прост. Для начала мы берем гипотезу, что первый элемент максимальный, а затем сравниваем все элементы массива с максимумом, если встречен элемент больше максимума, то максимумом становиться тот элемент, и продолжаем сравнивание элементов с новым максимумом. Точно также находится и минимальный элемент массива. Все коды программ вы найдете в примерах, а здесь объясняется только принцип.
Нахождение суммы и произведения элементов массива
Тут, казалось бы, все просто складывай или перемножай себе элементы массива без разбору и все нормально будет, но на самом деле все не так просто. Я тут хочу обратить внимание на два нюанса, а все остальное действительно просто, умножай или складывай. Первое о чем я хочу сказать, перед нахождением суммы переменная, в которой это сумма храниться должна быть равна 0, а переменная, в которой храниться произведение должна быть равна 1, так как любое число, умноженное на 0, будет 0. Второе и очень важное, надо следить, чтобы переменная не вышла за диапазон значений, отдающийся под ее тип данных, часто бывает необходимым использовать типы long, это касается и суммы и произведения, особенно произведения.
Подсчет элементов массива, удовлетворяющих определенному условию
На самом деле тут ничего сложного нет. Надо просто завести еще одну переменную-счетчик, которая изначально равна 0, затем просматривать все элементы массива, и если данный элемент удовлетворяет условию, приведенному в задаче, то увеличивать эту переменную на 1.
Примеры
1.найти номер максимального элемента массива. #include<stdio.h> #include<stdlib.h> int main() { const int n=10; int nArray[n]; //заполнение массива for(int i=0;i<n;i++) scanf("%i",&nArray[i]); //инициализация номера максимального элемента и максимального элемента int nMax=0, nNuberofMax=nArray[0]; //поиск максимального элемента и его номера for(int i=0;i<n;i++) if(nArray[i]>nMax) { nMax=nArray[i]; nNumberofMax=i; } //вывод номера максимального элемента printf("%i",nNumberofMax); return 0; } Билет №14 Динамические массивы. Объявление массивов. Во всех вышеприведенных примерах объявлялись статические массивы, поскольку нижняя граница равна нулю по определению, аверхняя всегда задавалась в этих примерах константой. Напомню, что в C# все массивы, независимо от того, каким выражением описывается граница, рассматриваются как динамические, и память для них распределяется в "куче". Полагаю, что это отражение разумной точки зрения: ведь статические массивы, скорее исключение, а правилом является использование динамических массивов. В действительности реальные потребности в размере массива, скорее всего, выясняются в процессе работы в диалоге с пользователем. Чисто синтаксически нет существенной разницы в объявлении статических и динамических массивов. Выражение, задающее границу изменения индексов, в динамическом случае содержит переменные. Единственное требование - значения переменных должны быть определены в момент объявления. Это ограничение в C# выполняется автоматически, поскольку хорошо известно, сколь требовательно C# контролирует инициализацию переменных. Приведу пример, в котором описана работа с динамическим массивом: public void TestDynAr() { //объявление динамического массива A1 Console.WriteLine("Введите число элементов массива A1"); int size = int.Parse(Console.ReadLine()); int[] A1 = new int[size]; Arrs.CreateOneDimAr(A1); Arrs.PrintAr1("A1",A1); }//TestDynAr Билет №15 Адреса и ссылки. Ссылки Гипертекстовый документ - это документ, содержащий ссылки на другие документы, позволяющие при помощи нажатия кнопки мыши быстро перемещаться от одного документа к другому. Часто подобные ссылки можно увидеть и в файлах справки программных продуктов.
Гипермедийный документ - основан на гипертекстовом документе, но в дополнение к тексту содержит разнообразную графику, видео- и аудиообъекты. В таких документах в качестве ссылок часто используются изображения. Существует очень много типов мультимедийных объектов, которые могут быть размещены на Web - странице.
Ссылка состоит из двух частей. Первая из них - это то, что вы видите на странице; она называется указатель (anchor). Вторая часть, дающая инструкцию браузеру, называется адресной частью ссылки (URL - адресом, URL reference). Когда вы щелкаете мышью по указателю ссылки, браузер загружает документ, адрес которого определяется URL - адресом. Составные части ссылки рассмотрены ниже. В языке C++ появился новый механизм работы с переменными — ссылки. Функция swap() была хороша, только не слишком удобно применять разыменование. С помощью ссылок функция swap() может выглядеть аккуратнее. #include void swap(double& a, double& b) { double temp = a; a = b; b = temp;}А вызов функции тогда будет уже без взятия адреса переменных. swap(x, y);Конструкция double& объявляет ссылку на переменную типа double. При таком объявлении функции в стек будут положены не значения переменных, а их адреса. Ссылка — это указатель, с которым можно работать, как с обычной переменной. Ссылка не может быть равна NULL. Указатель может. Ссылка не может быть непроинициализирована. Указатель может. Для взятия адреса переменной и для объявления ссылки используется одинаковый символ — амперсанд. Но в случае взятия адреса & стоит в выражении, перед именем переменной. А в случае объявления ссылки — в объявлении, после объявления типа.
|
||
|
Последнее изменение этой страницы: 2016-08-16; просмотров: 592; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.217.128 (0.008 с.) |