# include <iostream.h>
const int n=10; //определяем константой кол-во элементов
void main()
{
int a[n];
int i, max;
//Ввод массива с клавиатуры
cout<<”enter array a”<<endl;
for (i=0; i<n; i++)
{
cout<<”a[“<<i<<”]=”;
cin>>a[i];
}
//Вывод массива на экран
cout<<”array a”<<endl;
for (i=0; i<n; i++)
{
cout<<a[i]<<’ ‘;
cout<<endl;
}
max=a[0]; //присваиваем максимуму первый элемент, а затем в цикле сравниваем с каждым элементом в цикле
for (i=1; i<n; i++)
if (max < a[i]) max=a[i];
cout<<”max=”<<max<<endl;
}
Примечание
Общая структура решения задач с массивами(сумма, максимальный элемент, упорядочивание массива, сдвиг массива):
Описание переменных
Ввод данных
Соответствующие вычисления
Вывод результата
Задача 2
Циклический сдвиг массива влево на одну позицию
Пример
На входе: 5 3 4 2
На выходе: 3 4 2 5
# include <iostream.h>
const int n=10;
void main()
{
int a[n];
int i, r;
//Ввод массива с клавиатуры
cout<<”enter array a:”<<endl;
for (i=0; i<n; i++)
{
cout<<”a[“<<i<<”]=”;
cin>>a[i];
}
r=a[0];
for (i=1; i<n; i++)
a[i-1]=a[i];
a[n-1]=r;
//Вывод массива на экран
cout<<”array a”<<endl;
for (i=0; i<n; i++)
{
cout<<a[i]<<’ ‘;
cout<<endl;
}
}
Задача 3
Подсчитать количество максимумов в массиве
# include <iostream.h>
void main()
const int n=10;
{
int a[n];
int i, number, max;
//Ввод массива с клавиатуры
cout<<”enter array a”<<endl;
for (i=0; i<n; i++)
{
cout<<”a[“<<i<<”]=”;
cin>>a[i];
}
max=a[0];
number=1;
for (i=1; i<n; i++)
if (max< a[i])
{
max=a[i];
number=1;
}
else
if (max==a[i]) number++;
cout<<”max=”<<max<<endl;
cout<<”number=”<<number<<endl;
}
Задача 4
Подсчитать сумму элементов массива
# include <iostream.h>
void main()
const int n=10;
{
int a[n];
int i, sum;
//Ввод массива с клавиатуры
cout<<”enter array a”<<endl;
for (i=0; i<n; i++)
{
cout<<”a[“<<i<<”]=”;
cin>>a[i];
}
sum=0;
for (i=0; i<n; i++)
sum=sum+a[i]; //возможный вариант y+=a[i];
cout<<”sum=”<<sum<<endl;
}
Задача 5
Стратегия вычисления A- и E- кванторов
(проверка существования элемента в массиве)
При вычислении E- квантора булевская переменная задается как false.
При вычислении A- квантора булевская переменная
задается как true.
1) t=(Ei)[ a[i]<0 ]
t= true, если в массиве существует отрицательный
элемент, в противном случае t=false.
# include <iostream.h>
const int n=10;
void main()
{
int a[n];
int i;
bool f=false;
//Ввод массива с клавиатуры
cout<<”enter array a”<<endl;
for (i=0; i<n; i++)
{
cout<<”a[“<<i<<”]=”;
cin>>a[i];
}
//Вывод массива на экран
cout<<”array a”<<endl;
for (i=0; i<n; i++)
{
cout<<a[i]<<’ ‘;
cout<<endl;
}
for (i=0; i<n&&!t; i++)
if (a[i]<0) t=true;
if (t) cout<<”exist”<<endl;
else cout<<”not exist”<<endl;
}
2) t = (Ai)[ a[i]>=0 ]
T-true, если в массиве все элементы больше
Или равны нулю
# include <iostream.h>
void main()
const int n=10;
{
int a[n];
int i;
bool p=true;
//Ввод массива с клавиатуры
cout<<”enter array a”<<endl;
for (i=0; i<n; i++)
{
cout<<”a[“<<i<<”]=”;
cin>>a[i];
}
//Вывод массива на экран
cout<<”array a”<<endl;
for (i=0; i<n; i++)
cout<<a[i]<<’ ‘;
cout<<endl;
for (i=0; i<n&&p; i++)
if(a[i]<0) p = false;
if (p) cout<<”any”<<endl;
else cout<<” not any”<<endl;
}
Лекция №7
Массивы(продолжение)
Методы сортировки массивов.
Алгоритм сортировки методом нахождения локальных экстремумов
Алгоритм сортировки методом обмена пар
Алгоритм сортировки вставкой
Задача 1
Упорядочить массив по неубыванию.
Алгоритм сортировки методом нахождения локальных экстремумов
Необходимо отсортировать массив удовлетворяющий
условию (Ai)[ a[i]<=a[i+1] ].
(для любого i справедливо а[i]<=a[i+1])
В цикле проверяем условие,
если a[i] >a[i+1], то a[i] и a[i+1 ]меняем местами
# include <iostream.h>
const int n=10;
void main()
{
int a[n];
int i, j,r;
//Ввод массива с клавиатуры
cout<<”enter array a”<<endl;
for (i=0; i<n; i++)
{
cout<<”a[“<<i<<”]=”;
cin>>a[i];
}
//Вывод массива на экран
cout<<”array a”<<endl;
for (i=0; i<n; i++)
cout<<a[i]<<’ ‘;
cout<<endl;
for(i=0; i<n-1; i++)
for (j=i+1; j<n; j++)
if (a[i]>a[j])
{
r=a[i]; a[i]=a[j]; a[i]=r;
}
//Вывод массива на экран
cout<<”array a”<<endl;
for (i=0; i<n; i++)
cout<<a[i]<<’ ‘;
cout<<endl;
}
Задача 2.