9795

Работа с массивами

Контрольная

Информатика, кибернетика и программирование

Работа с массивами Постановка задачи Задан массив M=(3,4,5,-6,3,8,1,-5,-4,9). Найти сумму, произведение всех элементов массива количество положительных, отрицательных элементов номер максимального и минимального элементов массива. Алгоритм решения...

Русский

2013-03-17

70.5 KB

1 чел.

Работа с массивами

Постановка задачи

Задан массив M=(3,4,5,-6,3,8,1,-5,-4,9). Найти сумму, произведение всех элементов массива; количество положительных, отрицательных элементов; номер максимального и минимального элементов массива.

Алгоритм решения задачи

Текст программы

Program Prog3_4;

USES CRT; {для использования процедуры ClrScr }

Type

   diapason=1..10;

   MyArray=array[diapason] of integer;

const

   m:MyArray=(3,4,5,-6,3,8,1,-5,-4,9);

var

   i : diapason; { индекс для цикла }

   sum,  { Сумма }

   prv : longint; {произведение}

   k_plus, k_minus : integer; { кол-во положительных и

           отрицательных }

   max,min : integer; {номер максимального и

        минимального элементов}

   temp : integer; {временная переменная}

begin

 ClrScr; {очистка экрана}

 {инициализация переменных}

 sum:=0;

 prv:=1;

 k_plus:=0;

 k_minus:=0;

 max:=1;

 min:=1;

 {цикл перебора всех значений массива}

 for i:=1 to 10 do

 begin

   sum:=sum+m[i];

   prv:=prv*m[i];

   if m[i]>0

   then inc(k_plus)

   else inc(k_minus);

   if m[i] > m[max] then max:=i;

   if m[i] < m[min] then min:=i;

 end;

 {вывод результата}

 for temp:=1 to 80 do write('=');

 {вывод исходного массива}

 writeln('Исходный массив M:');

 for i:=1 to 10 do Write('№',i:2,' '); writeln;

 for i:=1 to 10 do Write(m[i]:3,' '); writeln;

 for temp:=1 to 80 do write('-');

 {вывод вычисленных значений}

 Writeln('Сумма элементов массива = ',sum);

 Writeln('Произведение элементов массива = ',prv);

 Writeln('Положительных элементов в массиве: ',k_plus);

 Writeln('Отрицательных элементов в массиве: ',k_minus);

 Writeln('Максимальный элемент m[',max,']=',m[max]);

 Writeln('Минимальный элемент m[',min,']=',m[min]);

 for temp:=1 to 80 do write('=');

 writeln('Нажмите Enter...');

 readln;

end.

Результат работы программы:

==========================================

Исходный массив M:

№ 1 № 2 № 3 № 4 № 5 № 6 № 7 № 8 № 9 №10

 3   4   5  -6   3   8   1  -5  -4   9

------------------------------------------

Сумма элементов массива = 18

Произведение элементов массива = -1555200

Положительных элементов в массиве: 7

Отрицательных элементов в массиве: 3

Максимальный элемент m[10]=9

Минимальный элемент m[4]=-6

==========================================

Нажмите Enter...

Сортировка массивов

Постановка задачи

Задан массив M=(3,4,5,-6,3,8,1,-5,-4,9). Отсортировать элементы массива по возрастанию.

Алгоритм решения задачи (Линейная сортировка)

Найти наименьший элемент массива и поместить его в M[1], выполнив для этого следующие действия. Сравнить каждый элемент ряда с M[1]. Если новый элемент меньше, поменять его с M[1], если нет, ничего не делать. Затем, исключив из рассмотрения элемент в позиции 1, повторить указанный процесс, начиная с позиции 2, т.е. среди оставшихся элементов найти наименьший и поместить его в M[2]. Тоже самое проделать для всех позиций ряда, вплоть до предпоследней.

Текст программы

Program LEC3_5;

USES CRT; {для использования процедуры ClrScr }

Type

   diapason=1..10;

   MyArray=array[diapason] of integer;

