четверг, 29 марта 2018 г.

c#

http://coolcode.ru/primeryi-resheniya-zadach-iz-knigi-m-e-abramyan-1000-zadach-po-programmirovaniyu-case/

Данo цілочисельний масив з 31 елементу, в якому записані значення температури повітря в березні. Елементи масиву можуть набувати значень від (-20) до 20. Знайти середню температуру по всіх днях, коли була відлига (температура піднімалася вище нуля). Гарантується, що хоча б один день в березні була відлига.
інверсія масиву, тобто переворот його в зворотному порядку:


Відсортувати масив
Вся програма умовно поділена на три блоки: введення чисел, сортування і висновок відсортованого масиву. Тут використовуються всі ті ж конструкції, що були розглянуті раніше. Спочатку в циклі ми вводимо все числа для масиву. Так як метод Console.ReadLine () повертає вводиться рядок, а нам потрібні числа, тому ми цей рядок переводимо в число за допомогою методу Int32.Parse (Console.ReadLine ()).

Потім сортуємо: виконуємо проходи по масиву і порівнюємо елементи. Якщо елемент з меншим індексом більше елемента з великим індексом, то міняємо елементи місцями.
Хоча в мові C # є масиви, які зберігають в собі набори однотипних об'єктів, але працювати з ними не завжди зручно. Наприклад, масив зберігає фіксовану кількість об'єктів, однак якщо ми заздалегідь не знаємо, скільки нам буде потрібно об'єктів. І в цьому випадку набагато зручніше застосовувати колекції. Ще один плюс колекцій полягає в тому, що деякі з них реалізує стандартні структури даних, наприклад, стек, чергу, словник, які можуть стати в нагоді для вирішення різних спеціальних завдань.
Велика частина класів колекцій міститься в просторах імен System.Collections (прості неузагальнених класи колекцій),System.Collections.Generic (узагальнені або типізовані класи колекцій) і System.Collections.Specialized (спеціальні класи колекцій). Також для забезпечення паралельного виконання завдань і многопоточного доступу застосовуються класи колекцій з простору імен System.Collections.Concurrent
Основою для створення всіх колекцій є реалізація інтерфейсів IEnumerator і IEnumerable (і їх узагальнених двійників IEnumerator  і IEnumerable ). Інтерфейс IEnumerator представляє нумератори, за допомогою якого стає можливий послідовний перебір колекції, наприклад, в циклі foreach. А інтерфейс IEnumerable через свій метод GetEnumerator надає Нумератор всіх класах, які реалізують даний інтерфейс. Тому інтерфейс IEnumerable ( IEnumerable ) є базовим для всіх колекцій.


Тут використовуються дві колекції: неузагальнених - ArrayList і узагальнена - List. Більшість колекцій підтримують додавання елементів.Наприклад, в даному випадку додавання проводиться методом Add , але для інших колекцій назву методу може відрізнятися. Також більшість колекцій реалізують видалення (в даному прикладі проводиться за допомогою методу RemoveAt ).

За допомогою властивості Count у колекцій можна подивитися кількість елементів.
І так як колекції реалізують інтерфейс IEnumerable / IEnumerable , то всі вони підтримують перебір в циклі foreach.
Конкретні методи і способи використання можуть відрізнятися від одного класу колекції до іншої, але загальні принципи будуть одні і ті ж для всіх класів колекцій.


Отже, клас ArrayList представляє колекцію об'єктів. І якщо треба зберегти разом різнотипні об'єкти - рядки, числа і т.д., то даний клас як раз для цього підходить.
По-перше, тому що клас ArrayList знаходиться в просторі імен System.Collections, то підключаємо його ( using System.Collections; ).
Спочатку створюємо об'єкт колекції через конструктор як об'єкт будь-якого іншого класу: ArrayList list = new ArrayList(); . При необхідності ми могли б так само, як і з масивами, виконати початкову ініціалізацію колекції, наприклад, ArrayList list = new ArrayList(){1, 2, 5, "string", 7.7};
Далі послідовно додаємо різні значення. Даний клас колекції, як і більшість інших колекцій, має два способи додавання: одиночного об'єкту через метод Add і набору об'єктів, наприклад, масиву або іншої колекції через метод AddRange
Завдяки тому, що в класі ArrayList реалізований інтерфейс IEnumerable, ми можемо пройтися по всіх об'єктом, що зберігаються в списку, через цикл foreach . І оскільки дана колекція зберігає різнорідні об'єкти, а не тільки числа або рядки, то в якості типу перебираються об'єктів обраний тип object: foreach (object o in list)
Багато колекцій, в тому числі і ArrayList, реалізують видалення за допомогою методів Remove / RemoveAt. В даному випадку ми видаляємо перший елемент, передаючи в метод RemoveAt індекс видаляється елемента.
На завершення ми знову ж виводимо елементи колекції на екран тільки вже через цикл for. В даному випадку з перебором колекцій справа йде так само, як і з масивами. А число елементів колекції ми можемо отримати через властивість Count
За допомогою індексатора ми можемо отримати за індексом елемент колекції так само, як і в масивах: object firstObj = list[0];

Заповнення масиву неповторючимися числами

Сортування лінійним методом (методом відбору)








Комментариев нет:

Отправить комментарий