Работа с одномерными массивами




Лабораторная работа №11

Цель: познакомиться с понятием массив; изучить способы описания массивов; реализовать задачу по обработке одномерных массивов.

Основные положения

В языке программирования С заложены средства для задания последовательностей упорядоченных данных. Такие последовательности называются массивами.

Массив (матрица, таблица, вектор) – это структура данных, представляющая собой совокупность элементов одного типа.

Массив называется одномерным, если для получения доступа к его элементам достаточно одной индексной переменной.

Общая форма записи одномерного массива:

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

В приведенной записи элемент тип объявляет базовый тип массива. Количество элементов, которые будут храниться в массиве с именем имя_массива, определяется элементом размер. Если размерность массива меньше, чем требуется, то компилятор не выдаст сообщения об ошибке. Выход за границы массивов должен следить только сам программист.

В языке С индексация массива начинается с нуля. Например, если размер массива определен величиной 9, то в массиве можно хранить 10 элементов с индексацией 0, 1, 2, 3, 4, 5, 6, 7, 8, 9.

Доступ к отдельному элементу массива осуществляется с помощью индекса. Индекс описывает позицию элемента внутри массива.

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

Для одномерных массивов общий размер массива в байтах вычисляется по формуле:

всего байт = размер типа в байтах * количество элементов

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

В языке С массивы при объявлении можно инициализировать.

Общая форма инициализации массива:

тип имя_массива[размер1] * [размерN] = {список_значений};

В список_значений входят констант, разделенных запятыми. Типы констант должны быть совместимыми с типом массива.

Пример инициализации одномерного массива:

int A[5] = {1, 2, 3, 4, 5};

При этом A[0] = 1, A[1] = 2 и т.д.

В языке С возможна инициализация безразмерных массивов. Например, для одномерного массива:

int A[ ] = {1, 2, 3, 4, 5};

Пример 1. Написать программу заполнения одномерного массива случайными числами из интервала от 1 до 15 по случайному равномерному закону.

Программный код решения примера:

#include <stdio.h>#include <conio.h>#include <time.h>#include <stdlib.h>#define Left 1#define Right 15#define N 10 int main (void) {float R, r, min;float A[N]; int i, j, k; unsigned int some;long int L; L = (long) time(NULL); // Системное времяsome = (unsigned) L; // Приведение типовsrand(some); // Задание исходного случайного числа для rand()printf("\n\t The initial array of random numbers in the interval [%d, %2d]\n", Left, Right); for (i = 0; i < N; ++i){// Случайное число из интервала [0,1]r = (float) rand()/RAND_MAX;// Формирование случайного числа из заданного интервалаR = Left + (Right - Left) * r;// Заполнение массива случайными числамиA[i] = R; } // Печать элементов исходного массиваfor (i = 0; i < N; ++i)printf("\n\t %5d) %10.4f", i + 1, A[i]); printf("\n\n Press any key: "); _getch(); return 0;} Рисунок 1. – результат формирования массива случайным образом

Пример 2. Написать программу поиска максимального элемента в заданном одномерном массиве. Элементы массива являются целыми числами. Программный код решения примера:

#include <stdio.h>#include <conio.h> int main (void){ int i, size, max; int A[ ] = {3, 5, 2, 8, 12, 0, -7, -3, -21};size = sizeof(A)/sizeof(A[0]);printf("\n\t The dimention of the array A is equal to: %d\n", size); max = A[0]; // Предполагаемый максимум for (i = 0; i < size; ++i) if (A[i] > max) max = A[i]; printf("\n\t Maximum array element: %d\n", max); printf("\n\n Press any key: "); _getch(); return 0; }

В программе использована инициализация безразмерного массива и определения его размерности с помощью функции sizeof().

Результат выполнения программы показан на рисунке 2.

Рисунок 2 – Определение максимального элемента массива

 

Пример 4. В данном одномерном массиве вещественных чисел поменяйте местами элементы, стоящие на нечетных местах, с элементами, стоящими на четных местах. Предусмотрите четность и нечетность размерности массива.