const

   m:MyArray=(7,4,12,-6,3,8,1,-5,-4,9);

var

   i,j,i_min : diapason; { индекс для цикла }

   temp : integer; {временная переменная}

   k: diapason;

begin

 ClrScr; {очистка экрана}

 {вывод исходного массива}

 writeln('Исходный массив M:');

 for i:=1 to 10 do Write('№',i:2,' '); writeln;

 for i:=1 to 10 do Write(m[i]:3,' '); writeln;

 for temp:=1 to 80 do write('-');

 {=============сортировка=====================}

 for i:=1 to 9 do

 begin

   i_min:=i;

   for j:=i+1 to 10 do

   begin

     if m[j]<m[i_min]

     then i_min:=j;

   end;

   if i<>i_min then

   begin

     temp:=m[i];

     m[i]:=m[i_min];

     m[i_min]:=temp;

   end;

   for k:=1 to 10 do Write(m[k]:3,' '); writeln;

 end;

 for temp:=1 to 80 do write('-');

 writeln('Сортировка завершена! Нажмите Enter...');

 readln;

end.

Результат работы программы:

Исходный массив M:

№ 1 № 2 № 3 № 4 № 5 № 6 № 7 № 8 № 9 №10

 7   4  12  -6   3   8   1  -5  -4   9

----------------------------------------

-6   4  12   7   3   8   1  -5  -4   9

-6  -5  12   7   3   8   1   4  -4   9

-6  -5  -4   7   3   8   1   4  12   9

-6  -5  -4   1   3   8   7   4  12   9

-6  -5  -4   1   3   8   7   4  12   9

-6  -5  -4   1   3   4   7   8  12   9

-6  -5  -4   1   3   4   7   8  12   9

-6  -5  -4   1   3   4   7   8  12   9

-6  -5  -4   1   3   4   7   8   9  12

----------------------------------------

Сортировка завершена! Нажмите Enter...

Недостатки линейной сортировки

Рассмотрим задачу сортировки следующего массива:

M=(1,2,3,...,78,80,79).

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

Если массив уже отсортирован, то алгоритм линейной сортировки затратит также более 3000 операций сравнения.

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

Алгоритм сортировка по методу пузырька

Основная идея этого метода сортировки состоит в следующем:

Если  на некотором этапе M[3]<M[4] и M[4]<M[5], то сравнивать элементы M[3] и M[5] не имеет смысла! Кроме того, если выполняются следующие условия:

M[1]<M[2], M[2]<M[3], M[3]<M[4], ..., M[n-1]<M[n],

то массив является упорядоченным .

Алгоритм

Повторять следующий многопроходный процесс до тех пор пока не будет зарегистрирован проход, на котором не было ни одной перестановки. Сравнить смежные элементы ряда (т.е. сравнить M[1] с M[2], M[2] с M[3], …, M[n-1] с M[n] ). Если они стоят в обратном порядке, поменять их местами.

Пример:

1-й проход

2-й проход

3-й проход

4-й

14

14

14

14

14

11

11

11

4

4

105

11

11

11

11

14

4

4

11

11

11

105

4

4

4

4

14

14

14

14

4

4

105

21

21

21

21

21

21

21

21

21

21

105

105

105

105

105

105

105

Program Sort2; (* Сортировка методом пузырька *)

USES CRT; {для использования процедуры ClrScr }

const N=5;

Type

   diapason=1..N;

   MyArray=array[diapason] of integer;

const

   m:MyArray=(14,105,11,4,21);

var

   i, k: diapason; { индексы для циклов }

   temp : integer; {временная переменная}

   transposition:boolean; {перестановка была проведена}

