- •Лабораторная работа № 6. Алгоритмы работы со структурированными типами данных
- •Стандартные алгоритмы работы с одномерными массивами Теория
- •Примеры
- •Контрольные вопросы
- •Задания для лабораторной работы
- •Формирование массива Теория
- •Примеры
- •Контрольные вопросы
- •Задание для лабораторных работ
- •Двумерный массив Теория
- •Примеры
- •Контрольные вопросы
- •Задания для лабораторной работы
Примеры
Вычислить произведение элементов массива.
Исходные данные:n элементов вещественного массива a, n – целый тип.
Результат:Произведение элементов массива p – целый тип.
Тестовый пример:при n=5,
элементы массива a=: 1 3 5 3 4, p=180.
Найти среднее арифметическое значение элементов массива, не превышающих числа a
Исходные данные: N элементов вещественного массива b. Вещественное число a.
Результат:Среднее арифметическое значениеsr.
Промежуточные значения:
i- Индекс элементов массива
s- Сумма элементов массива, не превышающих числоa.
k- Количество элементов массива, не превышающих числоa.
Тестовый пример:
при n=7,a=2,
элементы массива b=1 -3 5 4 -4 6 2,sr=-1
Определить, сколько элементов целочисленного массива стоит до первого элемента, значение которого меньше своего индекса.
Исходные данные: Целочисленный массивzизnэлементов.
Результат:i-1 - Количество элементов, стоящих до первого элемента, меньшего своего индекса.
Тестовый пример:приn=7, элементы массиваz=1 6 15 4 0 6 -1,i-1=4.
Найти минимальный элемент и его индекс среди элементов массива с номерами от k до l.
Исходные данные: Целочисленный массив d из n элементов
k– начало поиска.
l– конец поиска.
Результаты:im- Номер минимального элемента в заданном наборе элементов. Для минимального элемента дополнительная переменная не нужна, потому что значение минимального элемента – этоd[im].
Тестовый пример: приn=7,k=1,l=4 элементы массиваd=1 -3 5 4 -4 -6 2,im=4,d[im]=-4.
Определить номер и значение минимального элемента среди положительных элементов массива вещественных чисел
Исходные данные:Вещественный массивaизnэлементов.
Результат:im– Номер минимального элемента.
Промежуточные значения:k– определяет наличие положительного элемента в массиве.kравно нулю пока не встретится положительный элемент.
Тестовый пример: приn=10 и элементах: -3, -5, 7, -2, 5, 2, -7, 5,3, 6
im=5, a[5]=2
В целочисленном массиве найти номера двух первых равных элементов.
Исходные данные: Целочисленный массивdизnэлементов.
Результат:kl– Номера первых равных элементов.
В данном примере поиск равных элементов лучше вести в процедуре, в этом случае при нахождении равных элементов можно досрочно выйти их процедуры, а значит сразу из двух циклов.
Тестовый пример: приn=7, элементы 4, 6, 3, 6, 3, 7, 1,k=1,l=3.
Заменить элементы, имеющие четное значение нулем.
Исходные данные: Целочисленный массивaизnэлементов.
Результат:Целочисленный массивaизnэлементов.
Тестовый пример: приn=7
введенный массив: 4, 6, 7, 9, 3, 2, 1;
преобразованный массив: 0, 0, 7, 9, 3, 0, 1.
Переставить местами значения элементов двух массивов, имеющих четные индексы.
Исходные данные:Вещественные массивыcиdизnэлементов.
Результат:Вещественные массивыcиdизnэлементов.
Тестовый пример:приn=5
введенные массивы:
c: 1, 2, 3, 4, 5
d: -1, -2, -3, -4, -5.
преобразованные массивы:
c: 1, -2, 3, -4, 5
d: -1, 2, -3, 4, -5.
Удалить элемент с номером k.
Дано:Вещественный массивfизnэлементов,
k– номер удаляемого элемента.
Результат:Вещественный массивfизn-1 элементов.
При удалении элементы массива сдвигаются влево.
Тестовый пример: приn=7 иk=4
ввод: 5, 6, 4, 8, 1, 9, 2
вывод: 5, 6, 4, 1, 9, 2; n=6.
Вставить в массив после заданного элемента нуль.
Дано:Целочисленный массивxизnэлементов,
p– номер элемента.
Результат:Целочисленный массивxизn+1 элементов.
При вставке элементы маccива сдвигаются вправо. Чтобы не потерять элементы, сдвиг выполняется с конца
Тестовый пример:n=5,p=3,
ввод: 7, 3, 4, 8, 1; вывод: 7, 3, 4, 0, 8, 1.
Создать программу, обеспечивающую работу следующих пунктов меню.
Ввод массива целых чисел из 20 элементов.
Генерация 20 .элементов массива от -100 до 100.
Замена в массиве отрицательных элементов нулем.
Вывод элементов массива.
Конец работы.
Исходные данные: Массивaиз 20 целых чисел.
Текст программы:
# include <iostream>
# include <conio.h>
#include <locale>
# include <time.h>
# include <cstdlib>
using namespace std;
void vvod(int a[], int n);
void generac(int a[], int n);
void replace(int a[], int n);
void vivod(int a[], int n);
void main()
{srand((unsigned)time(NULL));
setlocale(0, "");
int a[20];
int n,k;
cout<<"введите количество элементов массива"; cin>>n;
do
{cout<<"1. Ввод массива a"<<endl;
cout<<"2. Генетация элементов массива a"<<endl;
cout<<"3. Замена отрицательных элементов нулями"<<endl;
cout<<"4. Вывод элементов массива"<<endl;
cout<<"5. Конец работы"<<endl;
cout<<"Укажите номер пункта меню"; cin>>k;
switch (k)
{case 1: vvod(a,n);break;
case 2: generac(a,n); break;
case 3: replace(a,n); break;
case 4: vivod(a,n);break;
case 5: cout<<"Конец работы"<<endl; break;
default: cout<<"Такого пункта нет"<<endl;
}
if (k==5) break;
} while(true);
_getch();
}
void vvod(int a[], int n)
{
cout<<"Введите элементы массива"<<endl;
for(int i=0;i<n;i++)
cin>>a[i];
}
void generac(int a[], int n)
{ for(int i=0;i<n;i++)
a[i]=rand()%(201)-100;
}
void replace(int a[], int n)
{for(int i=0;i<n;i++)
if(a[i]<0) a[i]=0;
}
void vivod(int a[], int n)
{cout<<"Массив a"<<endl;
for(int i=0;i<n;i++)
cout<<a[i]<<"\t";
cout<<endl;
}
Результат:
Задание 1.Написать и отладить программы для примера 6.