Для определения четности места в заданном массиве можно использовать операцию деления по модулю, т.е. %.

Программный код решения примера:

#include <stdio.h>#include <conio.h>// Размер массива#define n 7 int main (void) { int i, k;// Пример массиваfloat A[n] = {1.23F, 2.34F, 3.45F, 4.56F, 5.67F, 6.78F, 7.89F};float B[n];// Вспомогательный массив // Обнуление массива for (i = 0; i < n; ++i) B[i] = 0;// Распечатка заданного массиваprintf("\n\t\t The original array of dimention n = %d:\n", n); printf("\t"); for (i = 0; i < n; ++i) printf("%6.2f", A[i]);// Распечатка преобразованного массива printf("\n\n\t\t The reconfigured array:\n"); for (i = 0; i < n; ++i) { k = i % 2; // Для определения четности индекса массиваif (k == 0 && i < n - 1) B[i] = A[i + 1]; else if (k!= 0 && i > 0)B[i] = A[i-1];else if (k == 0 && i < n)B[i] = A[i]; } printf("\t"); for (i = 0; i < n; ++i) printf("%6.2f", B[i]); printf("\n\n Press any key: "); _getch(); return 0; }

При инициализации массива каждый его элемент снабжен суффиксом F.

Результат выполнения программы показан на рисунке 3.


Рисунок 3 – Смена четных и нечетных мест чисел массива

Задание

1. Согласно номеру в журнале выбрать из таблицы №23 условие задач.

2. Выполнить анализ задачи, составить математическую и информационную модель.

3. Составить алгоритм решения задачи в виде блок-схемы.

4. По алгоритму разработать и отладить программу средствами С.

 

Таблица 23 – Условие задач

  Вариант 1.
1. Найти максимальный, отрицательный элемент массива D [ 10 ], если элементы массива получены с помощью генератора случайных чисел в диапазоне от -5 до 5.
2. Найти произведение и количество положительных элементов массива Е [ 10 ] =(5, 2, 3, 0, 1, 4, 6, 1, 7, 6). Массив описать как константу.  
3. Найти среднее арифметическое элементов массива Е [ 10 ] с нечетными индексами попадающих в интервал (-2.3, 16). Элементы массива получены с помощью генератора случайных чисел в диапазоне от 10 до 25.
4. Дано два одномерных массива по 5 элементов в каждом. Сравнить их поэлементно и вывести значения индексов равных элементов.
  Вариант 2.
1. Найти минимальный элемент массива С [ 8 ], элементы массива ввести с клавиатуры.
2. Найти среднее арифметическое четных элементов массива Е [ 10 ]=(5, 2, 3, 0, 1, 4, 6, 1, 7, 6). Массив описать как константу.
3. Найти сумму и количество отрицательных элементов массива Е [ 10 ], попадающих в интервал (-0.6; 3) если элементы массива получены с помощью генератора случайных чисел в диапазоне от –6 до 6.
4. Дано два одномерных массива по 6 элементов в каждом. Заполнить поэлементно третий массив суммой этих двух и вывести его на экран.
  Вариант 3.
1. Найти максимальный четный элемент массива MAS[ 10 ], элементы массива ввести с клавиатуры.
2. Найти произведение и количество положительных элементов массива Е[10], если элементы массива получены с помощью генератора случайных чисел в диапазоне от –7 до 7.
3. Найти среднее арифметическое отрицательных элементов массива Е[10] попадающих в интервал (-2.3, 0.6), если элементы массива получены с помощью генератора случайных чисел в диапазоне от –2.5 до 1.
4. Дано два одномерных массива по 10 элементов в каждом. Заполнить поэлементно третий массив произведением этих двух и вывести его на экран.
  Вариант 4.
1. Найти максимальный элемент массива С[ 10 ], элементы массива ввести с клавиатуры.
2. Найти среднее арифметическое четных элементов массива Е [ 10 ]=(5, 2, 3, 0, 1, 4, 6, 1, 7, 6). Массив описать как константу.
3. Найти произведение и количество положительных элементов массива Е[10], попадающих в интервал (-1.3, 4.6). Элементы массива получены с помощью генератора случайных чисел в диапазоне от –5 до 7.
4. Заданы два одномерных массива из 8-ми элементов. Вывести значения и индексы элементов массива Р, не совпадающие ин с одним из элементов массива встречающиеся в массиве В.
  Вариант 5.
