ПРОФІЛЬНА ІНФОРМАТИКА 10 КЛАС Масиви. Створення консольних проектів у C#
Повторення 1) Приклад роботи з масивом 2) Вправа 1. Знайти суму елементів масиву п'яти цілих чисел 3) Двовимірний масив 4) Вправа 2. Двовимірний масив Сума елементів 5) Вправа 3. Приклад виведення елементів двовимірного масиву по стовпцях Навчальна презентація Кравчук Г.Т.
Приклад роботи з масивом using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication2 { class Program { static void Main (string [] args) { int [] mas = {1,2,5,6,8,4,9,10}; int [] mas2 = new int [10]; double [] mas3 = {1.5, 2, 5, 6.5, 8, 4, 9, 10}; double [] mas4 = new double [10]; Console.WriteLine ("Виведення 1-го елемента mas:" + mas [0]); Console.WriteLine ("Виведення 1-го елемента mas2:" + mas2 [0]); Console.WriteLine ("Виведення 1-го елемента mas3:" + mas3 [0]); Console.WriteLine ("Виведення 1-го елемента mas4:" + mas4 [0]); Console.ReadKey (); } Як бачимо, що якщо ми не вказуємо значення масиву, але виділяємо пам'ять, то за умовчанням в C # записується нуль. В програмі ми виводимо масиви c sharp за допомогою функції виводу Console.WriteLine. Результат роботи програми:
Вправа 1. Знайти суму елементів масиву п'яти цілих чисел int [] t = new int[5]; // опис масиву int s = 0; // сума поки що рівна 0 for (int i = 0; i <= 4; i = i + 1) //цикл у якому і міняє значення від 0 до елементів { // це тіло циклу Console.WriteLine("vvedu {0} element masive", i); t[i] = Convert.ToInt32(Console.ReadLine()); //введення елементів масиву s = s + t[i]; //кожен новий введений елемент додається } Console.WriteLine("suma elementiv - "+s); // виведення суми елементів масиву Або int [] t = new int[5] {1,6,8,3,4}; //оголошення масиву з одночасним заданням значень int s = 0; for (int i = 0; i <= 4; i = i + 1) s = s + t[i]; Console.WriteLine("suma elementiv - "+s); Навчальна презентація Кравчук Г.Т.
Двовимірний масив Двовимірний масив - це масив, де кожному елементу ставиться у відповідність два індекси. Виведення в рядку необхідно обов'язково форматувати, щоб не трапилось "злипання" елементів (дивись приклад вище). Як було зазначено вище, для роботи з масивом потрібен будь-який оператор повторення. Вочевидь, що у двовимірному масиві необхідно використовувати їх два: один цикл, внутрішній, потрібен для переходу між елементами рядка (тобто, по стовпчиках), а другий, зовнішній, - для переміщення між рядками Навчальна презентація Кравчук Г.Т.
Двовимірний масив Якщо в матриці кількість рядків і стовпчиків однакова, то таку матрицю називають квадратною (на відміну від звичайної прямокутної таблиці). Тільки в квадратних матрицях існують головна та бічна діагоналі. Елементи, що стоять на головній діагоналі, мають індекси (1, 1), (2, 2), (3, 3),... (і, і)...., (n, n), тобто номер рядка дорівнює номеру стовпчика! Елементи, що стоять на бічній діагоналі, мають такі індекси (1, n), (2, n-1), (3, n-2),..., (і, n+1-і), (n,1), тобто індекси елементів взаємозалежні за формулою j= n+1 – i Навчальна презентація Кравчук Г.Т.
Вправа 2. Двовимірний масив Сума елементів int[,] t = new int [2,3] {{2,3,6},{5,8,1}}; int s = 0; for (int i = 0; i <= 1; i = i + 1) // 2 рядки for (int j = 0; j <= 2; j = j + 1) //3 стовпці s = s + t[i, j]; Console.WriteLine("suma elementiv - "+s); Навчальна презентація Кравчук Г.Т.
Вправа 3. Приклад виведення елементів двовимірного масиву по стовпцях int[,] t = new int [2,4] {{2,3,6,9},{5,8,1,3}}; for (int i = 0; i <= 1; i = i + 1) { Console.WriteLine(); for (int j = 0; j <= 3; j = j + 1) Console.Write(" "+t[i,j]); } Console.WriteLine(); Навчальна презентація Кравчук Г.Т.
АЛГОРИТМИ ПОШУКУ В ТАБЛИЦЯХ ЕЛЕМЕНТІВ ІЗ ДЕЯКОЮ ВЛАСТИВІСТЮ Вивчення нового матеріалу Навчальна презентація Кравчук Г.Т.
Алгоритми пошуку в таблицях елементів із деякою властивістю Для організації пошуку в таблиці елементів із заданими властивостями необхідно організувати циклічний перегляд всіх елементів, кожний з яких командою розгалуження порівняти із заданим еталоном або перевірити на деяку властивість. Якщо масив одновимірний, цикл для організації перегляду всіх елементів буде один, якщо ж масив двовимірний - циклів буде два. Задача: Дано натуральне число n та послідовність дійсних чисел a1, a2, … an. Визначити в цій послідовності кількість сусідств двох чисел різного знаку. Перш за все запропонуємо в цій задачі інший метод опису масиву з використанням константи, що задає розмір масиву. Для визначення двох сусідніх елементів масиву використовується загальний опис індексів i та i+1 (можна і-1 та і), а це при організації циклу можне викликати ситуацію виходу за межі масиву. Дійсно, якщо організувати цикл з параметром для зміни індексу від 1 до N, де N - кількість елементів масиву, то при i=N значення і+1 буде виходити за межі масиву. Це являється синтаксичною помилкою, що призводить до неочікуваних результатів, тому цикл треба організовувати не для зміни індексу від 1 до N, а для зміни від 1 до N Навчальна презентація Кравчук Г.Т.
Двовимірний масив Задача. Дано натуральні числа n, m та випадкові дійсні числа, що утворюють таблицю A[i,j], де i = 1,2,…, n; j = 1, 2, …, m. Роздрукувати у рядок елементи, що розташовані в першому стовпчику. В даній задачі, хоча таблиця задана двовимірна, другий індекс у всіх елементів, що будуть друкуватися, дорівнює 1, тому достатньо одного циклу по рядках для виконання задачі. Зверніть увагу, що для заповнення масиву повністю необхідні два цикли по рядках та стовпчиках. Задача. Дано натуральні числа n, m та випадкові дійсні числа, що утворюють таблицю A[i,j], де i = 1,2,…, n; j = 1, 2, …, m. Роздрукувати у рядок елементи, що розташовані на бічній діагоналі. Нагадуємо, що на бічній діагоналі елементи мають таку властивість: сума номера рядка та номера стовпчика дорівнюють розмірності масиву +1, тобто номер стовпчика обчислюється за наступною формулою: j = n-1+i Навчальна презентація Кравчук Г.Т.
Поняття алгоритму розв'язання задачі Задача: Дано одновимірний масив цілих чисел A[і], де і =1,2,…,n. Визначити, скільки разів максимальний елемент зустрічається у даному масиві та порядковий номер першого найбільшого елементу. Для розв'язку цієї задачі спочатку необхідно пройти по всіх елементах масиву і знайти серед них максимальний, запам'ятавши його номер. Для цього користуються стандартним алгоритмом, що полягає в наступному: 1) береться будь-який елемент масиву (як правило, перший) і його значення присвоюється змінній max, тобто він вважається за еталон найбільшого елементу; 2) по черзі з масиву вибираються всі останні елементи і, якщо серед них знайдеться більший за вибраний еталон, то змінній max присвоюється нове значення, яке тепер буде новим еталоном. В іншій змінній, наприклад, N_max запам'ятовується номер цього найбільшого елементу (початкове значення цієї змінної було 1, тому що спочатку ми вважали найбільшим 1-ий елемент). Після закінчення перегляду всього масиву змінна max буде містити шуканий максимум, а зміннаN_max - його номер. Щоб запам'ятати номер першого максимального елемента, необхідно шукати в матриці елемент, що точно більше еталону. Якщо ж ми будемо шукати елемент, що не менший за еталон, то в змінній N_max залишиться номер останнього найбільшого елементу (чому?). Після знаходження максимуму другим проходом можна вже підрахувати кількість таких елементів в масиві. Для цього кожен елемент порівнюється з еталоном, що знаходиться в змінній max, та до лічильника count додається одиниця у випадку співпадання цих значень Навчальна презентація Кравчук Г.Т.
Вправа 5. Сума тільки додатніх елементів int[,] t = new int [2,3] {{-2,3,6},{5,8,-1}}; int s = 0; for (int i = 0; i <= 1; i = i + 1) for (int j = 0; j <= 2; j = j + 1) if (t[i,j]>0) s = s + t[i, j]; Console.WriteLine("suma elementiv - "+s); Навчальна презентація Кравчук Г.Т.
Вправа 6. Сума елементів тільки 2-го та 4-го стовпців (фактично непарних стовпців) int[,] t = new int [2,4] {{2,3,6,9},{5,8,1,3}}; int s = 0; for (int i = 0; i <= 1; i = i + 1) for (int j = 0; j <= 3; j = j + 1) if (j%2!=0) s = s + t[i, j]; Console.WriteLine("suma elementiv - "+s); Навчальна презентація Кравчук Г.Т
Вправа 7. В масиві 3*4 обнулити другий рядок int[,] t = new int [3,4] {{2,3,6,9},{5,8,1,3},{1,8,6,4}}; int s = 0; for (int i = 0; i <= 2; i = i + 1) { Console.WriteLine(); for (int j = 0; j <= 3; j = j + 1) Console.Write(" "+t[i,j]); } Console.WriteLine(); for (int j = 0; j <= 3; j = j + 1) t[1, j] = 0; for (int i = 0; i <= 2; i = i + 1) { Console.WriteLine(); for (int j = 0; j <= 3; j = j + 1) Console.Write(" " + t[i, j]); } Console.WriteLine(); Навчальна презентація Кравчук Г.Т.
Вправа 8. В масиві 3*3 усі елементи, розміщені по головній діагоналі замінити нулями int[,] t = new int[3, 3] { { 2, 3, 6 }, { 5, 8, 1 }, { 5, 8, 1 } }; Console.WriteLine("Дано масив. Елементи по діагоналі обнулити"); Console.WriteLine("Dano massiv"); for (int i = 0; i <= 2; i = i + 1) { Console.WriteLine(); for (int j = 0; j <= 2; j = j + 1) Console.Write(" " + t[i, j]); } Console.WriteLine();//Далі обнулення - індекси однакові for (int i = 0; i <= 2; i = i + 1) { t[i, i] = 100; } Console.WriteLine("Novuy massiv"); for (int i = 0; i <= 2; i = i + 1) { Console.WriteLine(); for (int j = 0; j <= 2; j = j + 1) Console.Write(" " + t[i, j]); } Console.WriteLine(); Навчальна презентація Кравчук Г.Т.
Вправа 9. В масиві 3*4 елементи другого та четвертого стовпців замінити числом 100 int[,] t = new int[3, 4] { { 2, 3, 6, 5 }, { 5, 8, 1, 6 }, { 5, 8, 1, 6 } }; Console.WriteLine("Дано масив. Стовпчики з парними номерами обнулити"); Console.WriteLine("Dano massiv"); for (int i = 0; i <= 2; i = i + 1) { Console.WriteLine(); for (int j = 0; j <= 3; j = j + 1) Console.Write(" " + t[i, j]); } Console.WriteLine(); for (int i = 0; i <= 2; i = i + 1) for (int j = 0; j <= 3; j = j + 1) if (j%2==1) t[i, j]=100; Console.WriteLine("Novuy massiv"); for (int i = 0; i <= 2; i = i + 1) { Console.WriteLine(); for (int j = 0; j <= 3; j = j + 1) Console.Write(" " + t[i, j]); } Console.WriteLine(); Навчальна презентація Кравчук Г.Т.
Вправа 10. Елементи, що розмiщенi вище головної дiагоналi замiнити числом 49 int[,] t = new int[3, 4] { { 2, 3, 6, 5 }, { 5, 8, 1, 6 }, { 5, 8, 1, 6 } }; Console.WriteLine("Дано масив. Елементи, що розмiщенi вище головноi дiагоналi замiнити числом 49"); Console.WriteLine("Dano massiv"); for (int i = 0; i <= 2; i = i + 1) { Console.WriteLine(); for (int j = 0; j <= 3; j = j + 1) Console.Write(" " + t[i, j]); } Console.WriteLine(); for (int i = 0; i <= 2; i = i + 1) for (int j = 0; j <= 3; j = j + 1) if (i <j ) t[i, j]=49; Console.WriteLine("Novuy massiv"); for (int i = 0; i <= 2; i = i + 1) { Console.WriteLine(); for (int j = 0; j <= 3; j = j + 1) Console.Write(" " + t[i, j]); } Console.WriteLine(); Навчальна презентація Кравчук Г.Т.
Вправа 11.В даному масиві елементи, що розмiщенi нище головноi дiагоналi замiнити на 0 int[,] t = new int[3, 3] { { 2, 3, 6 }, { 5, 8, 1 }, { 5, 8, 1 } }; Console.WriteLine("Дано масив. Елементи, що розмiщенi нище головноi дiагоналi замiнити на 0"); Console.WriteLine("Dano massiv"); for (int i = 0; i <= 2; i = i + 1) { Console.WriteLine(); for (int j = 0; j <= 2; j = j + 1) Console.Write(" " + t[i, j]); } Console.WriteLine(); for (int i = 0; i <= 2; i = i + 1) for (int j = 0; j <= 2; j = j + 1) if (i > j) t[i, j] = 0; Console.WriteLine("Novuy massiv"); for (int i = 0; i <= 2; i = i + 1) { Console.WriteLine(); for (int j = 0; j <= 2; j = j + 1) Console.Write(" " + t[i, j]); } Console.WriteLine(); Навчальна презентація Кравчук Г.Т.
Вправа 12. З елементiв, даного двомiрного масиву Т створити одновимiрний масив К int[,] t = new int[3, 3] { { 2, 3, 6 }, { 5, 8, 1 }, { 5, 8, 1 } }; int [] k=new int [9]; int c = 0; Console.WriteLine("З елементiв, даного двомiрного масиву Т створити одновимiрний масив К"); Console.WriteLine("Dano massiv"); for (int i = 0; i <= 2; i = i + 1) { Console.WriteLine(); for (int j = 0; j <= 2; j = j + 1) Console.Write(" " + t[i, j]); } Console.WriteLine(); for (int i = 0; i <= 2; i = i + 1) for (int j = 0; j <= 2; j = j + 1) { k[c] = t[i, j]; c = c + 1; } Console.WriteLine("Novuy massiv"); for (int i = 0; i <= c-1; i = i + 1) Console.Write(" " + k[i]); Console.WriteLine(); Навчальна презентація Кравчук Г.Т.
Практикум розв'язування задач 1) Нехай задано масив дійсних чисел з 10-ти елементів, знайти суму усіх від'ємних елементів масиву. 2) Нехай задано масив з 20 елементів, підрахувати скільки разів число 0 зустрічається у масиві. 3) Нехай задано двовимірний масив цілих чисел, розміром 10*10. Усім діагональним елементам присвоїти значення 0. 4) Дано квадратну матрицю розмірності n. Надрукувати суму елементів бічної діагоналі Навчальна презентація Кравчук Г.Т.
Завдання для практичної роботи Створити масив за допомогою генератора псевдовипадкових чисел. Ввести з клавіатури деяке значення та визначити номер найпершого з елементів, що дорівнюють цьому значенню. Якщо таких елементів не існує, вивести відповідне повідомлення. (Лінійний пошук здійснюється шляхом перебирання всіх елементів масиву та порівняння кожного з них із заданим значенням. Якщо елемент знайдено, цикл пошуку переривається і виводиться знайдений індекс. А якщо цикл пошуку дійшов останнього елемента, і цей елемент не дорівнює заданому значенню, виводиться повідомлення про відсутність шуканого елемента).
Завдання для практичної роботи У магазині утворилася черга з декількох покупців. Відомий час обслуговування продавцем кожного покупця. Визначити час перебування кожного покупця у черзі, а також номер покупця, обслуговування якого потребує найменше часу. (Легко побачити, що час перебування кожного покупця у черзі дорівнює сумарному часу обслуговування його та всіх попередніх покупців. Якщо позначити час обслуговування і-го покупця змінною ti, а час його перебування в черзі servi то це значення визначається за формулою servi = t1 + t ti. Можна застосувати рекурентну формулу, згідно з якою час перебування покупця в черзі визначається як сума часу його обслуговування та часу перебування в черзі попереднього покупця: servi = servi-1 + ti. Якщо час обслуговування n покупців подати у вигляді n- елементного масиву, то номер покупця з мінімальним часом обслуговування це індекс мінімального елемента в масиві).
Практична робота. Робота з масивами чисел МЕТА РОБОТИ: Вивчення технології роботи з масивами. ЗАВДАННЯ І ПОРЯДОК ВИКОНАННЯ 1. Закріпити теоретичний матеріал. 2. Виконати задачі, для самостійної роботи. Задача: створимо програму, використавши масив з фіксованими границями для збереження температури за тиждень. Створити відповідну форму Значення температури з кнопками Введення температури, Виведення мах, Виведення min. Забезпечити впорядкування по зростанню (спаданню).