begin

 ClrScr; {очистка экрана}

 {вывод исходного массива}

 writeln('Исходный массив M:');

 for i:=1 to N do Write('№',i:2,' '); writeln;

 for i:=1 to N do Write(m[i]:3,' '); writeln;

 for temp:=1 to 80 do write('-');

 {=============сортировка=====================}

 repeat

   transposition:=false;

   for i:=1 to N-1 do

     if m[i]>m[i+1] then

     begin

       temp:=m[i];

       m[i]:=m[i+1];

       m[i+1]:=temp;

       for k:=1 to N do Write(m[k]:3,' '); writeln;

       transposition:=true;

     end;

 until (not transposition);

 {=============конец сортировки================}

 for temp:=1 to 80 do write('-');

 writeln('Сортировка завершена! Нажмите Enter...');

 readln;

end.

{

Исходный массив M:

№ 1 № 2 № 3 № 4 № 5

14 105  11   4  21

--------------------------------------

14  11 105   4  21

14  11   4 105  21

14  11   4  21 105

11  14   4  21 105

11   4  14  21 105

 4  11  14  21 105

--------------------------------------

Сортировка завершена! Нажмите Enter...

}

Метод сортировки пузырьком работает тем эффективнее, чем правильнее расположены элементы ряда в его исходном состоянии. Разумеется, в общем случае было бы наивно рассчитывать на удачное расположение элементов, сложившееся случайно. Однако на практике необходимость сортировать почти упорядоченные ряды – явление довольно типичное. Например, если мы располагаем уже отсортированным рядом и намереваемся добавить к нему два новых элемента, то мы можем поместить их за максимальным элементом, а затем вновь отсортировать весь ряд методом пузырька.

Метод пузырька обладает одним интересным свойством: не существует способа точно предсказать, за сколько проходов n элементов будут полностью отсортированы. Это число может варьироваться в диапазоне от 1 (если ряд с самого начала упорядочен) до n (если все элементы стоят в обратном порядке). В противоположность этому сортировка линейным методом всегда выполняется за n–1 проход.

Замечание 1

Сортировка в порядке убывания: вместо   if m[i]<m[i]

ставим   if m[i]>m[i]

Замечание 1

Два одинаковых числа не создают проблем для описанных выше алгоритмов сортировки.

Сортировка строк

При выполнении операций сравнения (<,<=,>,>=,=,<>) над данными типа string действуют следующее правило:

  •  более короткая строка всегда меньше более длинной;
  •  если длины сравниваемых строк равны, то происходит поэлементное сравнение символов этих строк с учетом упорядоченности значений стандартного типа char.

Русские буквы:

код

символ

код

символ

код

символ

код

символ

128

А

160

а

224

р

240

Ё

129

Б

161

б

225

с

241

ё

159

Я

175

п

239

я

var i:byte;

begin

 for i:=32 to 255 do Writeln(i:3,' ',char(i));

end.

Выводы: {сравнение строк}

1) Сравниваемые строки должны быть одной длины.

2) Символы в строках должны быть приведены к одному регистру.

3) Начальные пробелы в строках должны быть удалены.

4) Необходимо учитывать нестандартное положение русских букв Ё и ё.


 

А также другие работы, которые могут Вас заинтересовать

48219. ТЕОРІЯ ЕЛЕКТРИЧНИХ КІЛ 4.42 MB
  Теорія та розрахунок трифазних лінійних кіл На попередніх лекціях ми розглядали кола однофазного змінного струму а саме такі кола в яких кожне джерело енергії створює лише одну синусоїдну ЕРС. Але на практиці основна кількість електричної енергії генерується і споживається в формі трифазного струму. Шестифазні струми використовуються при перетворенні змінного струму в постійний. Позитивний напрям фазних ЕРС приймаємо від кінця обмотки до початку напруги від початку до кінця а позитивний напрям струму співпадає з позитивним напрямом...
48220. ПРЕДМЕТ І МЕТОД СТАТИСТИКИ 1.61 MB
  Основні категорії статистики З питанням про предмет статистики пов'язані поняття статистичної закономірності та статистичної сукупності. Згідно з цими принципами закони суспільного розвитку виразно виявляються лише в досить численній сукупності подій. 2Закономірності розподілу елементів сукупності. Склад елементів і спосіб їх об'єднання визначають структуру сукупності.
