Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Упражнения. Построение массива без повторений




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

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

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

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

 

Пример 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. Найти последовательность подряд расположенных неповторяющихся элементов массива максимальной длины




Поделиться с друзьями:


Дата добавления: 2014-10-31; Просмотров: 1634; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.007 сек.