Масиви
тип [ ] ім'я;
ім'я = new тип [кількість_елементів];
ім'я [номер] = значення
Нумерація – з нуля.
Приклад:
double [ ] x=new double[12];
X[0]=4.5;
char [ ] ch ={ ‘a’, ‘b’,’2’, ‘я’};
Якщо розміри двох масивів однакові, то одному масиву можна присвоїти значення іншого. При цьому новий масив не створюється, буде тільки передаватися посилання.
Деякі відомості про передачу даних при виклику функцій
Аргументи по посиланню: ref ім'я застосовується, якщо ця змінна (“ім'я”) до виклику функції уже МАЄ певне значення.
Якщо передається “пуста” змінна, значення якої визначається в процесі роботи функції, то використовується атрибут out.
Постановка задачі
Дано три одновимірні масиви, кожний із яких має довільну кількість елементів. Для кожного із них знайти суму від’ємних, кількість нульових і суму позитивних елементів. Окрім функції main() застосувати дві функції. Одна – для введення елементів окремого масиву із клавіатури, а інша – для його аналізу з метою отримати потрібні результати.
using System;
namespace one_dim_arrays
{
class Program
{
void vvod( ref double[ ]x, ref string nch)
{string s;
for(int i=0;i <x.Length;i++)
{
Console.WriteLine("Enter {0}[{1}]=",nch,i);
s=Console.ReadLine();
x[i]=Convert.ToDouble(s);
}
}
void analysis(ref double[ ]x,out double s1,
out double s2, out int k0)
{
s1=s2=k0=0;
for(int i=0;i<x.Length;i++)
if(x[i]<0)
s1+=x[i];
else
if(x[i]>0)
s2+=x[i];
else
k0++;
}
public static void Main(string[] args)
{
Program ob=new Program();
int n;
string s;
double sum1,sum2;
int kol0;
string name="alfa";
Console.WriteLine("Enter n=");
s=Console.ReadLine();
n=Convert.ToInt32(s);
double[ ] alfa=new double[n];
ob.vvod(ref alfa, ref name);
ob.analysis(ref alfa, out sum1, out sum2,
out kol0);
Console.WriteLine("sum={0} sum2={1} kol0={2}",sum1,sum2,kol0);
// TODO: Implement Functionality Here
Console.Write("Press any key to continue . . . ");
Console.ReadKey(true);
}
}
}
Сортування масивів
Функції сортування належать до класу Array.
1) Array.Sort(name_of_array);
2)Array.Sort(name_of_array, int start, int end);
3) Array.Sort(array1, array2);
Сортування відбувається в порядку зростання.
У другому варіанті сортуються лише елементи із індексами від start до end включно.
У третьому випадку приймають участь два масиви. Сортування відбувається по першому масиву. Елементи другого масиву array2 розташовуються відповідно до елементів масиву array1.
Далі приведено приклад програми для двох перших випадків. В ній також показано ще один варіант циклу for.
foreach(тип змінна in імя_масиву)
{
Оператори, в яких використовується змінна
}
Змінна повинна бути того ж типу, що і масив.
Далі – текст програми:
namespace sorting_examples
{
class Program
{
static void Main(string[] args)
{
double [] x={1,9,2,8,3,7,5,4,0,0,1,-1,-2,-5,15};
Array.Sort(x);
foreach (double a in x)
Console.WriteLine(a);
Console.WriteLine("Another example for Sort with start and end");
double[] y={ 1, 9, 2, 8, 3, 7, 5, 4, 0, 0, 1, -1, -2, -5, 15 };
Array.Sort(y,3,10);
foreach (double a in y)
Console.WriteLine(a);
}
}
}
Постановка задачі
Визначити одновимірний масив з довільною кількістю елементів, значення яких отримувати за допомогою генератора випадкових чисел. Відсортувати їх в порядку зростання і вивести на екран стовпчиками по 4 елементи в одному стовпчику. Кількість елементів ввести із клавіатури
//Created by SharpDevelop. using System;
namespace sort1 { class Program { public static void Main(string[ ] args) { string s; int n; Console.WriteLine("Enter n="); s=Console.ReadLine(); n=Convert.ToInt32(s); double[ ] x=new double[n]; Random sluch= new Random( );
for(int i=0;i<x.Length;i++) { x[i]=sluch.NextDouble(); } Array.Sort(x);
for(int i=0;i<x.Length;i++) { if((i%5)==0) Console.WriteLine("\n"); else Console.WriteLine("{0}",x[i]); } Console.WriteLine("Finish!"); // TODO: Implement Functionality Here Console.Write("Press any key to continue . . . "); Console.ReadKey(true); } } }
Двовимірний масив
тип [ , ] ім'я = new тип [кількість_рядків , кількість_стовпчиків];
double [ , ] y =new double [3 , 5];
y[0 , 3] =12.5;
Тривимірний масив:
тип [ , , ] ім'я = new тип [n1 , n2 , n3];
double [ , ,] y = new double [3 , 5, 2];
y[0 , 3, 1] = 2.5;
Невирівняні масиви (масиви масивів):
тип [ ][ ] ім'я = new тип [кількість][ ]
double [ ][ ] x=new double [3][ ];
X[0]= new double [4];
X[1]= new double [8];
X[2]= new double[5];
Основні властивості масивів
Масив має тип посилання
Пам’ять виділяється динамічно (в процесі виконання програми)
Усі масиви являються об'єктами класу Array в просторі імен System.
Кількість елементів визначається властивістю Length класу Array.
Масив передається в функцію або повертається по імені
Зміни масиву в тілі функції зберігаються після виходу із неї.
Доступ до окремого елементу масиву відбувається по його номеру.
Масиви можна прирівнювати один другому.
Автоматично елементи масивів числових типів ініціалізуються нулями, символьного типу - пробілами, бульовського типу – false.
Масиви, які не використовуються, можуть автоматично знищуватися системою “збирання мусору”.
