Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Задание №4. Обработка одномерных массивов




         

Цель работы: изучить составной тип данных – массив. Написать и отладить программу с использованием одномерных массивов.

 

Теоретические сведения

Массив – конечная последовательность данных одного типа. Массив – объект сложного типа, каждый элемент которого определяется именем (ID) и целочисленным значением индекса (номера), по которому к элементу массива производится доступ. Рассмотрим одномерные массивы.

Внимание! Индексы массивов в языке С/С++ начинаются с 0.

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

              тип ID массива [размер];

где размер – указывает количество элементов в массиве. Размер массива может задаваться константой или константным выражением. Для использования массивов переменного размера существует отдельный механизм – динамическое выделение памяти.

Примеры декларации массивов:

              int a[5];

              double b[4] = {1.5, 2.5, 3.75};          

в целочисленном массиве а первый элемент а[0], второй – а[1], …, пятый – а[4]. Для массива b, состоящего из действительных чисел, выполнена инициализация, причем элементы массива получат следующие значения: b[0]=1.5, b[1]=2.5, b[2]=3.75, b[3]=0.

В языке С/С++ не проверяется выход индекса за пределы массива. Корректность использования индексов элементов массива должен контролировать программист.

Примеры описания массивов:

const Nmax=10;                          – задание максимального значения;

typedef double mas1[Nmax*2];    – описание типа одномерного массива;

mas1 a;                                        – декларация массива а типа mas1;

int ss[10];                                     – массив из десяти целых чисел.

Элементы массивов могут использоваться в выражениях так же, как и обычные переменные, например:

     f = 2*a[3] + a[Ss[i] + 1]*3;

     a[n] = 1 + sqrt(fabs(a[n–1]));

 

Пример выполнения задания

     В статическом массиве А размером N (не более 20), состоящем из целых чисел найти количество четных чисел и их сумму. Размер массива и его элементы вводятся с клавиатуры.

Текст программы с использованием ввода-вывода в потоках может иметь следующий вид:

#include <iostream.h>

#include <conio.h>

void main()

{

  int a[20], n, i, kol = 0, s = 0;

  cout << "\t Input N (<=20) ";

  cin >> n;

  cout <<"\n\t Massiv A" << endl;

  for(i = 0; i < n; i++) {

           cout << "\t a[ " << i+1 << " ] = ";

           cin >> a[i];

   }

   for(i=0; i<n;i++)

           if(a[i] % 2 == 0){

                   kol++;

                   s += a[i];

           }

   cout << "\n Kol-vo = " << kol << "\t Summa = " << s << endl;

   cout << "\n Press any key ... " << endl;

   getch();

}

 

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

Индивидуальные задания

     В одномерном целочисленном массиве (размер массива (не больше 20) и значения его элементов вводить с клавиатуры) вычислить:

1. Произведение элементов массива, расположенных между максимальным и минимальным элементами.

2. Сумму элементов массива, расположенных между первым и последним нулевыми элементами.

3. Сумму элементов массива, расположенных до последнего положительного элемента.

4. Сумму элементов массива, расположенных между первым и последним положительными элементами.

5. Произведение элементов массива, расположенных между первым и вторым нулевыми элементами.

6. Сумму элементов массива, расположенных между первым и вторым отрицательными элементами.

7. Сумму элементов массива, расположенных до минимального элемента.

8. Сумму целых частей элементов массива, расположенных после последнего отрицательного элемента.

9. Сумму элементов массива, расположенных после последнего элемента, равного нулю.

10. Сумму модулей элементов массива, расположенных после минимального по модулю элемента.

11. Сумму элементов массива, расположенных после минимального элемента.

12. Сумму элементов массива, расположенных после первого положительного элемента.

13. Сумму модулей элементов массива, расположенных после первого отрицательного элемента.

14. Сумму модулей элементов массива, расположенных после первого элемента, рав­ного нулю.

15. Сумму положительных элементов массива, расположенных до максимального элемента.

16.  Произведение элементов массива, расположенных между первым и последним отрицательными элементами.

 

Задание №5. Обработка двухмерных динамических массивов. Функции пользователя

Цель работы: изучить понятие «указатель», правила создания и приемы обработки динамических массивов на примере двухмерного массива. Познакомиться с механизмом составления и организации взаимодействия пользова­тельских функций, составить и отладить программу.

Теоретические сведения

Особенности применения указателей

     Обращение к объектам любого типа в языке C может проводиться по имени, как мы до сих пор делали, и по указателю (косвенная адресация).

Указатель – это переменная, которая может содержать адрес некоторого объекта в памяти компьютера, например, адрес другой переменной. Через указатель, установленный на переменную, можно обращаться к участку оперативной памяти (ОП), отведенной компилято­ром под ее значение.

Указатель объявляется следующим образом:

                        тип * ID указателя;

Перед использованием указатель должен быть инициирован либо конкретным адресом, либо значением NULL (0) – отсутствие указателя.

С указателями связаны две унарные операции: & и *. Операция & означает «взять адрес», а операция разадресации * – «значение, расположенное по адресу», например:

              int x, *y;         // х – переменная типа int , у – указатель типа int

     y = &x;            // y – адрес переменной x

     *y = 1;             // по адресу y записать 1, в результате x = 1

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

     Операции сложения, вычитания и сравнения (больше/меньше) имеют смысл только для последовательно расположенных данных – массивов. Операции сравнения «==» и «!=» имеют смысл для любых указателей, т.е. если два указателя равны между собой, то они указывают на одну и ту же переменную.










Последнее изменение этой страницы: 2018-04-12; просмотров: 274.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...