SlideShare a Scribd company logo
1 of 17
Download to read offline
Высшая школа экономики, Москва, 2013
www.hse.ru
Язык программирования C# и платформа
.NET.
Многомерные массивы
Массивы массивов
Максименкова Ольга Вениаминовна
Старший преподаватель
Кафедра управления разработкой программного обеспечения
МНОГОМЕРНЫЕ МАССИВЫ
• Матрицы
• Обработка матриц
ФПК учителей НИУ ВШЭ 06.2013, Максименкова О.В.
Одномерные массивы (напоминание)
Объявление ссылки
Описание с инициализацией
Описание и последующая
инициализация
int[ ] intArr; // ссылка на целочисленный массив
double[ ] arr; // ссылка на вещественный массив
int[ ] intArr = { 1, 3, -8, 19, 0, 11 };
double[ ] arr = { 3.14, 0.0, 0.5 };
int[ ] intArr; // ссылка
intArr = new int[5]; // выделение памяти
intArr[0] = -1;
intArr[1] = 12;
intArr[2] = 34;
intArr[3] = -23;
intArr[4] = 78;
int[ ] intArr; // ссылка
intArr = new int[5]; // выделение памяти
for (int i = 0; i < 5; i++) {
intArr[i] = i * i - 1;
Console.Write(intArr[i] + " ");
}
ФПК учителей НИУ ВШЭ 03.2013, Максименкова О.В.
ФПК учителей НИУ ВШЭ 06.2013, Максименкова О.В.
Матрицы (двумерные массивы). Индексы элементов матриц
int m = 5, n = 5
int[ , ] matr = new int[n, m]
Главная диагональ
Побочная диагональ
n
m
0
1
2
n -1
0 1 2 m -1
i
j
i = j
i > j
i < j
индексы
ФПК учителей НИУ ВШЭ 06.2013, Максименкова О.В.
Способы инициализации элементов матрицы
int[,] matr = new int[3, 4] { { 0, 1, 3, 4 }, { 5, 6, 7, 8 }, { 9, -1, -2, -3 } };
double[,] mtr = new double[10,15];
for (int i = 0; i < 10; i++) // цикл перебора строк (первый индекс)
for (int j = 0; j < 15; j++) // цикл перебора столбцов (второй индекс)
mtr[i, j] = (double)i/(j+1);
Описание с инициализацией
int[,] matr = new int { { 0, 1, 3, 4 }, { 5, 6, 7, 8 }, { 9, -1, -2, -3 } };
Заполнение матрицы при помощи циклов
Так:
Или так:
double[,] mtr = new double[10,15];
Console.Write("Test: " + mtr[1,5]);
for (int i = 0; i < 10; i++)
for (int j = 0; j < 15; j++)
mtr[i, j] = (double)i/(j+1);
Test: 0
double[,] mtr;
Console.Write("Test: " + mtr[1,5]);
ФПК учителей НИУ ВШЭ 06.2013, Максименкова О.В.
Перебор элементов матрицы
for (int i = 0; i < 5; i++) {
Console.WriteLine();
for (int j = 0; j < 6; j++) //столбец
Console.Write(mtr[i, j] + "t");
}
for(int j = 0; j < 6; j++) {
Console.WriteLine();
for (int i = 0; i < 5; i++) //строка
Console.Write(mtr[i, j] + "t");
}
int[,] mtr = new int[5,6];
for (int i = 0; i < 5; i++)
for (int j = 0; j < 6; j++)
mtr[i, j] = 2*i+j;
Перебираем
строки во
внешнем цикле
Перебираем
столбцы во
внешнем цикле
0 1 2 3 4 5
2 3 4 5 6 7
4 5 6 7 8 9
6 7 8 9 10 11
8 9 10 11 12 13
0 2 4 6 8
1 3 5 7 9
2 4 6 8 10
3 5 7 9 11
4 6 8 10 12
5 7 9 11 13
ФПК учителей НИУ ВШЭ 06.2013, Максименкова О.В.
Поэлементный вывод матрицы
int[,] mtr = new int[5,6];
for (int i = 0; i < 5; i++)
for (int j = 0; j < 6; j++)
mtr[i, j] = 2*i+j;
for (int i = 0; i < 5; i++) {
Console.WriteLine();
for (int j = 0; j < 6; j++)
Console.Write(mtr[i, j] + "t");
}
int nl = 0;
foreach (int item in mtr) {
if (nl++ % 6 == 0)
Console.WriteLine();
Console.Write(item + "t");
}
foreach (int line[] in mtr)
foreach(int item in line)
Console.Write(item + "t");
так -нельзя
Несоответствие типа!
Перебор двумя
циклами (по строкам
и стобцам)
Перебор одним
циклом: по всем
элементам
ФПК учителей НИУ ВШЭ 06.2013, Максименкова О.В.
Обработка элементов матрицы
ФПК учителей НИУ ВШЭ 06.2013, Максименкова О.В.
double[ , ] mtr = new double[N, M];
Random rnd = new Random();
for(int i =0;i <N;i++)
for (int j = 0; j < M; j++) {
mtr[i, j] = rnd.Next(100)+rnd.NextDouble();
}
// элементы главной диагонали
for (int i = 0; i < N; i++)
mtr[i, i] = 0;
int N, M;
do {
Console.Write("Введите количество строк ");
} while(!int.TryParse(Console.ReadLine(), out N)|N < 0);
do {
Console.Write("Введите количество столбцов ");
} while (!int.TryParse(Console.ReadLine(), out M) | M < 0);
// поэлементный вывод
for (int i = 0; i < N; i++) {
for (int j = 0; j < M; j++) {
Console.Write("{0:f3}t",mtr[i, j]);
}
Console.WriteLine();
}
МАССИВЫ МАССИВОВ
• Инициализация
• Поэлементный ввод
ФПК учителей НИУ ВШЭ 06.2013, Максименкова О.В.
Многомерные массивы. Инициализация элементов
int[ ][ ] matr = new int[3][ ] { new int[ ] { 0, 1, 3, 4 },
new int[ ] { 5, 6, 7, 8 },
new int[ ] { 9, -1, -2, -3 } };
int[ ][ ] matr = new int[3][ ];
matr[0] = new int[ ] { 0, 1, 3, 4 };
matr[1] = new int[ ] { 5, 6, 7 };
matr[2] = new int[ ] { -2, -3 };
Описание с инициализацией
Описание и последующая инициализация
Random rnd = new Random();
for (int i = 0; i < 3; i++) {
int M = rnd.Next(1, 6);
matr[i] = new int[M];
for (int j = 0; j < M; j++)
matr[i][j] = rnd.Next(101);
}
Заполнение массива массивов при помощи циклов
Random rnd = new Random();
for (int i = 0; i < 3; i++) {
int M = rnd.Next(1, 6);
for (int j = 0; j < M; j++)
matr[i][j] = rnd.Next(101);
}
ФПК учителей НИУ ВШЭ 03.2013, Максименкова О.В.
ФПК учителей НИУ ВШЭ 06.2013, Максименкова О.В.
Поэлементный вывод многомерного массива
foreach (int[ ] str in matr) {
Console.WriteLine();
foreach (int item in str)
Console.Write(item + "t");
}
foreach (int item in matr)
Console.Write(item + "t");
for (int i = 0; i < matr.Length; i++) {
Console.WriteLine();
for (int j = 0; j < matr[i].Length; j++)
Console.Write(matr[i][j]+"t");
}
int[ ][ ] matr = new int[3][ ] { new int[ ] { 0, 1, 3, 4 },
new int[ ] { 5, 6, 7, 8 },
new int[ ] { 9, -1, -2, -3 } };
Доступны и индексы и
значения элементов
Доступны только
значения элементов
ФПК учителей НИУ ВШЭ 06.2013, Максименкова О.В.
using System;
class Program {
static void Main( ) {
double[ ][ ] mtr = new double[5][ ]; // количество элемнтов (массивов) 5
Random rnd = new Random();
for (int i = 0; i < 5; i++) {
mtr[i] = new double[6]; // каждый массив-строка размером 6
for (int j = 0; j < 6; j++)
mtr[i][j] = rnd.NextDouble();
}
foreach (double[ ] lev1 in mtr) {
foreach (double lev2 in lev1)
Console.Write("{0:f3}t", lev2);
Console.WriteLine();
}
}
}
Матрица представлена массивом массивов
ФПК учителей НИУ ВШЭ 06.2013, Максименкова О.В.
using System;
class Program {
static void Main() {
int[ ][ ] triangle;
uint N; // количество уровней
do {
Console.Write("Задайте количество уровней: ");
} while(!uint.TryParse(Console.ReadLine(), out N));
triangle = new int[N][ ]; // в массиве будет N целочисленных массивов
for (int i = 0; i < triangle.Length; i++) { // перебор массивов
triangle[i] = new int[i + 1]; // каждый элемент массива - массив
for (int j = 0; j < triangle[i].Length; j++)
triangle[i][j] = i+1;
}
// вывод
foreach (int[ ] lev1 in triangle) {
foreach (int lev2 in lev1)
Console.Write(lev2 + " ");
Console.WriteLine();
}
}
}
Число элементов строки массива равно номеру строки
ФПК учителей НИУ ВШЭ 06.2013, Максименкова О.В.
Массив массивов для коэффициентов треугольника паскаля
14
1
1 1
1 2 1
1 … 2 12
…
ФПК учителей НИУ ВШЭ 06.2013, Максименкова О.В.
15
using System;
class Program {
static void Main( ) {
int[ ][ ] paskal; // ссылка на массив ссылок на массив
int n;
do Console.Write("Введите n: ");
while (!int.TryParse(Console.ReadLine(), out n) || n < 0);
paskal = new int[n + 1][ ]; // объект - массив пустых ссылок
Console.WriteLine("paskal.GetType()=" + paskal.GetType());
for (int i = 0; i < paskal.Length; i++) {
paskal[i] = new int[i + 1]; // объект - массив элементов типа int
paskal[i][0] = paskal[i][i] = 1;
for (int j = 1; j < i; j++)
paskal[i][j] = paskal[i - 1][j - 1] + paskal[i - 1][j];
}
foreach (int[ ] ar in paskal) { // перебор ссылок
foreach (int cnk in ar) // перебор элементов типа int
Console.Write("{0,4}", cnk);
Console.WriteLine();
}
}
ФПК учителей НИУ ВШЭ 06.2013, Максименкова О.В.
int[ ][,] arr; // каждый элемент массива - двумерный массив
int arrLength; // количество двумерных массивов в массиве
do {
Console.Write("Задайте количество двумерных массивов: ");
}while(!int.TryParse(Console.ReadLine(), out arrLength)||arrLength<1);
arr = new int[arrLength][,]; // массив из arrLenght двумерных
int dim1, dim2;
do {
Console.Write("Первое измерение: ");
} while (!int.TryParse(Console.ReadLine(), out dim1)||dim1<1);
do {
Console.Write("Второе измерение: ");
} while (!int.TryParse(Console.ReadLine(), out dim2) || dim2 < 1);
Random rnd = new Random();
for (int i = 0; i < arrLength; i++) {
arr[i] = new int[dim1, dim2]; // i-й элемент - матрица dim1xdim2
// заполняем каждую матрицу случайными числами от 20 до 50
for (int j = 0; j < arr[i].GetLength(0); j++)
for (int k = 0; k < arr[i].GetLength(1); k++)
arr[i][j, k] = rnd.Next(20, 51);
}
for (int i = 0; i < arr.Length; i++) {//вывод на экран массива двумерных массивов
for (int j = 0; j < arr[i].GetLength(0); Console.WriteLine(), j++)
for (int k = 0; k < arr[i].GetLength(1); k++)
Console.Write(arr[i][j, k] + "t");
Console.WriteLine();
} ФПК учителей НИУ ВШЭ 06.2013, Максименкова О.В.
101000, Россия, Москва, Мясницкая ул., д. 20
Тел.: (495) 621-7983, факс: (495) 628-7931
www.hse.ru

More Related Content

What's hot

Абстрактные типы данных, последовательности, списки
Абстрактные типы данных, последовательности, спискиАбстрактные типы данных, последовательности, списки
Абстрактные типы данных, последовательности, спискиOlga Maksimenkova
 
Лекция 2: Абстрактные типы данных. Алгоритмы сортировки
Лекция 2: Абстрактные типы данных. Алгоритмы сортировкиЛекция 2: Абстрактные типы данных. Алгоритмы сортировки
Лекция 2: Абстрактные типы данных. Алгоритмы сортировкиMikhail Kurnosov
 
Программирование: от сложного к простому
Программирование: от сложного к простомуПрограммирование: от сложного к простому
Программирование: от сложного к простомуNikolay Grebenshikov
 
Лекция №2. Абстрактные типы данных. ООП. Предмет "Структуры и алгоритмы обраб...
Лекция №2. Абстрактные типы данных. ООП. Предмет "Структуры и алгоритмы обраб...Лекция №2. Абстрактные типы данных. ООП. Предмет "Структуры и алгоритмы обраб...
Лекция №2. Абстрактные типы данных. ООП. Предмет "Структуры и алгоритмы обраб...Nikolay Grebenshikov
 
Лекция 8. Графы. Обходы графов
Лекция 8. Графы. Обходы графовЛекция 8. Графы. Обходы графов
Лекция 8. Графы. Обходы графовMikhail Kurnosov
 
Лекция 1. Амортизационный анализ (amortized analysis)
Лекция 1. Амортизационный анализ (amortized analysis)Лекция 1. Амортизационный анализ (amortized analysis)
Лекция 1. Амортизационный анализ (amortized analysis)Mikhail Kurnosov
 
Игорь Кудрин, «Используем неизменяемые данные и создаем качественный код»
Игорь Кудрин, «Используем неизменяемые данные и создаем качественный код»Игорь Кудрин, «Используем неизменяемые данные и создаем качественный код»
Игорь Кудрин, «Используем неизменяемые данные и создаем качественный код»Platonov Sergey
 
Лекция 8: Многопоточное программирование: Intel Threading Building Blocks
Лекция 8: Многопоточное программирование: Intel Threading Building BlocksЛекция 8: Многопоточное программирование: Intel Threading Building Blocks
Лекция 8: Многопоточное программирование: Intel Threading Building BlocksMikhail Kurnosov
 
Лекция 4: Стек. Очередь
Лекция 4: Стек. ОчередьЛекция 4: Стек. Очередь
Лекция 4: Стек. ОчередьMikhail Kurnosov
 
Лекция 3: Бинарный поиск. Связные списки
Лекция 3: Бинарный поиск. Связные спискиЛекция 3: Бинарный поиск. Связные списки
Лекция 3: Бинарный поиск. Связные спискиMikhail Kurnosov
 
Объектно-Ориентированное Программирование на C++, Лекции 1 и 2
Объектно-Ориентированное Программирование на C++, Лекции 1 и 2Объектно-Ориентированное Программирование на C++, Лекции 1 и 2
Объектно-Ориентированное Программирование на C++, Лекции 1 и 2Dima Dzuba
 
Михаил Матросов, “С++ без new и delete”
Михаил Матросов, “С++ без new и delete”Михаил Матросов, “С++ без new и delete”
Михаил Матросов, “С++ без new и delete”Platonov Sergey
 
Объектно-Ориентированное Программирование на C++, Лекции 3 и 4
Объектно-Ориентированное Программирование на C++, Лекции  3 и 4 Объектно-Ориентированное Программирование на C++, Лекции  3 и 4
Объектно-Ориентированное Программирование на C++, Лекции 3 и 4 Dima Dzuba
 
1 вводное занятие
1 вводное занятие1 вводное занятие
1 вводное занятиеluis_blanco_rau
 
Объектно-ориентированное программирование. Лекция 7 и 8.
Объектно-ориентированное программирование. Лекция 7 и 8. Объектно-ориентированное программирование. Лекция 7 и 8.
Объектно-ориентированное программирование. Лекция 7 и 8. Dima Dzuba
 
Статический анализ: вокруг Java за 60 минут
Статический анализ: вокруг Java за 60 минутСтатический анализ: вокруг Java за 60 минут
Статический анализ: вокруг Java за 60 минутAndrey Karpov
 
Об особенностях использования значимых типов в .NET
Об особенностях использования значимых типов в .NETОб особенностях использования значимых типов в .NET
Об особенностях использования значимых типов в .NETAndrey Akinshin
 

What's hot (20)

Абстрактные типы данных, последовательности, списки
Абстрактные типы данных, последовательности, спискиАбстрактные типы данных, последовательности, списки
Абстрактные типы данных, последовательности, списки
 
Основы MATLAB. Лекция 1.
Основы MATLAB. Лекция 1.Основы MATLAB. Лекция 1.
Основы MATLAB. Лекция 1.
 
Лекция 2: Абстрактные типы данных. Алгоритмы сортировки
Лекция 2: Абстрактные типы данных. Алгоритмы сортировкиЛекция 2: Абстрактные типы данных. Алгоритмы сортировки
Лекция 2: Абстрактные типы данных. Алгоритмы сортировки
 
Основы MATLAB. Программирование
Основы MATLAB. ПрограммированиеОсновы MATLAB. Программирование
Основы MATLAB. Программирование
 
Программирование: от сложного к простому
Программирование: от сложного к простомуПрограммирование: от сложного к простому
Программирование: от сложного к простому
 
Лекция №2. Абстрактные типы данных. ООП. Предмет "Структуры и алгоритмы обраб...
Лекция №2. Абстрактные типы данных. ООП. Предмет "Структуры и алгоритмы обраб...Лекция №2. Абстрактные типы данных. ООП. Предмет "Структуры и алгоритмы обраб...
Лекция №2. Абстрактные типы данных. ООП. Предмет "Структуры и алгоритмы обраб...
 
Лекция 8. Графы. Обходы графов
Лекция 8. Графы. Обходы графовЛекция 8. Графы. Обходы графов
Лекция 8. Графы. Обходы графов
 
Лекция 1. Амортизационный анализ (amortized analysis)
Лекция 1. Амортизационный анализ (amortized analysis)Лекция 1. Амортизационный анализ (amortized analysis)
Лекция 1. Амортизационный анализ (amortized analysis)
 
Игорь Кудрин, «Используем неизменяемые данные и создаем качественный код»
Игорь Кудрин, «Используем неизменяемые данные и создаем качественный код»Игорь Кудрин, «Используем неизменяемые данные и создаем качественный код»
Игорь Кудрин, «Используем неизменяемые данные и создаем качественный код»
 
Лекция 8: Многопоточное программирование: Intel Threading Building Blocks
Лекция 8: Многопоточное программирование: Intel Threading Building BlocksЛекция 8: Многопоточное программирование: Intel Threading Building Blocks
Лекция 8: Многопоточное программирование: Intel Threading Building Blocks
 
msumobi2. Лекция 1
msumobi2. Лекция 1msumobi2. Лекция 1
msumobi2. Лекция 1
 
Лекция 4: Стек. Очередь
Лекция 4: Стек. ОчередьЛекция 4: Стек. Очередь
Лекция 4: Стек. Очередь
 
Лекция 3: Бинарный поиск. Связные списки
Лекция 3: Бинарный поиск. Связные спискиЛекция 3: Бинарный поиск. Связные списки
Лекция 3: Бинарный поиск. Связные списки
 
Объектно-Ориентированное Программирование на C++, Лекции 1 и 2
Объектно-Ориентированное Программирование на C++, Лекции 1 и 2Объектно-Ориентированное Программирование на C++, Лекции 1 и 2
Объектно-Ориентированное Программирование на C++, Лекции 1 и 2
 
Михаил Матросов, “С++ без new и delete”
Михаил Матросов, “С++ без new и delete”Михаил Матросов, “С++ без new и delete”
Михаил Матросов, “С++ без new и delete”
 
Объектно-Ориентированное Программирование на C++, Лекции 3 и 4
Объектно-Ориентированное Программирование на C++, Лекции  3 и 4 Объектно-Ориентированное Программирование на C++, Лекции  3 и 4
Объектно-Ориентированное Программирование на C++, Лекции 3 и 4
 
1 вводное занятие
1 вводное занятие1 вводное занятие
1 вводное занятие
 
Объектно-ориентированное программирование. Лекция 7 и 8.
Объектно-ориентированное программирование. Лекция 7 и 8. Объектно-ориентированное программирование. Лекция 7 и 8.
Объектно-ориентированное программирование. Лекция 7 и 8.
 
Статический анализ: вокруг Java за 60 минут
Статический анализ: вокруг Java за 60 минутСтатический анализ: вокруг Java за 60 минут
Статический анализ: вокруг Java за 60 минут
 
Об особенностях использования значимых типов в .NET
Об особенностях использования значимых типов в .NETОб особенностях использования значимых типов в .NET
Об особенностях использования значимых типов в .NET
 

Viewers also liked

2. Операторы языка C#
2. Операторы языка C#2. Операторы языка C#
2. Операторы языка C#Olga Maksimenkova
 
Математические основы методов решений систем логических уравнений
Математические основы методов решений систем логических уравненийМатематические основы методов решений систем логических уравнений
Математические основы методов решений систем логических уравненийOlga Maksimenkova
 
Современные образовательные технологии в области компьютерных наук
Современные образовательные технологии в области компьютерных наукСовременные образовательные технологии в области компьютерных наук
Современные образовательные технологии в области компьютерных наукOlga Maksimenkova
 
[Maksimenkova_Neznanov] Peer Assessment to Programmers & Peer Assessment Syst...
[Maksimenkova_Neznanov] Peer Assessment to Programmers & Peer Assessment Syst...[Maksimenkova_Neznanov] Peer Assessment to Programmers & Peer Assessment Syst...
[Maksimenkova_Neznanov] Peer Assessment to Programmers & Peer Assessment Syst...Olga Maksimenkova
 
Абстрактные типы данных. Списки
Абстрактные типы данных. СпискиАбстрактные типы данных. Списки
Абстрактные типы данных. СпискиOlga Maksimenkova
 
Презентация курса "Основы программирования" на C#
Презентация курса "Основы программирования" на C#Презентация курса "Основы программирования" на C#
Презентация курса "Основы программирования" на C#Vadim Martynov
 
Решение систем логических уравнений, ЕГЭ 23 информатика
Решение систем логических уравнений, ЕГЭ 23 информатикаРешение систем логических уравнений, ЕГЭ 23 информатика
Решение систем логических уравнений, ЕГЭ 23 информатикаOlga Maksimenkova
 
Очистка данных на практике: мифы и легенты Excel и R
Очистка данных на практике: мифы и легенты Excel и RОчистка данных на практике: мифы и легенты Excel и R
Очистка данных на практике: мифы и легенты Excel и ROlga Maksimenkova
 
язык программирования с#
язык программирования с#язык программирования с#
язык программирования с#Nitrosalat
 
Программирование на языке C Sharp (СИ решетка)
Программирование на языке C Sharp (СИ решетка)Программирование на языке C Sharp (СИ решетка)
Программирование на языке C Sharp (СИ решетка)Alexandr Konfidentsialno
 

Viewers also liked (10)

2. Операторы языка C#
2. Операторы языка C#2. Операторы языка C#
2. Операторы языка C#
 
Математические основы методов решений систем логических уравнений
Математические основы методов решений систем логических уравненийМатематические основы методов решений систем логических уравнений
Математические основы методов решений систем логических уравнений
 
Современные образовательные технологии в области компьютерных наук
Современные образовательные технологии в области компьютерных наукСовременные образовательные технологии в области компьютерных наук
Современные образовательные технологии в области компьютерных наук
 
[Maksimenkova_Neznanov] Peer Assessment to Programmers & Peer Assessment Syst...
[Maksimenkova_Neznanov] Peer Assessment to Programmers & Peer Assessment Syst...[Maksimenkova_Neznanov] Peer Assessment to Programmers & Peer Assessment Syst...
[Maksimenkova_Neznanov] Peer Assessment to Programmers & Peer Assessment Syst...
 
Абстрактные типы данных. Списки
Абстрактные типы данных. СпискиАбстрактные типы данных. Списки
Абстрактные типы данных. Списки
 
Презентация курса "Основы программирования" на C#
Презентация курса "Основы программирования" на C#Презентация курса "Основы программирования" на C#
Презентация курса "Основы программирования" на C#
 
Решение систем логических уравнений, ЕГЭ 23 информатика
Решение систем логических уравнений, ЕГЭ 23 информатикаРешение систем логических уравнений, ЕГЭ 23 информатика
Решение систем логических уравнений, ЕГЭ 23 информатика
 
Очистка данных на практике: мифы и легенты Excel и R
Очистка данных на практике: мифы и легенты Excel и RОчистка данных на практике: мифы и легенты Excel и R
Очистка данных на практике: мифы и легенты Excel и R
 
язык программирования с#
язык программирования с#язык программирования с#
язык программирования с#
 
Программирование на языке C Sharp (СИ решетка)
Программирование на языке C Sharp (СИ решетка)Программирование на языке C Sharp (СИ решетка)
Программирование на языке C Sharp (СИ решетка)
 

Similar to 4. Многомерные массивы и массивы массивов в C#

Всё о статическом анализе кода для Java программиста
Всё о статическом анализе кода для Java программистаВсё о статическом анализе кода для Java программиста
Всё о статическом анализе кода для Java программистаAndrey Karpov
 
AlgoCollections (RUS)
AlgoCollections (RUS)AlgoCollections (RUS)
AlgoCollections (RUS)Anton Bukov
 
Опыт разработки статического анализатора кода
Опыт разработки статического анализатора кодаОпыт разработки статического анализатора кода
Опыт разработки статического анализатора кодаAndrey Karpov
 
статический анализ кода
статический анализ кодастатический анализ кода
статический анализ кодаAndrey Karpov
 
Статический анализ кода
Статический анализ кода Статический анализ кода
Статический анализ кода Pavel Tsukanov
 
C++ refelection and cats
C++ refelection and catsC++ refelection and cats
C++ refelection and catscorehard_by
 
3.8 Класс массива
3.8 Класс массива3.8 Класс массива
3.8 Класс массиваDEVTYPE
 
Лекция 10: Графы. Остовные деревья
Лекция 10: Графы. Остовные деревьяЛекция 10: Графы. Остовные деревья
Лекция 10: Графы. Остовные деревьяMikhail Kurnosov
 
Сложности микробенчмаркинга
Сложности микробенчмаркингаСложности микробенчмаркинга
Сложности микробенчмаркингаAndrey Akinshin
 
Красота и изящность стандартной библиотеки Python
Красота и изящность стандартной библиотеки PythonКрасота и изящность стандартной библиотеки Python
Красота и изящность стандартной библиотеки PythonPython Meetup
 
Алгоритмы и структуры данных весна 2014 лекция 3
Алгоритмы и структуры данных весна 2014 лекция 3Алгоритмы и структуры данных весна 2014 лекция 3
Алгоритмы и структуры данных весна 2014 лекция 3Technopark
 
Массивы в Java
Массивы в JavaМассивы в Java
Массивы в Javametaform
 
CPU Performance in Java.
CPU Performance in Java.CPU Performance in Java.
CPU Performance in Java.Dzmitry Hil
 
Встреча №9. Алгоритмы и коллекции стандартных библиотек C++, C#, Java, Object...
Встреча №9. Алгоритмы и коллекции стандартных библиотек C++, C#, Java, Object...Встреча №9. Алгоритмы и коллекции стандартных библиотек C++, C#, Java, Object...
Встреча №9. Алгоритмы и коллекции стандартных библиотек C++, C#, Java, Object...CocoaHeads
 
Векторизация кода (семинар 3)
Векторизация кода (семинар 3)Векторизация кода (семинар 3)
Векторизация кода (семинар 3)Mikhail Kurnosov
 
Лекция 8. Intel Threading Building Blocks
Лекция 8. Intel Threading Building BlocksЛекция 8. Intel Threading Building Blocks
Лекция 8. Intel Threading Building BlocksMikhail Kurnosov
 
Алгоритмы и структуры данных весна 2014 лекция 1
Алгоритмы и структуры данных весна 2014 лекция 1Алгоритмы и структуры данных весна 2014 лекция 1
Алгоритмы и структуры данных весна 2014 лекция 1Technopark
 
Java. Массивы. Многомерные массивы.
Java. Массивы. Многомерные массивы.Java. Массивы. Многомерные массивы.
Java. Массивы. Многомерные массивы.Unguryan Vitaliy
 

Similar to 4. Многомерные массивы и массивы массивов в C# (20)

Progr labrab-4-2013-c++
Progr labrab-4-2013-c++Progr labrab-4-2013-c++
Progr labrab-4-2013-c++
 
Всё о статическом анализе кода для Java программиста
Всё о статическом анализе кода для Java программистаВсё о статическом анализе кода для Java программиста
Всё о статическом анализе кода для Java программиста
 
AlgoCollections (RUS)
AlgoCollections (RUS)AlgoCollections (RUS)
AlgoCollections (RUS)
 
Опыт разработки статического анализатора кода
Опыт разработки статического анализатора кодаОпыт разработки статического анализатора кода
Опыт разработки статического анализатора кода
 
статический анализ кода
статический анализ кодастатический анализ кода
статический анализ кода
 
Статический анализ кода
Статический анализ кода Статический анализ кода
Статический анализ кода
 
C++ refelection and cats
C++ refelection and catsC++ refelection and cats
C++ refelection and cats
 
3.8 Класс массива
3.8 Класс массива3.8 Класс массива
3.8 Класс массива
 
Лекция 10: Графы. Остовные деревья
Лекция 10: Графы. Остовные деревьяЛекция 10: Графы. Остовные деревья
Лекция 10: Графы. Остовные деревья
 
Сложности микробенчмаркинга
Сложности микробенчмаркингаСложности микробенчмаркинга
Сложности микробенчмаркинга
 
Красота и изящность стандартной библиотеки Python
Красота и изящность стандартной библиотеки PythonКрасота и изящность стандартной библиотеки Python
Красота и изящность стандартной библиотеки Python
 
Алгоритмы и структуры данных весна 2014 лекция 3
Алгоритмы и структуры данных весна 2014 лекция 3Алгоритмы и структуры данных весна 2014 лекция 3
Алгоритмы и структуры данных весна 2014 лекция 3
 
Массивы в Java
Массивы в JavaМассивы в Java
Массивы в Java
 
CPU Performance in Java.
CPU Performance in Java.CPU Performance in Java.
CPU Performance in Java.
 
Встреча №9. Алгоритмы и коллекции стандартных библиотек C++, C#, Java, Object...
Встреча №9. Алгоритмы и коллекции стандартных библиотек C++, C#, Java, Object...Встреча №9. Алгоритмы и коллекции стандартных библиотек C++, C#, Java, Object...
Встреча №9. Алгоритмы и коллекции стандартных библиотек C++, C#, Java, Object...
 
Векторизация кода (семинар 3)
Векторизация кода (семинар 3)Векторизация кода (семинар 3)
Векторизация кода (семинар 3)
 
Лекция 8. Intel Threading Building Blocks
Лекция 8. Intel Threading Building BlocksЛекция 8. Intel Threading Building Blocks
Лекция 8. Intel Threading Building Blocks
 
Алгоритмы и структуры данных весна 2014 лекция 1
Алгоритмы и структуры данных весна 2014 лекция 1Алгоритмы и структуры данных весна 2014 лекция 1
Алгоритмы и структуры данных весна 2014 лекция 1
 
Java. Массивы. Многомерные массивы.
Java. Массивы. Многомерные массивы.Java. Массивы. Многомерные массивы.
Java. Массивы. Многомерные массивы.
 
лекция 3
лекция 3лекция 3
лекция 3
 

More from Olga Maksimenkova

Информатика в школе: методы и технологии активного обучения
Информатика в школе: методы и технологии активного обученияИнформатика в школе: методы и технологии активного обучения
Информатика в школе: методы и технологии активного обученияOlga Maksimenkova
 
Взаимное оценивание в дисцилине "Программирование"
Взаимное оценивание в дисцилине "Программирование"Взаимное оценивание в дисцилине "Программирование"
Взаимное оценивание в дисцилине "Программирование"Olga Maksimenkova
 
2020 maksimenkova-dist learning
2020 maksimenkova-dist learning2020 maksimenkova-dist learning
2020 maksimenkova-dist learningOlga Maksimenkova
 
Intelligent Virtual Reality Tutoring Systems as a New Generation of Simulator...
Intelligent Virtual Reality Tutoring Systems as a New Generation of Simulator...Intelligent Virtual Reality Tutoring Systems as a New Generation of Simulator...
Intelligent Virtual Reality Tutoring Systems as a New Generation of Simulator...Olga Maksimenkova
 
Геймификация образования: фан, мотивация и преодоление себя
Геймификация образования: фан, мотивация и преодоление себяГеймификация образования: фан, мотивация и преодоление себя
Геймификация образования: фан, мотивация и преодоление себяOlga Maksimenkova
 
2019-01-11-Digital Transformation of Education
2019-01-11-Digital Transformation of Education2019-01-11-Digital Transformation of Education
2019-01-11-Digital Transformation of EducationOlga Maksimenkova
 
Providing Cognitive Scaffolding within Computer-Supported Adaptive Learning E...
Providing Cognitive Scaffolding within Computer-Supported Adaptive Learning E...Providing Cognitive Scaffolding within Computer-Supported Adaptive Learning E...
Providing Cognitive Scaffolding within Computer-Supported Adaptive Learning E...Olga Maksimenkova
 
Collaborative Learning in Data Science Education: a Data Expedition as a Form...
Collaborative Learning in Data Science Education: a Data Expedition as a Form...Collaborative Learning in Data Science Education: a Data Expedition as a Form...
Collaborative Learning in Data Science Education: a Data Expedition as a Form...Olga Maksimenkova
 
Инженерия Хаоса или научите меня геймдеву
Инженерия Хаоса или научите меня геймдевуИнженерия Хаоса или научите меня геймдеву
Инженерия Хаоса или научите меня геймдевуOlga Maksimenkova
 
Maksimenkova edu infosystems-2018-05-25
Maksimenkova edu infosystems-2018-05-25Maksimenkova edu infosystems-2018-05-25
Maksimenkova edu infosystems-2018-05-25Olga Maksimenkova
 
Lec 04. The way to production: game testing and analytics
Lec 04. The way to production: game testing and analyticsLec 04. The way to production: game testing and analytics
Lec 04. The way to production: game testing and analyticsOlga Maksimenkova
 
Lec 03. The fates of the Games. Game engines, development
Lec 03. The fates of the Games. Game engines, developmentLec 03. The fates of the Games. Game engines, development
Lec 03. The fates of the Games. Game engines, developmentOlga Maksimenkova
 
Lec 01. Mobile games development
Lec 01. Mobile games developmentLec 01. Mobile games development
Lec 01. Mobile games developmentOlga Maksimenkova
 
[Maksimenkova_ Neznanov]apkit 2017
[Maksimenkova_ Neznanov]apkit 2017[Maksimenkova_ Neznanov]apkit 2017
[Maksimenkova_ Neznanov]apkit 2017Olga Maksimenkova
 
Что скрывают открытые образовательные ресурсы?
Что скрывают открытые образовательные ресурсы?Что скрывают открытые образовательные ресурсы?
Что скрывают открытые образовательные ресурсы?Olga Maksimenkova
 

More from Olga Maksimenkova (16)

Информатика в школе: методы и технологии активного обучения
Информатика в школе: методы и технологии активного обученияИнформатика в школе: методы и технологии активного обучения
Информатика в школе: методы и технологии активного обучения
 
Взаимное оценивание в дисцилине "Программирование"
Взаимное оценивание в дисцилине "Программирование"Взаимное оценивание в дисцилине "Программирование"
Взаимное оценивание в дисцилине "Программирование"
 
2020 maksimenkova-dist learning
2020 maksimenkova-dist learning2020 maksimenkova-dist learning
2020 maksimenkova-dist learning
 
Intelligent Virtual Reality Tutoring Systems as a New Generation of Simulator...
Intelligent Virtual Reality Tutoring Systems as a New Generation of Simulator...Intelligent Virtual Reality Tutoring Systems as a New Generation of Simulator...
Intelligent Virtual Reality Tutoring Systems as a New Generation of Simulator...
 
Геймификация образования: фан, мотивация и преодоление себя
Геймификация образования: фан, мотивация и преодоление себяГеймификация образования: фан, мотивация и преодоление себя
Геймификация образования: фан, мотивация и преодоление себя
 
2019-01-11-Digital Transformation of Education
2019-01-11-Digital Transformation of Education2019-01-11-Digital Transformation of Education
2019-01-11-Digital Transformation of Education
 
Providing Cognitive Scaffolding within Computer-Supported Adaptive Learning E...
Providing Cognitive Scaffolding within Computer-Supported Adaptive Learning E...Providing Cognitive Scaffolding within Computer-Supported Adaptive Learning E...
Providing Cognitive Scaffolding within Computer-Supported Adaptive Learning E...
 
Collaborative Learning in Data Science Education: a Data Expedition as a Form...
Collaborative Learning in Data Science Education: a Data Expedition as a Form...Collaborative Learning in Data Science Education: a Data Expedition as a Form...
Collaborative Learning in Data Science Education: a Data Expedition as a Form...
 
Инженерия Хаоса или научите меня геймдеву
Инженерия Хаоса или научите меня геймдевуИнженерия Хаоса или научите меня геймдеву
Инженерия Хаоса или научите меня геймдеву
 
Video Game Design History
Video Game Design HistoryVideo Game Design History
Video Game Design History
 
Maksimenkova edu infosystems-2018-05-25
Maksimenkova edu infosystems-2018-05-25Maksimenkova edu infosystems-2018-05-25
Maksimenkova edu infosystems-2018-05-25
 
Lec 04. The way to production: game testing and analytics
Lec 04. The way to production: game testing and analyticsLec 04. The way to production: game testing and analytics
Lec 04. The way to production: game testing and analytics
 
Lec 03. The fates of the Games. Game engines, development
Lec 03. The fates of the Games. Game engines, developmentLec 03. The fates of the Games. Game engines, development
Lec 03. The fates of the Games. Game engines, development
 
Lec 01. Mobile games development
Lec 01. Mobile games developmentLec 01. Mobile games development
Lec 01. Mobile games development
 
[Maksimenkova_ Neznanov]apkit 2017
[Maksimenkova_ Neznanov]apkit 2017[Maksimenkova_ Neznanov]apkit 2017
[Maksimenkova_ Neznanov]apkit 2017
 
Что скрывают открытые образовательные ресурсы?
Что скрывают открытые образовательные ресурсы?Что скрывают открытые образовательные ресурсы?
Что скрывают открытые образовательные ресурсы?
 

4. Многомерные массивы и массивы массивов в C#

