МегаПредмет

ПОЗНАВАТЕЛЬНОЕ

Сила воли ведет к действию, а позитивные действия формируют позитивное отношение


Как определить диапазон голоса - ваш вокал


Игровые автоматы с быстрым выводом


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


Целительная привычка


Как самому избавиться от обидчивости


Противоречивые взгляды на качества, присущие мужчинам


Тренинг уверенности в себе


Вкуснейший "Салат из свеклы с чесноком"


Натюрморт и его изобразительные возможности


Применение, как принимать мумие? Мумие для волос, лица, при переломах, при кровотечении и т.д.


Как научиться брать на себя ответственность


Зачем нужны границы в отношениях с детьми?


Световозвращающие элементы на детской одежде


Как победить свой возраст? Восемь уникальных способов, которые помогут достичь долголетия


Как слышать голос Бога


Классификация ожирения по ИМТ (ВОЗ)


Глава 3. Завет мужчины с женщиной


Оси и плоскости тела человека


Оси и плоскости тела человека - Тело человека состоит из определенных топографических частей и участков, в которых расположены органы, мышцы, сосуды, нервы и т.д.


Отёска стен и прирубка косяков Отёска стен и прирубка косяков - Когда на доме не достаёт окон и дверей, красивое высокое крыльцо ещё только в воображении, приходится подниматься с улицы в дом по трапу.


Дифференциальные уравнения второго порядка (модель рынка с прогнозируемыми ценами) Дифференциальные уравнения второго порядка (модель рынка с прогнозируемыми ценами) - В простых моделях рынка спрос и предложение обычно полагают зависящими только от текущей цены на товар.

Обработка одномерного массива





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

Использование массивов

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

Объявление массивов

 

При объявлении массива указывают тип его элементов и в квадратных скобках размер массива.

Для одномерного массива объявление запишется в виде:

int a[10];

 

Удобно использовать при объявлении массива директиву препроцессора #define:

#define SIZE 10 // определили поименованную константу, задающую

размер массива

void main()

{

int a[SIZE];

}

 

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

То есть для инициализации первого элемента массива единицей необходимо записать оператор:

a[0]=1;

 

Для работы с массивами обычно используют цикл for.

Инициализировать массив можно разными способами.

Если требуется можно инициализировать элементы массива сразу после объявления:

int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

 

Можно заполнить элементы массива непосредственно в программе:

int a[10];

a[5] = 5;

for (int i=0; i<10; i++)

a[i]=0;

В этом примере сначала шестому элементу массива присваивается значения пять, затем все элементы массива обнуляются.

 

Инициализация одномерного массива пользователем запишется в виде:

int a[10];

for (int i=0; i<10; i++) {

printf(″Введите значение a[%d]\n″, i);

scanf(″%d″, &a[i]);

}

В этом примере сначала элементам массива присваиваются значения введенные пользователем.

Рассмотрим пример нахождения количества отрицательных элементов массива.

int a[10], count;

for (int i=0; i<10; i++)

if (a[i]<0) count++;

 

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

int a[10], sum=0;

for (int i=0; i<10; i++)

if (a[i]<0) sum=sum+a[i];

 

Пример нахождения минимального элемента массива и его индекса.

int a[10], min, mini;

min=a[0];

for (int i=0; i<10; i++)

if (a[i]<min) {

min=a[i];

mini=I;

}

 

Использование многомерных массивов

 

При создании двухмерного массива после его имени ставится два значения – количество строк и столбцов:

int a[10][12];

 

Многомерные массивы инициализируются так же, как и одномерные. В следующем примере массив sqrs инициализируется числами от 1 до 10 и их квадратами:

int sqrs[10][2] = { 1, 1, 2, 4, 3, 9, 4, 16, 5, 25, 6, 36, 7, 49, 8, 64, 9, 81, 10, 100};

 

 

Далее на примере показаны инициализация и вывод элементов двухмерного массива.

int a[10][20];

for (int i=0; i<10; i++)

for (int j=0; j<20; j++)

a[i][j] = 0; // инициализация массива нулями

 

for (int i=0; i<10; i++)

for (int j=0; j<20; j++)

if(i==j)

a[i][j] = 1; // инициализация главной диагонали

массива единицами

 

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

{

for (int j=0; j<20; j++)

printf(“%i”, a[i][j])

printf(“\n”); // вывод массива в матричном виде

 

}

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

 

Примеры работы с массивами

 

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

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



#include "stdafx.h"

#include "conio.h"

#include "stdlib.h"

#include "time.h"

#define randomize() srand((unsigned)time(NULL));

#define random(p) ((int)(rand()*p/RAND_MAX))

 

void main()

{

 

randomize();

int a[10];

char flag;

srand(4);

for (int i=0; i<10; i++)

a[i] = rand()*10;

for (int i=0; i<10; i++)

printf("%d ", a[i]);

printf("\n");

flag = 1;

while(flag)

{

flag = 0;

for (int i=0; i<10; i++)

if(a[i]>a[i+1])

{

int temp = a[i];

a[i] = a[i+1];

a[i+1] = temp;

flag =1;

}

}

for (int i=0; i<10; i++)

printf("%d ", a[i]);

getch();

}В приведенном примере массив инициализируется с помощью функции rand(). Функция rand() генерирует последовательность псевдослучайных чисел. При каждом обращении к функции возвращается целое в интервале между нулем и значением RAND_MAX, которое в любой реализации должно быть не меньше числа 32 767.

Далее будет выполняться цикл for до тех пор, пока есть хотя бы одна пара соседних элементов, которые нужно переставить.

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

Обработка одномерного массива

 

Вариант 1

В одномерном массиве, состоящем из n вещественных элементов:

1) вычислить сумму отрицательных элементов массива;

2) вычислить произведение элементов массива, расположенных между максимальным и минимальным элементами;

3) упорядочить элементы массива по возрастанию.

 

Вариант 2

В одномерном массиве, состоящем из n вещественных элементов:

1) вычислить сумму положительных элементов массива;

2) вычислить произведение элементов массива, расположенных между максимальным и минимальным по модулю элементами;

3) упорядочить элементы массива по убыванию.

 

Вариант 3

В одномерном массиве, состоящем из n целых элементов:

1) вычислить произведение элементов массива с четными номерами;

2) вычислить сумму элементов массива, расположенных между первым и последним нулевыми элементами;

3) преобразовать массив таким образом, чтобы сначала располагались все положительные элементы, а потом – все отрицательные (элементы, равные 0, считать положительными).

 

Вариант 4

 

В одномерном массиве, состоящем из n вещественных элементов:

1) вычислить сумму элементов массива с нечетными номерами;

2) вычислить сумму элементов массива, расположенных между первым и последним отрицательными элементами;

3) сжать массив, удалив из него все элементы, модуль которых не превышает 12. Освободившиеся в конце массива элементы заполнить нулями.

 

Вариант 5

В одномерном массиве, состоящем из n вещественных элементов:

1) найти максимальный элемент массива;

2) вычислить сумму элементов массива, расположенных до последнего положительного элемента;

3) сжать массив, удалив из него все элементы, модуль которых находится в интервале [a,b]. Освободившиеся в конце массива элементы заполнить нулями.

 

Вариант 6

В одномерном массиве, состоящем из n вещественных элементов:

1) найти минимальный элемент массива;

2) вычислить сумму элементов массива, расположенных между первым и последним положительными элементами;

3) преобразовать массив таким образом, чтобы сначала располагались все элементы, равные нулю, а потом все остальные.

 

Вариант 7

В одномерном массиве, состоящем из n целых элементов:

1) вычислить номер максимального элемента массива;

2) вычислить произведение элементов массива, расположенных между первым и вторым нулевыми элементами;

3) преобразовать массив таким образом, чтобы в первой его половине располагались все элементы, стоявшие в нечетных позициях, а во второй половине – элементы, стоявшие в четных позициях.

Вариант 8

В одномерном массиве, состоящем из n целых элементов:

1) вычислить номер минимального элемента массива;

2) вычислить сумму элементов массива, расположенных между первым и вторым отрицательными элементами;

3) преобразовать массив таким образом, чтобы сначала располагались все элементы, модуль которых не превышает 1, а потом все остальные.

 

 

Вариант 9

В одномерном массиве, состоящем из n целых элементов:

1) вычислить максимальный по модулю элемент массива;

2) вычислить сумму элементов массива, расположенных между первым и вторым положительными элементами;

3) преобразовать массив таким образом, чтобы элементы, равные 0, располагались после всех остальных.

 

Вариант 10

В одномерном массиве, состоящем из n целых элементов:

1) вычислить минимальный по модулю элемент массива;

2) вычислить сумму модулей элементов массива, расположенных после первого элемента, равного 0;

3) преобразовать массив таким образом, чтобы в первой его половине располагались все элементы, стоявшие в четных позициях, а во второй половине – элементы, стоявшие в нечетных позициях.

Вариант 11

В одномерном массиве, состоящем из n вещественных чисел:

1) вычислить номер минимального по модулю элемента массива;

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

3) сжать массив, удалив из него все элементы, модуль которых находится в интервале [a,b]. Освободившиеся в конце массива элементы заполнить нулями.

 

 

Вариант 12

В одномерном массиве, состоящем из n вещественных чисел:

1) вычислить номер максимального по модулю элемента массива;

2) вычислить сумму модулей элементов массива, расположенных после первого положительного элемента;

3) преобразовать массив таким образом, чтобы сначала располагались все элементы, целая часть которых находится в интервале [a,b], а потом – все остальные.

 

Вариант 13

В одномерном массиве, состоящем из n вещественных чисел:

1) вычислить количество элементов массива, лежащих в диапазоне от А до В;

2) вычислить сумму элементов массива, расположенных после максимального элемента;

3) упорядочить элементы массива по убыванию модулей элементов.

Вариант 14

В одномерном массиве, состоящем из n вещественных чисел:

1) вычислить количество элементов массива, равных 0;

2) вычислить сумму элементов массива, расположенных после минимального элемента;

3) упорядочить элементы массива по возрастанию модулей элементов.

 

Вариант 15

В одномерном массиве, состоящем из n вещественных чисел:

1) вычислить количество элементов массива, больших С;

2) вычислить произведение элементов массива, расположенных после максимального по модулю элемента;

3) преобразовать массив таким образом, чтобы в первой его половине располагались все отрицательные элементы, а во второй половине – все положительные элементы (считать 0 положительным элементом).

 

Вариант 16

В одномерном массиве, состоящем из n вещественных чисел:

1) вычислить количество отрицательных элементов массива;

2) вычислить сумму модулей элементов массива, расположенных после минимального по модулю элемента;

3) заменить все отрицательные элементы массива их квадратами и упорядочить элементы массива по возрастанию.

 

Вариант 17

В одномерном массиве, состоящем из n целых чисел:

1) вычислить количество положительных элементов массива;

2) вычислить сумму элементов массива, расположенных после последнего элемента, равного 0;

3) преобразовать массив таким образом, чтобы сначала располагались все элементы, целая часть которых не превышает 1, а потом – все остальные.

Вариант 18

В одномерном массиве, состоящем из n вещественных чисел:

1) вычислить количество элементов массива, меньших С;

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

3) преобразовать массив таким образом, чтобы сначала располагались все элементы, отличающиеся от максимального не более чем на 20%, а потом – все остальные.

 

Вариант 19

В одномерном массиве, состоящем из n вещественных чисел:

1) найти произведение отрицательных элементов массива;

2) найти сумму положительных элементов массива, расположенных до максимального элемента;

3) изменить порядок следования элементов в массиве на обратный.

 

Вариант 20

В одномерном массиве, состоящем из n вещественных чисел:

1) вычислить произведение положительных элементов массива;

2) вычислить сумму положительных элементов массива, расположенных до минимального элемента;

3) упорядочить по возрастанию отдельно элементы, стоящие на четных местах, и элементы, стоящие на нечетных местах.

 





©2015 www.megapredmet.ru Все права принадлежат авторам размещенных материалов.