Professional Documents
Culture Documents
Преговор едномерни PDF
Преговор едномерни PDF
Преговор едномерни PDF
ЕДНОМЕРНИ МАСИВИ
/ ПРЕГОВОР /
I. Прости и сложни структури от данни-
класификация
Основната характеристика на всяка структура от данни е типът й.
2
I. Прости и сложни структури от данни-
класификация
2. Съставни(сложни) структури от данни
3
I. Прости и сложни структури от данни-
класификация
B. В ЗАВИСИМОСТ ОТ ТИПА НА СЪХРАНЯВАНИТЕ В ТЯХ ДАННИ СЕ
ДЕЛЯТ НА ХОМОГЕННИ И НЕХОМОГЕННИ.
4
I. Прости и сложни структури от данни-
класификация
C. В ЗАВИСИМОСТ ОТ ДАЛИ СА ДОПУСТИМИ ОПЕРАЦИИТЕ ДОБАВЯНЕ
И ОТСТРАНЯВАНЕ НА КОМПОНЕНТА, СЪСТАВНИТЕ СТРУКТУРИ ОТ
ДАННИ СЕ ДЕЛЯТ НА СТАТИЧНИ И ДИНАМИЧНИ.
1. Статични структури от данни
.
СТАТИЧНИ СТРУКТУРИ ОТ ДАННИ: При статичните е необходимо
предварително да се знае броя константи в съответния тип, за да им се
задели място в паметта. Веднъж заделено това място не може да се
променя с цел добавяне на нови елементи.
5
I. Прости и сложни структури от данни-
класификация
2. Динамични структури от данни
1) от размерността им:
едномерни,
.
двумерни, тримерни и т.н. При размерност ≥3
се говори за многомерни масиви.
2) типа на отделните елементи:
целочислени, масиви от десетични дроби, символни,
логически и т.н.
7
I. Прости и сложни структури от данни-
класификация
а) Структура от данни масив
8
III. ЕДНОМЕРНИ МАСИВИ
Представят се като ред от таблица:
9
III. ЕДНОМЕРНИ МАСИВИ
При декларация на променливата от тип масив, тя представлява
референция (reference), която няма стойност (сочи към null), тъй като още не
е заделена памет за елементите на масива.
Ето как изглежда една променлива от тип масив, която е декларирана, но
още не е заделена памет за елементите на масива:
Stack Heap
myArray
11
III. ЕДНОМЕРНИ МАСИВИ
1. ДЕКЛАРИРАНЕ
• В C# масив се създава с ключовата дума new, която служи за
заделяне (алокиране) на памет:
int[] myArray = new int[6];
В примера е заделен масив с размер 6 елемента от
целочисления тип int. Това означава, че в динамичната памет
(heap) се заделя участък от 6 последователни цели числа, които
се инициализират със стойност 0:
Stack Heap
0 1 2 3 4 5
myArray 0 0 0 0 0 0
12
III. ЕДНОМЕРНИ МАСИВИ
2. ИНИЦИАЛИЗИРАНЕ
В C# всички променливи, включително и елементите на масивите
имат начална стойност по подразбиране (default initial value).
Тази стойност е равна на 0 при числените типове или неин
еквивалент при нечислени типове (например null за
референтни типове и false за булевия тип).
Ако искаме да укажем конкретни начални стойности:
int[] myArray = { 1, 2, 3, 4, 5, 6 };
В този случай създаваме и инициализираме елементите на
масива едновременно
При този синтаксис къдравите скоби заместват оператора new и
между тях са изброени началните стойности на масива,
разделени със запетаи. Техния брой определя дължината му.
13
III. ЕДНОМЕРНИ МАСИВИ
ПРИМЕР
14
III. ЕДНОМЕРНИ МАСИВИ
Stack Heap
Monday
0 …
Tuesday
1 …
2 … Wednesday
3 … Thursday
daysOfWeek 4 …
Friday
5 …
6 … Saturday
Sunday
15
III. ЕДНОМЕРНИ МАСИВИ
3. ДОСТЪП ДО ЕЛЕМЕНТИТЕ НА ЕДНОМЕРЕН МАСИВ
• Достъпът до елементите на масивите е пряк и се осъществява по
индекс. Всеки елемент може да се достъпи с името на масива и
съответния му индекс (пореден номер), поставен в квадратни
скоби.
Можем да осъществим достъп до даден елемент както за четене
така и за писане т.е. да го третираме като най-обикновена
променлива.
ПРИМЕР:
myArray [ index]=100;
В този случай създаваме присвояваме стойност 100 на елемента,
намиращ се на позиция index.
16
III. ЕДНОМЕРНИ МАСИВИ
ПРИМЕР
Stack Heap
0 1 2 3 4 5
myArray 0 1 0 0 8 0
17
III. ЕДНОМЕРНИ МАСИВИ
4. ОБХОЖДАНЕ НА ЕЛЕМЕНТИТЕ
Осъществява се чрез някоя от конструкциите за цикъл,
като най-често е класическият for цикъл.
static void Main(string[] args)
{
int[] arr = new int[5];
int i;
for (i=0; i < arr.Length; i++)
{
arr[i] = i;
}
for( i = 0; i < arr.Length; i++)
{
Console.Write(arr[i]+" ");
}
}
18
III. ЕДНОМЕРНИ МАСИВИ
5. ИЗЛИЗАНЕ ОТ ГРАНИЦИТЕ НА МАСИВА
При всеки достъп до елемент на масив .NET Framework прави автоматична
проверка, дали индексът е валиден или е извън границите на масива. При опит за
достъп до невалиден елемент се хвърля изключение от тип
System.IndexOutOfRangeException
19
III. ЕДНОМЕРНИ МАСИВИ
6. ДОПУСТИМИ ОПЕРАЦИИ
Операции над цели масиви са НЕДОПУСТИМИ!
7. ВЪВЕЖДАНЕ Вариант 2: вход от клавиатурата.
В много задачи броят на елементите се
Вариант 1: вход от клавиатурата въвежда от клавиатурата. За целта се
декларира масив с достатъчно голям брой ел.
static void Main(string[] args)
{ static void Main(string[] args)
int[] arr = new int[5]; { int[] arr = new int[100];
for (int i=0; i < arr.Length; i++) int n;
{ Console.Write("Въведи n=");
Console.Write("arr["+i+"]="); n=int.Parse(Console.ReadLine());
arr[i]=int.Parse(Console.ReadLine()); for (int i=0; i < n; i++)
} { Console.Write("arr["+i+"]=");
… arr[i]=int.Parse(Console.ReadLine());
} }
…
}
20
III. ЕДНОМЕРНИ МАСИВИ
7. ВЪВЕЖДАНЕ
Вариант 3: чрез присвояване Вариант 4: чрез присвояване
на стойности на произволни стойности
static void Main(string[] args) static void Main(string[] args)
{ {
int[] arr = new int[5]; int[] arr = new int[5];
for (int i=0; i < arr.Length; i++) for (int i=0; i < arr.Length; i++)
{ {
arr[i]=i*10; arr[i]= new Random().Next(-20,20);
} }
… …
} }
21
III. ЕДНОМЕРНИ МАСИВИ
8. ИЗВЕЖДАНЕ
22
III. ЕДНОМЕРНИ МАСИВИ
9. ОСНОВНИ АЛГОРИТМИ ЗА РАБОТА С МАСИВИ
а) сумиране на елементите
Задача 1: Да се състави програма(ДСП), която въвежда от клавиатурата стойностите
на целочислен масив от 5 елемента. Да се изведе сборът им.
23
III. ЕДНОМЕРНИ МАСИВИ
9. ОСНОВНИ АЛГОРИТМИ ЗА РАБОТА С МАСИВИ
б) Преброяване на елементите, отговарящи на дадено условие.
Задача 2: ДСП, която въвежда в масив среднодневните температури за предварително
зададен период. Да се преброят дните, в които средната температура е по-голяма
или равна на предварително зададено число k
24
III. ЕДНОМЕРНИ МАСИВИ
9. ОСНОВНИ АЛГОРИТМИ ЗА РАБОТА С МАСИВИ
в) Намиране на мин./макс. елемент
Задача 3: ДСП, която която въвежда в масив средния годишен успех на всеки ученик от
един клас. Да се изведе най-високият успех.
25
III. ЕДНОМЕРНИ МАСИВИ
9. ОСНОВНИ АЛГОРИТМИ ЗА РАБОТА С МАСИВИ
г) Търсене на елемент
Задача 4: ДСП, която която въвежда в масив средния годишен успех на всеки ученик от
един клас. Да се провери съществува ли ученик с успех х.
Вариант 1: чрез последователно обхождане
на всички елементи
26
III. ЕДНОМЕРНИ МАСИВИ
9. ОСНОВНИ АЛГОРИТМИ ЗА РАБОТА С МАСИВИ
г) Търсене на елемент
Задача 5: ДСП, която която въвежда в масив средния годишен успех на всеки ученик от
един клас. Да се провери съществува ли ученик с успех х.
Вариант 2: чрез последователно обхождане
на всички елементи и прекъсване
на търсенето при първото
откриване на съвпадение
27
III. ЕДНОМЕРНИ МАСИВИ
9. ОСНОВНИ АЛГОРИТМИ ЗА РАБОТА С МАСИВИ
д) Размяна стойностите на два елемента от масив
Задача 6: ДСП, която въвежда от клавиатурата стойностите на целочислен масив от n (n<=20)
елемента. Програмата да разменя местата не елементите стоящи на нечетни
позиции симетрично спрямо двата края на масива.
Анализ:
Като размяна стойности на две променливи.
Трябва да се декларира помощна променлива от базовия тип на масива.
Или ако помощната променлива е swap и искаме да разменим
k-тия и p-тия елементи: swap=arr[k];
arr[k]=arr[p];
arr[p]=swap;
28
ЗАДАЧИ ЗА УПРАЖНЕНИЕ
Задача 7: ДСП, която въвежда масив от n реални числа (5<=n<=10), намира максималния и
минимален елемент на масива и разменя местата им. Да се приеме, че в масива
няма повтарящи се елементи.
Задача 8: ДСП, която въвежда масив, чиито елементи са естествени числа. Програмата да
намира средноаритметичната стойност на елементите му и преброява колко от
елементите са по-големи от нея.
Задача 9: ДСП, която въвежда масив, чиито елементи са цели числа. Програмата да
намира броя елементи на масива, сумата от цифрите на които е по-малка от 5,
или по-голяма от 9.
Задача 10: ДСП, която въвежда масив, чиито елементи са естествени числа. Програмата
проверява има ли в масива поне едно просто число и извежда съобщение.
(Програмата прекратява действието си при първото срещнато просто число.)
29