Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб_Раб_5С++.doc
Скачиваний:
5
Добавлен:
02.09.2019
Размер:
169.98 Кб
Скачать

1.3.2 Поиск данных в массивах

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

Пример. Определение разности между наибольшим и наименьшим элементами массива.

Без использования указателей

С использованием указателей

#include<iostream.h>

#include <conio.h>

main () {

int i, max, min, a[20];

for (i=0; i<20; i++) {

cout << "\n Вводите элемент массива: ";

cin >> a[i];

}

max = min = a[0];

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

if (max<a[i]) max=a[i];

else

if (min>a[i]) min=a[i];

cout << max-min << "\n";

getch();

}

#include<iostream.h>

#include <conio.h>

main () {

int i, max, min, a[20], *ukazatel=&a[0];

for ( i=0; i<20; i++) {

cout << "\n Вводите элемент массива: ";

cin >> *(ukazatel+i);

}

max = min = *ukazatel;

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

if (max <=*(ukazatel+i))

max =*(ukazatel+i);

else

if (min >=*(ukazatel+i))

min =*(ukazatel+i);

cout << max-min << "\n";

getch();

}

Пример. Определение последнего элемента заданного числового массива, меньшего 3.

Без использования указателей

С использованием указателей

#include<iostream.h>

#include <conio.h>

main () {

int i, a[20];

for (i=0; i<20; i++) {

cout << "\n Ввeдите число: ";

cin >> a[i];

}

cout<<"\n Последний элемент <3 равен: ";

int y=3, f=0;

for (i=19; i>=0; i--)

if (a[i]<3) {

cout << a[i];

f=1;

break;

}

if (f==0) cout << "таких элементов нет.";

getch();

}

#include<iostream.h>

#include <conio.h>

main () {

int i, a[20], *ukazatel = &a[0];

for (i=0; i<20; i++) {

cout << "\n Ввeдите число: ";

cin >> *(ukazatel+i);

}

cout<<"\n Последний элемент <3 равен: ";

int y=3, f=0;

for (i=19; i>=0; i--)

if (*(ukazatel+i)<3) {

cout << *(ukazatel+i);

f=1;

break;

}

if (!f) cout << "таких элементов нет.";

getch();

}

1.3.3 Сортировка массивов данных

Сортировкой массива называют упорядочение его элементов в соответствии с определенными правилами (как правило, по возрастанию или убыванию элементов).

Рассмотрим следующие алгоритмы сортировки массивов данных: линейная сортировка (сортировка отбором) и сортировка методом «пузырька».

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

Особенностью сортировки методом «пузырька» является не сравнение каждого элемента со всеми, а сравнение в парах соседних элементов. Данный алгоритм состоит в последовательных просмотрах от начала к концу элементов массива. Если для пары соседних элементов выполняется условие, что элемент справа больше элемента слева, то производится обмен значениями этих элементов, т.е. в процессе выполнения алгоритма постепенно «всплывают» более «легкие» элементы массива.

Без использования указателей

С использованием указателей

#include<iostream.h>

#include <conio.h>

#define n 10

main () {

int m[n], temp;

int i, k;

cout << "\n Введите " << n << "чисел для сортировки";

for (i=0; i<n; i++) cin >> m[i];

cout << "\n Исходный массив: \n";

for (i=0; i<n; i++) cout << m[i] << ",";

/*сортировкa*/

for (k=0; k<n-1; k++)

for (i=k+1; i<n; i++)

if (m[i]>m[k]) {

temp = m[i];

m[i] = m[k];

m[k] = temp;

}

cout<<"\n Упорядоченный массив: \n";

for (i=0; i<n; i++) cout << m[i] << ",";

getch();

}

#include<iostream.h>

#include <conio.h>

#define n 10

main () {

int m[n], *p=m, temp;

int i, k;

cout << "\n Введите " << n << "чисел для сортировки";

for (i=0; i<n; i++) cin >> *(m+i);

cout << "\n Исходный массив: \n";

for (i=0; i<n; i++) cout << *(p+i) << ",";

/*сортировкa*/

for (k=0; k<n-1; k++) {

for (i=k+1; i<n; i++)

if (*p>*(m+i)) {

temp = *p;

*p = *(m+i);

*(m+i) = temp;

}

p++;

}

cout<<"\n Упорядоченный массив: \n";

for (i=0; i<n; i++) cout << *(m+i) << ",";

getch();

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]