1. Найти максимальный, положительный элемент массива D [ 10 ], элементы массива ввести с клавиатуры.
2. Найти минимальный, нечетный элемент массива MAS [ 8 ], если элементы массива получены с помощью генератора случайных чисел в диапазоне от 0 до 20.
3. Найти среднее арифметическое отрицательных элементов массива Е[ 10 ]=(-5, -2, 3, 0, 1, -4, 6, 1, 7, 6). Массив описать как константу.
4. Найти сумму и количество четных элементов массива Р [ 7 ] до первого нечетного, элементы массива ввести с клавиатуры.
  Вариант 6.
1. Найти минимальный, четный элемент массива MAS [ 8 ], элементы массива ввести с клавиатуры.
2. Найти среднее арифметическое положительных элементов массива Е [ 10 ]=(-5, -2, 3, 0, 1, -4, 6, 1, 7, 6). Массив описать как константу.
3. Найти произведение и количество положительных элементов массива Е [ 10 ], попадающих в интервал (-5.4, 16), если элементы массива получены с помощью генератора случайных чисел в диапазоне от –5 до 17.
4. Заданы два одномерных массива из 8-ми элементов. Вывести значения и индексы элементов массива Р, встречающиеся в массиве В.
  Вариант 7.
1. Найти максимальный, нечетный элемент массива MAS [ 10 ], если элементы массива получены с помощью генератора случайных чисел в диапазоне от 0 до 20.
2. Найти сумму и количество отрицательных элементов массива Е [ 10 ], если элементы массива получены с помощью генератора случайных чисел в диапазоне от –6 до 6.
3. Найти среднее арифметическое положительных элементов массива Е [ 10 ], попадающих в интервал (-2.3, 5.6). Элементы массива получены с помощью генератора случайных чисел в диапазоне от –7 до 5.
4. Найти произведение и количество отрицательных элементов массива Р [ 7 ] до первого положительного, элементы массива ввести с клавиатуры.
  Вариант 8.
1. Найти максимальный элемент массива С [ 10 ], если элементы массива получены с помощью генератора случайных чисел в диапазоне от 0 до 20.
2. Найти среднее арифметическое нечетных элементов массива Е [ 10 ]=(5, 2, 3, 0, 1, 4, 6, 1, 7, 6). Массив описать как константу.  
3. Найти произведение нечетных элементов массива MAS [ 9 ], элементы массива ввести с клавиатуры.
4. Дано два одномерных массива по 6 элементов в каждом. Сравнить их поэлементно и вывести значения индексов отличающихся элементов.
  Вариант 9.
1. Найти максимальный, отрицательный элемент массива D [ 10 ], если элементы массива получены с помощью генератора случайных чисел в диапазоне от -5 до 5.
2. Найти произведение и количество положительных элементов массива Е [ 10 ] =(5, 2, 3, 0, 1, 4, 6, 1, 7, 6). Массив описать как константу.  
3. Найти среднее арифметическое элементов массива Е [ 10 ] с нечетными индексами попадающих в интервал (-2.3, 16). Элементы массива получены с помощью генератора случайных чисел в диапазоне от 10 до 25.
4. Дано два одномерных массива по 5 элементов в каждом. Сравнить их поэлементно и вывести значения индексов равных элементов.
  Вариант 10.
1. Найти минимальный элемент массива С [ 8 ], элементы массива ввести с клавиатуры.
2. Найти сумму четных элементов массива MAS [ 7 ], если элементы массива получены с помощью генератора случайных чисел в диапазоне от 0 до 10.
3. Найти среднее арифметическое четных элементов массива Е [ 10 ]=(5, 2, 3, 0, 1, 4, 6, 1, 7, 6). Массив описать как константу.
4. Дано два одномерных массива по 6 элементов в каждом. Заполнить поэлементно третий массив суммой этих двух и вывести его на экран.
  Вариант 11.