48221. ОРГАНІЗАЦІЯ ТА ПЛАНУВАННЯ ВИРОБНИЦТВА 667.5 KB
  Системи договірних відносин на оптовому ринку електроенергії. У загальному розумінні поняття енергетичний ринок можна трактувати як місце зустрічі продавця енергії та її покупця. Таким чином енергетичний ринок у широкому розумінні містить таких учасників ринку як підприємства видобувачі паливноенергетичних ресурсів організації що переробляють ці ресурси постачальники кінцевої енергії споживачі енергії а також підприємства що виготовляють товари та надають послуги які забезпечують процес виробництва енергії наприклад основні фонди...
48222. Технічна механіка 8.62 MB
  Технічна механіка є фундаментальною загальнотехнічною дисципліною, невід’ємною складовою системи підготовки інженерно-технічних працівників. Під час вивчення курсу студенти оволодівають знаннями законів рівноваги та руху матеріальних тіл, методів розрахунку елементів конструкцій, машин та споруд на міцність, жорсткість, стійкість, основами проектування деталей, вузлів машин. Знання дисципліни необхідні спеціалістам, які повинні організовувати належну експлуатацію й обслуговування сучасної залізничної техніки, удосконалювати її конструкцію та технології застосування.
48223. ТЕРМИЧЕСКИЕ МЕТОДЫ ОЧИСТКИ ВОД 81.5 KB
  Установки термического обезвреживания минерализованных сточных вод должны соответствовать следующим основным требованиям: I обеспечивать снижение концентрации вредных веществ в очищаемой воде до значений меньших ПДК; 2 иметь незначительную чувствительность к составу стоков; 3 обеспечивать надежность и экономичность в работе; 4. Концентрирование сточных вод Многокорпусные выпарные установки. На практике используют однокорпусные и многокорпусные выпарные установки включающие аппараты с естественной и принудительной циркуляцией. Наибольшее...
48224. Основні підходи до визначення поняття парламентаризму 56 KB
  : Поняття П = відображає з одно боку місце парламенту в мехзмі поділу влади і в цьому значенні наближене до політичного режиму а з іншого принципи устрою парламенту. влади: У вузькому розумінні: оргція і функціонування органу законодавчої влади що хться верховенством парламенту наявністю в нього виключних прерогатив і повноважень Журавський В. влади з особливою активною 1998 роллю парламенту. влади з вагомою і значною роллю парламенту передбаченими Кцією можливостями його активного впливу на сусп.
48225. Бізнес план виноробного заводу «INKERMAN International» 135 KB
  Щорічно вина Inkerman виграють тендер Міністерства закордонних справ України, присутні на заходах державного рівня — поставляються до закордонних представництв і посольств України, подаються на всіх офіційних дипломатичних прийомах.
48226. Теорія та методика обраного виду спорту 155 KB
  До таких показників ставляться: час рухової реакції час виконання одиночного руху величина й характер зусиль що розвивають дані про біоелектричну активність м'язів частота скорочень серця частота подиху вентиляція легенів серцевий викид споживання кисню швидкість нагромадження й кількість лактата в крові. При визначенні ступеня специфічності вправ потрібно орієнтуватися не тільки на зовнішню форму рухів але й на характер їхньої координаційної структури особливості функціонування м'язів вегетативні реакції. До вправ загального...
48227. Релігієзнавство. Курс лекцій 486 KB
  Це зумовлено тією роллю яку відіграє релігія в житті сучасного суспільства та окремої людини впливом релігії на політику культуру тощо. Інтерес до закономірностей розвитку релігії її історії інших проблем пов'язаних з взаємовідносинами церкви і держави міжконфесійними стосунками постійно зростає. Таким чином слід наголосити що об'єкт і предмет релігієзнавства співпадають: це закономірності становлення та розвитку релігії її роль у житті суспільства та індивіда. До структури релігієзнавства насамперед входять такі науки:  Філософія...