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 ()).
Потім сортуємо: виконуємо проходи по масиву і порівнюємо елементи. Якщо елемент з меншим індексом більше елемента з великим індексом, то міняємо елементи місцями.
і IEnumerable ). Інтерфейс IEnumerator представляє нумератори, за допомогою
якого стає можливий послідовний перебір колекції, наприклад, в циклі foreach. А інтерфейс IEnumerable через свій метод
Отже, клас ArrayList представляє колекцію об'єктів. І якщо треба зберегти разом різнотипні об'єкти - рядки, числа і т.д., то даний клас як раз для цього підходить.
Данo цілочисельний масив з 31 елементу, в якому записані значення температури повітря в березні. Елементи масиву можуть набувати значень від (-20) до 20. Знайти середню температуру по всіх днях, коли була відлига (температура піднімалася вище нуля). Гарантується, що хоча б один день в березні була відлига.
інверсія масиву, тобто переворот його в зворотному порядку:
Вся програма умовно поділена на три блоки: введення чисел, сортування і висновок відсортованого масиву. Тут використовуються всі ті ж конструкції, що були розглянуті раніше. Спочатку в циклі ми вводимо все числа для масиву. Так як метод Console.ReadLine () повертає вводиться рядок, а нам потрібні числа, тому ми цей рядок переводимо в число за допомогою методу Int32.Parse (Console.ReadLine ()).
Потім сортуємо: виконуємо проходи по масиву і порівнюємо елементи. Якщо елемент з меншим індексом більше елемента з великим індексом, то міняємо елементи місцями.
Хоча в
мові C # є масиви, які зберігають в собі набори однотипних об'єктів, але
працювати з ними не завжди зручно. Наприклад,
масив зберігає фіксовану кількість об'єктів, однак якщо ми заздалегідь не
знаємо, скільки нам буде потрібно об'єктів. І в цьому випадку набагато зручніше застосовувати колекції. Ще один плюс колекцій полягає в тому, що деякі з них реалізує
стандартні структури даних, наприклад, стек, чергу, словник, які можуть стати в
нагоді для вирішення різних спеціальних завдань.
Велика
частина класів колекцій міститься в просторах імен
Основою для створення всіх колекцій є реалізація інтерфейсів IEnumerator і IEnumerable (і їх узагальнених двійників IEnumerator System.Collections
(прості неузагальнених класи колекцій),System.Collections.Generic
(узагальнені або типізовані класи колекцій) і System.Collections.Specialized
(спеціальні класи колекцій). Також для забезпечення паралельного виконання завдань і
многопоточного доступу застосовуються класи колекцій з простору імен System.Collections.Concurrent
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];
Заповнення масиву неповторючимися числами
Комментариев нет:
Отправить комментарий