  • 1. Высшая школа экономики, Москва, 2013 www.hse.ru Язык программирования C# и платформа .NET. Многомерные массивы Массивы массивов Максименкова Ольга Вениаминовна Старший преподаватель Кафедра управления разработкой программного обеспечения
  • 2. МНОГОМЕРНЫЕ МАССИВЫ • Матрицы • Обработка матриц ФПК учителей НИУ ВШЭ 06.2013, Максименкова О.В.
  • 3. Одномерные массивы (напоминание) Объявление ссылки Описание с инициализацией Описание и последующая инициализация int[ ] intArr; // ссылка на целочисленный массив double[ ] arr; // ссылка на вещественный массив int[ ] intArr = { 1, 3, -8, 19, 0, 11 }; double[ ] arr = { 3.14, 0.0, 0.5 }; int[ ] intArr; // ссылка intArr = new int[5]; // выделение памяти intArr[0] = -1; intArr[1] = 12; intArr[2] = 34; intArr[3] = -23; intArr[4] = 78; int[ ] intArr; // ссылка intArr = new int[5]; // выделение памяти for (int i = 0; i < 5; i++) { intArr[i] = i * i - 1; Console.Write(intArr[i] + " "); } ФПК учителей НИУ ВШЭ 03.2013, Максименкова О.В. ФПК учителей НИУ ВШЭ 06.2013, Максименкова О.В.
  • 4. Матрицы (двумерные массивы). Индексы элементов матриц int m = 5, n = 5 int[ , ] matr = new int[n, m] Главная диагональ Побочная диагональ n m 0 1 2 n -1 0 1 2 m -1 i j i = j i > j i < j индексы ФПК учителей НИУ ВШЭ 06.2013, Максименкова О.В.
  • 5. Способы инициализации элементов матрицы int[,] matr = new int[3, 4] { { 0, 1, 3, 4 }, { 5, 6, 7, 8 }, { 9, -1, -2, -3 } }; double[,] mtr = new double[10,15]; for (int i = 0; i < 10; i++) // цикл перебора строк (первый индекс) for (int j = 0; j < 15; j++) // цикл перебора столбцов (второй индекс) mtr[i, j] = (double)i/(j+1); Описание с инициализацией int[,] matr = new int { { 0, 1, 3, 4 }, { 5, 6, 7, 8 }, { 9, -1, -2, -3 } }; Заполнение матрицы при помощи циклов Так: Или так: double[,] mtr = new double[10,15]; Console.Write("Test: " + mtr[1,5]); for (int i = 0; i < 10; i++) for (int j = 0; j < 15; j++) mtr[i, j] = (double)i/(j+1); Test: 0 double[,] mtr; Console.Write("Test: " + mtr[1,5]); ФПК учителей НИУ ВШЭ 06.2013, Максименкова О.В.
  • 6. Перебор элементов матрицы for (int i = 0; i < 5; i++) { Console.WriteLine(); for (int j = 0; j < 6; j++) //столбец Console.Write(mtr[i, j] + "t"); } for(int j = 0; j < 6; j++) { Console.WriteLine(); for (int i = 0; i < 5; i++) //строка Console.Write(mtr[i, j] + "t"); } int[,] mtr = new int[5,6]; for (int i = 0; i < 5; i++) for (int j = 0; j < 6; j++) mtr[i, j] = 2*i+j; Перебираем строки во внешнем цикле Перебираем столбцы во внешнем цикле 0 1 2 3 4 5 2 3 4 5 6 7 4 5 6 7 8 9 6 7 8 9 10 11 8 9 10 11 12 13 0 2 4 6 8 1 3 5 7 9 2 4 6 8 10 3 5 7 9 11 4 6 8 10 12 5 7 9 11 13 ФПК учителей НИУ ВШЭ 06.2013, Максименкова О.В.
  • 7. Поэлементный вывод матрицы int[,] mtr = new int[5,6]; for (int i = 0; i < 5; i++) for (int j = 0; j < 6; j++) mtr[i, j] = 2*i+j; for (int i = 0; i < 5; i++) { Console.WriteLine(); for (int j = 0; j < 6; j++) Console.Write(mtr[i, j] + "t"); } int nl = 0; foreach (int item in mtr) { if (nl++ % 6 == 0) Console.WriteLine(); Console.Write(item + "t"); } foreach (int line[] in mtr) foreach(int item in line) Console.Write(item + "t"); так -нельзя Несоответствие типа! Перебор двумя циклами (по строкам и стобцам) Перебор одним циклом: по всем элементам ФПК учителей НИУ ВШЭ 06.2013, Максименкова О.В.
  • 8. Обработка элементов матрицы ФПК учителей НИУ ВШЭ 06.2013, Максименкова О.В. double[ , ] mtr = new double[N, M]; Random rnd = new Random(); for(int i =0;i <N;i++) for (int j = 0; j < M; j++) { mtr[i, j] = rnd.Next(100)+rnd.NextDouble(); } // элементы главной диагонали for (int i = 0; i < N; i++) mtr[i, i] = 0; int N, M; do { Console.Write("Введите количество строк "); } while(!int.TryParse(Console.ReadLine(), out N)|N < 0); do { Console.Write("Введите количество столбцов "); } while (!int.TryParse(Console.ReadLine(), out M) | M < 0); // поэлементный вывод for (int i = 0; i < N; i++) { for (int j = 0; j < M; j++) { Console.Write("{0:f3}t",mtr[i, j]); } Console.WriteLine(); }
  • 9. МАССИВЫ МАССИВОВ • Инициализация • Поэлементный ввод ФПК учителей НИУ ВШЭ 06.2013, Максименкова О.В.
  • 10. Многомерные массивы. Инициализация элементов int[ ][ ] matr = new int[3][ ] { new int[ ] { 0, 1, 3, 4 }, new int[ ] { 5, 6, 7, 8 }, new int[ ] { 9, -1, -2, -3 } }; int[ ][ ] matr = new int[3][ ]; matr[0] = new int[ ] { 0, 1, 3, 4 }; matr[1] = new int[ ] { 5, 6, 7 }; matr[2] = new int[ ] { -2, -3 }; Описание с инициализацией Описание и последующая инициализация Random rnd = new Random(); for (int i = 0; i < 3; i++) { int M = rnd.Next(1, 6); matr[i] = new int[M]; for (int j = 0; j < M; j++) matr[i][j] = rnd.Next(101); } Заполнение массива массивов при помощи циклов Random rnd = new Random(); for (int i = 0; i < 3; i++) { int M = rnd.Next(1, 6); for (int j = 0; j < M; j++) matr[i][j] = rnd.Next(101); } ФПК учителей НИУ ВШЭ 03.2013, Максименкова О.В. ФПК учителей НИУ ВШЭ 06.2013, Максименкова О.В.
  • 11. Поэлементный вывод многомерного массива foreach (int[ ] str in matr) { Console.WriteLine(); foreach (int item in str) Console.Write(item + "t"); } foreach (int item in matr) Console.Write(item + "t"); for (int i = 0; i < matr.Length; i++) { Console.WriteLine(); for (int j = 0; j < matr[i].Length; j++) Console.Write(matr[i][j]+"t"); } int[ ][ ] matr = new int[3][ ] { new int[ ] { 0, 1, 3, 4 }, new int[ ] { 5, 6, 7, 8 }, new int[ ] { 9, -1, -2, -3 } }; Доступны и индексы и значения элементов Доступны только значения элементов ФПК учителей НИУ ВШЭ 06.2013, Максименкова О.В.
  • 12. using System; class Program { static void Main( ) { double[ ][ ] mtr = new double[5][ ]; // количество элемнтов (массивов) 5 Random rnd = new Random(); for (int i = 0; i < 5; i++) { mtr[i] = new double[6]; // каждый массив-строка размером 6 for (int j = 0; j < 6; j++) mtr[i][j] = rnd.NextDouble(); } foreach (double[ ] lev1 in mtr) { foreach (double lev2 in lev1) Console.Write("{0:f3}t", lev2); Console.WriteLine(); } } } Матрица представлена массивом массивов ФПК учителей НИУ ВШЭ 06.2013, Максименкова О.В.
  • 13. using System; class Program { static void Main() { int[ ][ ] triangle; uint N; // количество уровней do { Console.Write("Задайте количество уровней: "); } while(!uint.TryParse(Console.ReadLine(), out N)); triangle = new int[N][ ]; // в массиве будет N целочисленных массивов for (int i = 0; i < triangle.Length; i++) { // перебор массивов triangle[i] = new int[i + 1]; // каждый элемент массива - массив for (int j = 0; j < triangle[i].Length; j++) triangle[i][j] = i+1; } // вывод foreach (int[ ] lev1 in triangle) { foreach (int lev2 in lev1) Console.Write(lev2 + " "); Console.WriteLine(); } } } Число элементов строки массива равно номеру строки ФПК учителей НИУ ВШЭ 06.2013, Максименкова О.В.
  • 14. Массив массивов для коэффициентов треугольника паскаля 14 1 1 1 1 2 1 1 … 2 12 … ФПК учителей НИУ ВШЭ 06.2013, Максименкова О.В.
  • 15. 15 using System; class Program { static void Main( ) { int[ ][ ] paskal; // ссылка на массив ссылок на массив int n; do Console.Write("Введите n: "); while (!int.TryParse(Console.ReadLine(), out n) || n < 0); paskal = new int[n + 1][ ]; // объект - массив пустых ссылок Console.WriteLine("paskal.GetType()=" + paskal.GetType()); for (int i = 0; i < paskal.Length; i++) { paskal[i] = new int[i + 1]; // объект - массив элементов типа int paskal[i][0] = paskal[i][i] = 1; for (int j = 1; j < i; j++) paskal[i][j] = paskal[i - 1][j - 1] + paskal[i - 1][j]; } foreach (int[ ] ar in paskal) { // перебор ссылок foreach (int cnk in ar) // перебор элементов типа int Console.Write("{0,4}", cnk); Console.WriteLine(); } } ФПК учителей НИУ ВШЭ 06.2013, Максименкова О.В.
  • 16. int[ ][,] arr; // каждый элемент массива - двумерный массив int arrLength; // количество двумерных массивов в массиве do { Console.Write("Задайте количество двумерных массивов: "); }while(!int.TryParse(Console.ReadLine(), out arrLength)||arrLength<1); arr = new int[arrLength][,]; // массив из arrLenght двумерных int dim1, dim2; do { Console.Write("Первое измерение: "); } while (!int.TryParse(Console.ReadLine(), out dim1)||dim1<1); do { Console.Write("Второе измерение: "); } while (!int.TryParse(Console.ReadLine(), out dim2) || dim2 < 1); Random rnd = new Random(); for (int i = 0; i < arrLength; i++) { arr[i] = new int[dim1, dim2]; // i-й элемент - матрица dim1xdim2 // заполняем каждую матрицу случайными числами от 20 до 50 for (int j = 0; j < arr[i].GetLength(0); j++) for (int k = 0; k < arr[i].GetLength(1); k++) arr[i][j, k] = rnd.Next(20, 51); } for (int i = 0; i < arr.Length; i++) {//вывод на экран массива двумерных массивов for (int j = 0; j < arr[i].GetLength(0); Console.WriteLine(), j++) for (int k = 0; k < arr[i].GetLength(1); k++) Console.Write(arr[i][j, k] + "t"); Console.WriteLine(); } ФПК учителей НИУ ВШЭ 06.2013, Максименкова О.В.
  • 17. 101000, Россия, Москва, Мясницкая ул., д. 20 Тел.: (495) 621-7983, факс: (495) 628-7931 www.hse.ru