
- •Глава 3 Одномерные массивы
- •Нахождение суммы элементов массива
- •Суммирование элементов массива с учетом условия
- •Нахождение среднего арифметического
- •Нахождение среднего арифметического при условии
- •Поиск максимального элемента в массиве
- •Поиск индексов в массиве
- •Проверка упорядоченности массива
- •Обмен значений массива
- •Суммирование соседних элементов массива
- •Подсчет соседних элементов по условию
- •Перенос модулей значений в другой массив
- •Подсчет количества максимальных элементов
- •Изменение значений элементов массива с заданными свойствами
- •Нахождение индексов элементов с заданными свойствами
- •Удаление из массива определенного элемента
- •Циклическое перемещение элементов массива
- •Заполнение массива случайными числами
- •Нахождение суммы группы элементов массива
Изменение значений элементов массива с заданными свойствами
Необходимо изменить определенные значения в массиве. Так, если значение элемента в массиве отрицательное, то меняется знак элемента.
Скажем, если A[5]=-10, то после коррекции получим:A[5]=10. Кроме того, если значение элемента массива больше 100, то в элемент массива заносится ноль. В листинге 3.14 приведена необходимая программная разработка.
Листинг 3.14. Изменение значений элементов в массиве
#include <iostream>
using namespace std;
#include <conio.h>
#include <math.h>
#define N 15
#define NM 16
void main()
{
int A[N];
int J;
for (J=1;J<=N;J++)
A[J]=rand()%300 - 150;
for (J=1;J<=N;J++)
{
cout <<A[J]<<" ";
if ( A[J]< 0 )
A[J]=-A[J];
if ( A[J]> 100)
A[J]=0;
cout <<A[J]<<" ";
}
_getch();
}
Нахождение индексов элементов с заданными свойствами
Необходимо найти и вывести на экран номера элементов массива, значения которых кратны 4. В листинге 3.15 приведена необходимая программная разработка, а на рис. 3.10 представлена блок-схема алгоритма.
Листинг 3.15. Нахождение индексов элементов массива кратных 4
#include <iostream>
using namespace std;
#include <conio.h>
#include <math.h>
#define N 15
#define NM 16
void main()
{
int A[N];
int J;
for (J=1;J<=N;J++)
A[J]=rand()%100;
for (J=1;J<=N;J++)
{
if ((A[J] % 4) == 0)
cout <<"\n"<<J;
}
_getch();
}
Рис. 3.10. Блок-схема к программе листинга 3.15
Удаление из массива определенного элемента
Допустим, имеется массив из N элементов. Необходимо произвести удаление элемента с определенным индексом (вводимым с клавиатуры). Один из вариантов программы показан в листинге 3.16, а на рис. 3.11 приведена блок-схема данного алгоритма.
Листинг 3.16. Удаление элемента из массива
#include <iostream>
using namespace std;
#include <conio.h>
#include <math.h>
#define N 10
#define NM 11
void main()
{
int A[NM];
int J,K;
for (J=1;J<=N;J++)
A[J]=rand()%100;
cout <<"\nВведите индекс удаляемого элемента";
cin>>K;
for (J=K;J<N;J++)
A[J]=A[J+1];
for (J=K;J<N;J++)
A[J]=A[J+1];
for (J=1;J<N;J++)
cout <<A[J]<<" ";
_getch();
}
Рис. 3.11. Блок-схема к программе листинга 3.16
Циклическое перемещение элементов массива
Допустим, необходимо произвести циклическое перемещение элементов по такой схеме: второй элемент перемещается на место первого, третий на место второго и т. д. Исходный первый элемент переходит в последний элемент массива.
Один из вариантов программы показан в листинге 3.17, а на рис. 3.12 представлена блок-схема алгоритма.
Листинг 3.17. Циклическое перемещение
#include <iostream>
using namespace std;
#include <conio.h>
#include <math.h>
#define N 10
#define NM 11
void main()
{
int A[NM];
int J,B;
for (J=1;J<=N;J++)
A[J]=rand()%100;
B=A[1];
for (J=1;J<N;J++)
A[J]=A[J+1];
A[N]=B;
_getch();
}
Рис. 3.12. Блок-схема к программе листинга 3.17
Заполнение массива случайными числами
Требуется организовать заполнение массива случайными числами. При этом в массиве не должно оказаться одинаковых элементов.
Один из вариантов программы показан в листинге 3.18, а на рис. 3.13 приведена блок-схема алгоритма заполнения массива.
Рис. 3.13. Блок-схема к программе листинга 3.18
Листинг 3.18. Заполнение массива случайными числами
#include <iostream>
using namespace std;
#include <conio.h>
#include <math.h>
#define N 10
#define NM 11
void main()
{
int A[NM];
int J,I,Flag;
for (J=1;J<=N;J++)
A[J]=rand()%100;
J=1;
while (J<=N)
{
A[J]=rand()%(N+5);
Flag=0;
for (I=1;I<=(J-1);I++)
{
if ( A[J] == A[I] )
{
Flag=1;
break;
}
}
if ( Flag == 0)
J=J+1;
}
for (J=1;J<N;J++)
cout<<A[J]<<" ";
_getch();
}