Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 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; просмотров: 387; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.139.82.23 (0.012 с.) |