1. Найти минимальный, отрицательный элемент массива D [ 8 ], если элементы массива получены с помощью генератора случайных чисел в диапазоне от –5 до 5.
2. Найти произведение и количество положительных элементов массива Е [ 10 ], если элементы массива получены с помощью генератора случайных чисел в диапазоне от –7 до 7.
3. Найти среднее арифметическое отрицательных элементов массива Е[ 10 ] попадающих в интервал (-2.3, 0.6), если элементы массива получены с помощью генератора случайных чисел в диапазоне от –2.5 до 1.
4. Дано два одномерных массива по 10 элементов в каждом. Заполнить поэлементно третий массив произведением этих двух и вывести его на экран.
  Вариант 12.
1. Найти максимальный элемент массива С[ 10 ], элементы массива ввести с клавиатуры.
2. Найти произведение положительных элементов массива D [ 9 ], если элементы массива получены с помощью генератора случайных чисел в диапазоне от –9 до 10.
3. Найти среднее арифметическое четных элементов массива Е [ 10 ]=(5, 2, 3, 0, 1, 4, 6, 1, 7, 6). Массив описать как константу.
4. Дано два одномерных массива по 7 элементов в каждом. Сравнить их поэлементно и вывести значения отличающихся элементов.
  Вариант 13.
1. Найти сумму элементов массива С [ 7 ], элементы массива ввести с клавиатуры.
2. Найти минимальный, нечетный элемент массива MAS [ 8 ], если элементы массива получены с помощью генератора случайных чисел в диапазоне от 0 до 20.
3. Найти среднее арифметическое отрицательных элементов массива Е[ 10 ]=(-5, -2, 3, 0, 1, -4, 6, 1, 7, 6). Массив описать как константу.
4. Дано два одномерных массива по 6 элементов в каждом. Заполнить поэлементно третий массив разностью этих двух и вывести его на экран.
  Вариант 14.
1. Найти минимальный элемент массива С[ 8 ], если элементы массива получены с помощью генератора случайных чисел в диапазоне от 0 до 20.
2. Найти среднее арифметическое положительных элементов массива Е [ 10 ]=(-5, -2, 3, 0, 1, -4, 6, 1, 7, 6). Массив описать как константу.
3. Найти произведение и количество положительных элементов массива Е [ 10 ], попадающих в интервал (-5.4, 16), если элементы массива получены с помощью генератора случайных чисел в диапазоне от –5 до 17.
4. Заданы два одномерных массива из 8-ми элементов. Вывести значения и индексы элементов массива Р, встречающиеся в массиве В.
  Вариант 15.
1. Найти максимальный, нечетный элемент массива MAS [ 10 ], если элементы массива получены с помощью генератора случайных чисел в диапазоне от 0 до 20.
2. Найти сумму и количество отрицательных элементов массива Е [ 10 ], если элементы массива получены с помощью генератора случайных чисел в диапазоне от –6 до 6.
3. Найти среднее арифметическое положительных элементов массива Е [ 10 ], попадающих в интервал (-2.3, 5.6). Элементы массива получены с помощью генератора случайных чисел в диапазоне от –7 до 5.
4. Найти произведение и количество отрицательных элементов массива Р [ 7 ] до первого положительного, элементы массива ввести с клавиатуры.

 

 

Содержание отчета

1) цель работы;

2) индивидуальное условие задания по варианту;

3) математическая и информационная модель;

4) блок-схема алгоритма;

5) текст программы;

6) результаты работы программы (копия экрана);

7) выводы.

Контрольные вопросы

1. В чем особенности описания массивов?

2. Как осуществляется доступ к элементам массива?

3. Что такое одномерный массив?

4. Как определяется нужный элемент массива?

5. Какие операторы используют для обработки массивов?

6. Какого типа должен быть индекс массива?

7. Могут ли быть в массиве данные разных типов?

8. Для чего применяется начальная инициализация числовых массивов при дальнейшем их использовании?

9. На кого или на что возлагается контроль границ числовых массивов в языке программирования С?

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2020-12-16 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: