Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Обработка массива




При работе с одномерными массивами существует большое количество алгоритмов, которые считаются типовыми, т.е. часто встречающимися в практических задачах: ввод-вывод массива, вычисление значений элементов массива, поиск суммы и (или) произведения элементов массива, поиск максимального (минимального) элемента массива, упорядочивание элементов массива, добавление (вставка) новых элементов в массив, удаление данных из массива и т.д.

Пример. Дан массив действительных чисел из n элементов. Найти максимальный по модулю элемент и разделить все элементы массива на полученное значение. Вывести на экран монитора массив после обработки.

Возможный текст программы:

#include <math.h>

#include <iostream>

using namespace std;

int main()

{

const int n = 5;

double x[n], max;

int i; // Задаём массив из n действительных чисел

cout << "Input " << n << " numbers:" << endl;

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

cin >> x[i];

// Поиск максимального по модулю элемента массива

// Предположим, что x[0] - это и есть максимальный

// по модулю элемент массива:

max = fabs(x[0]);

 

// А теперь пробуем себя опровергнуть:

for(i = 1; i < n; i++) //перебираем все элементы массива с первого

if(fabs(x[i]) > max) // сравниваем с текущим максимальным

max = fabs(x[i]); // выполняем переприсваевание

cout << "max=" << max << endl; // Максимум найден:

 

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

x[i] /= max; // Делим все элементы на max

 

cout << "Massiv:" << endl; // Распечатка массива

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

cout << x[i] << endl;

return 0;

}


Лабораторная работа №7
Использование числовых одномерных массивов

ЦЕЛЬ РАБОТЫ: освоение способов описания массива, приобретение навыков организации ввода-вывода и обработки массива.

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

Задание I

Изучить порядок описания, ввода-вывода и обработки массивов:

1. Набрать и отладить программу нахождения суммы элементов массива, стоящих в нечетных позициях. Оформить в тетради, записав условие, код, блок-схему и результат работы, объяснить назначение операторов 0-4.

#include <time.h>

#include <stdlib.h>

int main()

{

setlocale(LC_ALL,”Rus”);

srand(time(0)); // Оператор 0

const int N=10;

int Arr[N];

int sum=0; // Оператор 1

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

{

Arr[i]= rand()%100; // Оператор 2

cout<<Arr[i]<<"\t";

}

for (int i=1;i<N;i+=2) // Оператор 3

sum+=Arr[i]; // Оператор 4

cout<<"\nСумма = "<<sum<<endl;

return 0;

}

2. Набрать и отладить программу нахождения суммы элементов массива, кратных 3. Оформить в тетради, записав условие, код, блок-схему и результат работы, объяснить назначение операторов 0-3.

#include <time.h>

#include <stdlib.h>

int main()

{

time_t t;

srand((unsigned)time(&t)); // Оператор 0

const int N=10;

int Arr[N];

int sum=0; // Оператор 1

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

{

Arr[i]=rand()%50; // Оператор 2

cout<<Arr[i]<<"\t";

}

for (int i=1;i<N;i++)

if (Arr[i]%3==0) sum+=Arr[i]; // Оператор 3

cout<<"\nSumma="<<sum<<endl;

return 0;

}

3. набрать и отладить программу нахождения наибольшего элемента массива из N целых чисел с выводом номеров наибольших элементов. Оформить в тетради, записав условие, код, блок-схему и результат работы, объяснить назначение операторов 1-6.

#include <time.h>

#include <stdlib.h>

int main()

{

srand(time(0));

const int N=10;

int Arr[N];

int index[N]={0}; // Оператор 1

int max, k=0;

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

Arr[i]=rand()%100-50; // Оператор 2

cout<<Arr[i]<<"\t";

}

max=Arr[0]; // Оператор 3

for (int i=1;i<N;i++)

if (Arr[i]>=max) // Оператор 4

{

max=Arr[i];

index[k]=i+1; // Оператор 5

k++;

}

k=0;

cout<<"\nMax="<<max<<"\nИндексы: ";

while(index[k]>0) // Оператор 6

{

cout<<index[k]-1<<"\t";

k++;

}

return 0;

}

Задание II

В соответствии с вариантом составить и реализовать программу:

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

2. Массив содержит 2 n чисел. Из суммы первых n его элементов вычесть сумму последних n элементов.

3. Транспонировать массив, т.е. по а 1, а 2,..., аn сформировать аn, аn -1,..., a 1. В полученном массиве найти индекс минимального элемента.

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

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

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

7. В массиве из 2 n чисел найти сумму квадратов элементов с четными индексами и сумму кубов элементов с нечетными индексами.

8. Из чисел а 1, а 2,..., аn выбрать те, которые больше по модулю заданного числа с, и образовать из них новый массив, сохранив порядок следования элементов.

9. Из массива целых чисел составить три других, в первый из которых записать числа, кратные 5, во второй - числа, кратные 7, а в третий - остальные числа.

10. Задан массив из 100 целых случайных чисел, принадлежащих промежутку [0, 100]. Найти сумму тех элементов массива, которые больше 15, но меньше 45, а также вычислить количество этих элементов.

11. В линейном массиве заменить все элементы на число m (m – индекс максимального элемента).

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

13. Найти сумму элементов данного массива. Разделить каждый элемент исходного массива на полученное значение.

14. Вычислить сумму и разность массивов одного размера.

15. Найти среднее арифметическое значение элементов заданного массива. Преобразовать исходный массив, вычитая из каждого элемента среднее значение.

16. Даны два массива одинакового размера. Рассматривая их как арифметические векторы, найти длины этих векторов и их скалярное произведение.

17. Заданы два массива разных размеров. Объединить их в один массив, включив второй массив между k -ым и (k + 1)-ым элементами первого (k вводится с клавиатуры).

18. Вычесть из положительных элементов данного массива элемент с номером k 1 а к отрицательным элементам прибавить элемент с номером k 2. Нулевые элементы заменить 1. Номера k 1 и k 2 вводятся с клавиатуры.

19. К четным элементам целочисленного массива прибавить данное число а, а из элементов с четными номерами вычесть данное число b.

20. Дан первый член геометрической прогрессии и ее знаменатель. Сформировать одномерный массив, элементами которого служат первые n членов этой прогрессии.

21. Сформировать массив из первых 30 членов последовательности Фибоначчи.

22. Вставить одно и то же число, введенное с клавиатуры, перед каждым отрицательным элементом заданного целочисленного массива.

23. Дан массив четного размера. Поменять местами его половины следующим образом: первый элемент - с последним, второй - с предпоследним элементом и т.д.

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

25. Задан массив из n целых случайных чисел, принадлежащих промежутку
[-25, 25]. Найти произведение тех элементов массива, которые больше 1, но меньше 15, а также вычислить количество четных элементов массива.

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

1. Дайте определение производного типа данных, структурированного типа.

2. Дайте определение массива.

3. Каким может быть тип элементов массива?

4. Имя, размер и размерность массива.

5. Какова структура одномерного массива?

6. Правила описания одномерного массива.

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

8. Как осуществляется ввод массива?

9. Какие способы ввода массива вы знаете?

10. Вывод линейного массива.

Пример выполнения задания II лабораторной работы

Задание. Массив D содержит 24 значения атмосферного давления за каждый час в течение суток. Определить, какое значение атмосферного давления было наибольшим и в какое время оно было зафиксировано.

Решение




Поделиться с друзьями:


Дата добавления: 2014-11-16; Просмотров: 1099; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.028 сек.