Помощничек
Главная | Обратная связь


Археология
Архитектура
Астрономия
Аудит
Биология
Ботаника
Бухгалтерский учёт
Войное дело
Генетика
География
Геология
Дизайн
Искусство
История
Кино
Кулинария
Культура
Литература
Математика
Медицина
Металлургия
Мифология
Музыка
Психология
Религия
Спорт
Строительство
Техника
Транспорт
Туризм
Усадьба
Физика
Фотография
Химия
Экология
Электричество
Электроника
Энергетика

Преобразование и построение одномерных массивов



Линейный поиск в массиве

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

 

Пример 1. Найти первый положительный элемент массива.

#include <iostream.h>

main()

{ const int n=5;

int m[n]={-1,-2,-1,3,-5};

int I;

for (I=0;I<n && m[I]<=0 ;I++)

;

if(I>=n)

cout<<”no”;

else

cout<<m[I];

}

 

Пример 2. Найти все простые числа , меньшие заданного натурального числа n.

Вариант 2.

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

#include <iostream.h>

main()

{ long d,k,n,m,i;

long p[100];

cin>>n;

k=5; m=0;

p[0]=3;

cout<<1<<endl<<2<<endl<<3<<endl;

while (k<=n)

{ for (i=0;i<=m && p[i]*p[i]<=k && k%p[i]!=0;i++)

;

if(i>m || p[i]*p[i]>k)

{ cout<<k<<endl;

m=m+1;

p[m]=k;

}

k=k+2;

}

}

Построение массива без повторений

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

#include <iostream.h>

#include <iomanip.h>

#include <math.h>

main()

{ const int n=10;

int i,j,k,tmp,rez[10],m[n]={2,3,2,5,9,-1,9,3,2,2};

i=-1;

for(j=0;j<n;j++)

{ for(k=0;k<=i && rez[k]!=m[j];k++)

;

if(k>i)

{ i=i+1; rez[i]=m[j]; }

}

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

cout<<setw(3)<<rez[j];

}

Упражнения

Даны два массива целых чисел a и b , каждый из которых не содержит повторяющихся элементов

1. Построить пересечение массивов a и b

2. Построить объединение массивов a и b

3. Получить все элементы массивов а, которые не входят в массив b.

4. Получить все элементы массивов a и b, которые не входят в них одновременно.

5. Получить все элементы, содержащиеся хотя бы в одном из массивов a и b (если число есть в обоих массивах, в новом оно должно появиться только один раз)

6. Верно ли, что все элементы массива а входят в массив b

7. Верно ли, что все элементы массива а входят в массив b и при этом а[1] встречается в массиве b не позднее , чем а[2], а[2] встречается в массиве b не позднее , чем а[3] и т.д.

8. Верно ли, что два массива, которые могут содержать повторяющиеся элементы, отличаются не более чем порядком их следования

Дан массив целых чисел a, который может содержать повторяющиеся элементы

9. Получить все числа, которые входят в массив по одному разу

10. Получить все числа, взятые по одному из каждой группы равных элементов

11. Найти число различных элементов массива

12. Выяснить, сколько чисел входят в массив по одному разу

13. Выяснить, сколько чисел входят в массив более чем по одному разу

14. Выяснить, имеется ли массиве хотя бы одна пара совпадающих чисел

15. Найти число повторяющееся в массиве максимальное количество раз

16. Найти число вхождений каждого элемента массива

17. Удалить из массива а все отрицательные элементы

18. Удалить из массива а все элементы , значения которых совпадают с максимальным

19. Переставить все элементы массива так, чтобы сначала расположились все ее неотрицательные элементы, а затем все отрицательные. Порядок как среди неотрицательных элементов, так и среди отрицательных должен быть сохранен прежним

20. Циклически сдвинуть на k позиций влево все элементы массива

21. Расположить все элементы массива в обратном порядке

22. Преобразовать массив по следующему правилу : а[k]=max a[j] при 0<=j<=k

23. Найти упорядоченную по возрастанию последовательность подряд расположенных элементов массива максимальной длины

24. Найти симметричную последовательность подряд расположенных элементов массива максимальной длины

25. Найти последовательность подряд расположенных неповторяющихся элементов массива максимальной длины

 




Поиск по сайту:

©2015-2020 studopedya.ru Все права принадлежат авторам размещенных материалов.