Студопедия

КАТЕГОРИИ:


Архитектура-(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. Рассмотрим задачу поиска максимального и минимального значения в массиве. Для инициализации массива используем генератор случайных чисел, который инициализирует функция randomize() случайным значением, для её использования необходим заголовочный файл time.h.

/*Обработка массивов:поиск минимума и максимума*/

#include<iostream.h>

#include<time.h>

#include<stdlib.h>

#define SIZE 15

void main()

{

int ara[SIZE];

int max, min, ctr;

randomize();// инициализация генератора случайных чисел

for(ctr=0; ctr<SIZE; ctr++)

{

ara[ctr]=rand()%100; // ф-ия rand() генерирует случайное число

}

cout<<"вывод массива";

for(ctr=0; ctr<SIZE; ctr++)

{cout<<ara[ctr]<<" ";

}

cout<<" "; //вывод пустой строки//

max=min=ara[0];

for(ctr=0; ctr<SIZE; ctr++)

{

if (ara[ctr]>max)

max=ara[ctr];

if (ara[ctr]<min)

min=ara[ctr];

}

cout<<"max="<<max<<" "<<"min="<<min<<endl;

}

Пример 2. Дан вектор целых чисел. Найти количество элементов, значения которых повторяются более одного раза.

#include<iostream.h>

#define SIZE 10

void main()

{

int abba[SIZE];

int i,j,numb;

int yes=0;

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

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

cin>>abba[i];

numb=0;

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

{

yes=0;

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

{

if((abba[i]==abba[j])&&(i!=j))

yes=1;

}

if (yes==1)

numb+=1;

continue;

}

if(numb==0)

cout<<"NO"<<endl;

else

cout<<"среди элементов вектора"<<" "<<numb<<" "

<<"входят более одного раза";

}

Пример3. Элементы массива ara упорядочены по возрастанию. Требуется присвоить переменной номер элемента массива ara, равного p или 0, если такого элемента нет.

Для решения поставленной задачи используется следующий метод двоичного (бинарного) поиска: сравнить p со средним элементом массива (или элементом около середины). Если эти числа равны, поиск завершается, если p меньше среднего элемента, то p надо искать в левой половине массива, в противном случае в правой. К выбранной половине применяется этот же алгоритм. Бинарный поиск исключает половину ещё непроверенных элементов массива после каждого сравнения.

/* Элементы массива упорядочены по возрастанию.

Требуется присвоить переменной к номер элемента массива,

равного у, или 0, если такого элемента нет. Использовать

метод двоичного (бинарного) поиска */

#include <iostream.h>

//#define L 8

void main()

{

int k=0; //элемент массива, равный искомому числу p

int m; //индекс массива

int p=90; // число, которое надо найти

int f=1; // минимальный индекс диапазона

int l=8; //максимальный индекс диапазона

int q=0; // переменная, необходимая для выхода из цикла

int ara[L]={1,3,8,9,23,56,60,90};

p=90;f=1; l=8; k=0;q=0;

do

{

m=(l+f)/2;

if (m==q)

break;

if (ara[m]==p)

k=p;

else

p>ara[m]?(f=m+1):(l=m-1);

q=m;

}

while (k==0);

if(k==0)

cout<<"нет таких чисел";

else

cout<<"число найдено "<<k<<endl<<"его индекс "<<m;

}

<== предыдущая лекция | следующая лекция ==>
Инициализация символьного массива | Сортировка массивов
Поделиться с друзьями:


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


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



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




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