
- •1. Краткие теоретические сведения
- •1.1. Переменные с индексами и массивы
- •1.2. Описание массивов в программах
- •1.3. Динамические массивы
- •1.4. Программирование вычислительных процессов, содержащих одномерные массивы (Алгоритмы обработки одномерных массивов)
- •1.4.1. Инициализация массива
- •1.4.2. Формирование и вывод массива
- •1.4.3. Ввод – вывод статического одномерного массива
- •1.4.4. Ввод – вывод динамического одномерного массива
- •1.4.5. Суммирование элементов одномерного массива
- •1.4.6. Табуляция значений функции, аргумент которой – одномерный массив
- •1.4.7. Поиск минимального и максимального значений одномерного массива
- •1.4.8. Сортировка значений одномерного массива по возрастанию (убыванию) методом попарного сравнения
- •1.4.9. Сортировка значений одномерного массива по возрастанию (убыванию) методом нахождения минимума (максимума)
- •Нахождения минимума для примера 10.8
- •1.4.10. Перестановка двух элементов массива
- •1.4.11. Вычисление суммы элементов массива
- •1.4.12. Подсчет количества элементов массива, удовлетворяющих заданному условию
- •1.4.13. Вычисление произведения элементов массива
- •1.4.14. Поиск элементов, обладающих заданным свойством
- •1.4.15. Поиск в упорядоченном массиве
- •1.4.16. Поиск минимального и максимального элемента массива и его порядкового номера (индекса)
- •1.4.17. Копирование массивов
- •1.4.18. Формирование нового массива
- •1.4.19. Примеры решения задач по обработке одномерных массивов
- •2. Задание
- •2.4. Задания для выполнения на занятиях
- •2.4.1. Задание 1. Вычисление сумм, количеств и произведений элементов массива
- •2.4.1.1. Условие задания
- •2.4.1.2. Пример для варианта 30
- •2.4.1.3. Программа
- •2.4.1.4. Тестирование
- •2.4.2. Задание 2. Поиск минимального и максимального элементов массива
- •2.4.2.1. Условие задания
- •2.4.2.2. Пример для варианта 30
- •2.4.2.3. Программа
- •2.4.2.4. Тестирование
- •2.4.3. Задание 3. Формирование новых массивов
- •2.4.3.1. Условие задания
- •2.4.3.2. Пример для варианта 30
- •2.4.3.3. Программа
- •2.4.3.4. Тестирование
- •2.4.4. Задание 4. Обработка упорядоченных массивов
- •2.4.4.1. Условие задания
- •2.4.4.2. Пример для варианта 30
- •2.4.4.3. Программа
- •2.4.4.4. Тестирование
- •2.4.5. Задание 5. Задачи, сводящиеся к обработке одномерных массивов
- •2.4.5.1. Условие задания
- •2.4.5.2. Пример для варианта 30
- •2.4.5.3. Программа
- •2.4.5.4. Тестирование
- •2.4.6. Задание 6. Комбинированные задачи
- •2.4.6.1. Условие задания
- •2.4.6.2. Пример для варианта 30
- •2.4.6.3. Программа
- •2.5.1.2. Пример для варианта 30
- •2.5.1.3. Программа
- •2.5.1.4. Тестирование
- •2.5.2. Задание 8. Комбинированные задания
- •2.5.2.1. Условие задания
- •Варианты заданий
- •5. Пример решения задачи (вариант 30)
- •2.5.2.2. Разработка алгоритма.
- •2.5.2.3. Определение переменных программы
- •2.5.2.4. Разработка текста программы
- •2.5.2.5. Программа
- •2.5.2.6. Отладка программы
- •2.5.2.7. Результаты работы программы
- •2.5.3. Задание 9. Комбинированные задания
- •2.5.3.1. Варианты заданий
- •2.5.3.2. Пример программы обработки динамических массивов
- •2.5.3.3. Программа
- •2.5.3.4. Тестирование
- •2.5.4. Задание 10. Вычисления элементов вектора по формуле
- •2.5.4.2. Пример для варианта 30
- •2.5.4.3. Программа
- •2.5.5.4. Тестирование
- •2.5.5. Задание 11. Вычисления сумм и произведений векторов
- •2.5.5.2. Пример для варианта 30
- •2.4.11.3. Программа
- •2.5.5.4. Тестирование
- •2.5.6. Задание 12. Произвольные задачи
- •2.5.6.2. Пример для варианта 30
- •2.5.6.3. Программа
- •2.5.6.4. Тестирование
- •3. Выводы
- •4. Требование к отчету
- •4. Краткие теоретические сведения.
- •5. Вопросы для самоконтроля
- •Литература
- •1. Краткие теоретические сведения 2
- •1.1. Переменные с индексами и массивы 2
2.5.1.2. Пример для варианта 30
Отсортировать массив по невозрастанию методом обменов рядом стоящих элементов с минимально необходимым (переменным) числом просмотров, направленных слева направо.
2.5.1.3. Программа
/*Сортировка методом попарного сравнения */
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <iostream.h>
#define m 9
int main()
{
int k, i,x;
float a[m],b, c;
// Ввод массива a
for (k=0; k<=m; k++)
{
cout <<"Введите " << k << "-ый элемент массива a: ";
cin >> a[k];
}
// Сортировка массива a по возрастанию
do
{
i = 0;x =0;
for (k=1; k<=m; k++)
{b = a[i]; c = a[k];
if (c < b) {a[i] = c; a[k] = b; x = x + 1;}
i= i + 1;
}
}
while (x>0);
// Вывод отсортированного массива a
for (k=0; k<=m; k++)
{
cout <<"k = " << k << " a[k] = " << a[k] << endl;
}
cout << "Нажмите любую клавишу..." ;
getch();
return 0;
}
2.5.1.4. Тестирование
2.5.2. Задание 8. Комбинированные задания
2.5.2.1. Условие задания
Объявить массив целых чисел и заполнить его случайными значениями. Размер массива и диапазон значений его элементов заданы в Вашем варианте индивидуального задания. В индивидуальных заданиях указано также, какую обработку массива следует произвести.
Для всех вариантов задания следует иметь в виду следующее:
– 0 считается положительным числом, если в задании не оговорен какой-то другой его статус;
– когда речь идет о какой-то последовательности чисел, имеется в виду последовательность с длиной, большей 1;
– в тех случаях, когда задание требует выполнения каких-то вычислений, разрешается выполнять их с той точностью, которую обеспечивают операции целочисленной арифметики.
Варианты заданий
№ |
Размерность массива |
Диапазон значений |
Что нужно сделать |
1 |
50 |
-100 - 100 |
Заменить все элементы с отрицательным значением на значение минимального не равного 0 положительного элемента |
2 |
200 |
-50 - 50 |
Подсчитать количество пар соседних элементов с одинаковыми значениями |
3 |
200 |
0 - 100 |
Подсчитать количество участков, которые образуют непрерывные последовательности чисел с неуменьшающимися значениями |
4 |
200 |
-50 - 50 |
Подсчитать количество пар соседних элементов, которые имеют противоположные знаки |
5 |
100 |
-100 - 100 |
Вывести начальные индексы всех непрерывных последовательностей неотрицательных чисел, длина которых больше 5 |
6 |
100 |
-100 - 100 |
Найти ту непрерывную последовательность положительных чисел, сумма элементов в которой максимальная |
7 |
100 |
-100 - 100 |
Разместить все элементы с положительными значениями в левой части массива, элементы с отрицательными значениями - в правой, а нули - между ними |
8 |
100 |
-100 - 100 |
Заменить все элементы с отрицательными значениями средним арифметическим значением всех положительных элементов |
9 |
200 |
0 - 100 |
Найти непрерывный участок из 10 элементов, сумма которых максимальна |
10 |
200 |
0 - 100 |
Найти значение 3-го по величине элемента и значения всех элементов массива, которые его превышают, заменить на найденное значение |
11 |
100 |
-50 - 50 |
Найти количество пар соседних элементов, которые имеют одинаковые абсолютные значения, но противоположные знаки |
12 |
200 |
-100 - 100 |
Во всех последовательностях положительных чисел заменить значения элементов с максимальным и минимальным значением на среднее для этой последовательности |
13 |
200 |
0 - 100 |
Найти непрерывный участок из 10 элементов, который имеет наибольшее среднее значение элементов |
14 |
100 |
-50 - 50 |
Во всех последовательностях положительных чисел изменить порядок элементов на противоположный |
15 |
200 |
-100 - 100 |
Во всех последовательностях положительных чисел ограничить снизу значения тех элементов, значения которых меньше среднего для этой последовательности |
16 |
100 |
-50 - 50 |
Заменить все элементы с положительными значениями абсолютным значением отрицательного элемента с максимальным абсолютным значением |
17 |
200 |
-50 - 50 |
Вывести начальные индексы всех непрерывных последовательностей чисел с неувеличивающимися значениями |
18 |
100 |
-50 - 50 |
Вывести начальные индексы всех непрерывных знакопеременных последовательностей чисел |
19 |
200 |
-50 - 50 |
Подсчитать количество всех, непрерывных последовательностей положительных чисел, длина которых больше 7 |
20 |
200 |
-50 - 50 |
Найти из непрерывных последовательностей отрицательных чисел ту, которая имеет наибольшее абсолютное значение среднего арифметического ее элементов |
21 |
100 |
-100 - 100 |
Разместить все элементы с нулевыми значениями в левой части массива, элементы с отрицательными значениями - за ними, а за ними - элементы с положительными значениями |
22 |
100 |
-100 - 100 |
Ограничить значения всех элементов, абсолютные значения которых превышают среднее для положительных и отрицательных элементов |
23 |
100 |
-100 - 100 |
Заменить каждый элемент на среднее арифметическое его и его соседей слева и справа. |
24 |
200 |
-50 - 50 |
Найти непрерывные участки, на которых сумма элементов равна 0 |
25 |
200 |
-50 - 50 |
Для каждого положительного элемента определить, есть ли в массиве отрицательный элемент с противоположным значением; если да, заменить эти элементы на 0 |
26 |
200 |
-50 - 50 |
Определить, какое абсолютное значение встречается в массиве чаще остальных |
27 |
200 |
-50 - 50 |
Определить среднюю длину непрерывных участков положительных чисел |
28 |
100 |
-50 - 50 |
Поменять местами 1-й положительный элемент с последним положительным элементом, 2-й - предпоследним и т.д. |
29 |
100 |
-50 - 50 |
Во всех последовательностях отрицательных чисел поменять местами эле |
30 |
100 |
-50 - 50 |
Во всех последовательностях отрицательных чисел ограничить значения тех элементов, абсолютное значение которых превышает абсолютное среднее для этой последовательности |