
- •Лабораторная работа №14 использование индексаторов при работе с массивами
- •Вопросы для контроля
- •Постановка задания
- •Содержание отчета
- •Порядок выполнения работы
- •Краткие теоретические сведения Объявление одномерных массивов
- •Прямоугольные многомерные массивы
- •Постановка задания
- •Пример выполнения работы
Постановка задания
Таблица 14.1.
№ п.п |
Задание |
1
|
Даны два одномерных массива. В одном хранятся данные о росте(Р) ученика, в другом – о весе(V). Определить индекс массы тела каждого ученика и вывести на экран всех, у кого вес превышает норму. |
2
|
Даны два одномерных массива А и В одинакового размера. Вывести на экран среднее арифметическое (А[i]+В[i])/2 |
3 |
Даны два одномерных массива одинакового размера, в которых хранятся значения сопротивлений R1 и R2. Вывести на экран значения общего сопротивления, учитывая, что R1 и R2 соединены параллельно( (R1[i]+R2[i])/R1[i]*R2[i]) |
4 |
Даны два одномерных массива А и В одинакового размера, хранящие данные о катетах прямоугольного треугольника. Вывести на экран значения гипотенузы для каждой пары А[i] и В[i] |
5
|
Даны два одномерных массива А и В одинакового размера. Вывести на экран для каждой пары А[i] и В[i] значения А[i] * А[i] - В[i] |
Таблица 14.2.
№ п.п |
Задание |
1
|
Дан двумерный массив, хранящий сведения N курсантов по M предметам. Найти, кто из курсантов имеет максимальный средний балл. Если таких несколько, вывести на экран их номера по списку. |
2
|
Дан двумерный массив, хранящий сведения по зарплате N работников за M месяцев. Найти, кто из работников имеет минимальную среднюю зарплату. Если таких несколько, вывести на экран их номера по списку. |
3
|
Дан двумерный массив размером N х M. Найти, в каком столбце наибольшее количество четных элементов. Если таких несколько, вывести на экран их номера по списку. |
4
|
Дан двумерный массив размером N х M. Найти, в каком столбце сумма элементов наибольшая. Если таких несколько, вывести на экран их номера по списку. |
5
|
Дан двумерный массив размером N х M. Найти, в какой строке сумма элементов наименьшая. Если таких несколько, вывести на экран их номера по списку. |
Пример выполнения работы
Дан одномерный массив. Найти максимальный элемент. |
Дан двумерный массив размером N х M. Найти, в каком столбце наименьшее количество положительных элементов. Если таких несколько, вывести на экран их номера по списку. |
ПРОГРАММА
1-е задание:
using System;
// Использование индексатора для создания отказоустойчивого массива
using System;
class FailSoftArray
{
int[] a; // Ссылка на массив.
public int Length; // Length - открытый член.
public bool errflag; // Индикатор результата
// последней операции.
// Создаем массив заданного размера,
public FailSoftArray(int size)
{
a = new int[size];
Length = size;
}
// Это - индексатор для класса FailSoftArray.
public int this[int index]
{
// Это - get-аксессор.
get
{
if (ok(index))
{
errflag = false;
return a[index];
}
else
{
errflag = true;
return 0;
}
}
// Это - set-аксессор.
set
{
if (ok(index))
{
a[index] = value;
errflag = false;
}
else errflag = true;
}
}
// Метод возвращает значение true, если
// индекс - в пределах границ,
private bool ok(int index)
{
if (index >= 0 & index < Length) return true;
return false;
}
}
// Демонстрируем отказоустойчивый массив,
class Zada4a
{
Random rnd = new Random();
const int n = 12;
FailSoftArray a = new FailSoftArray(n);
public void formir()
{
Console.WriteLine("Исходный массив:");
for (int i = 0; i < n; i++)
{
a[i] = rnd.Next(100);
Console.Write("{0,4}", a[i]);
}
Console.WriteLine();
}
public void max()
{
int max = a[0];
for (int i = 1; i < n; i++)
{
if (a[i] > max) max = a[i];
}
Console.WriteLine("max={0,4}", max);
}
public static int Main()
{
Zada4a z1 = new Zada4a();
z1.formir();
z1.max();
Console.ReadKey();
return 0;
}
}
РЕЗУЛЬТАТ РАБОТЫ ПРОГРАММЫ:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication5
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Введите кол-во элементов массива:");
int[] a = FillArray(Int32.Parse(Console.ReadLine()));
Console.WriteLine("Массив после заполнения:"); PrintArray(a);
Console.WriteLine("\n\nМинимальный элемент: " + Min(a));
Console.WriteLine("\nСумма четных элементов массива: " + Sum(a));
Console.WriteLine("\nСписок положительных элементов массива: "); PrintArray(Positiv(a));
Console.ReadKey();
}
static int[] FillArray(int length)
{
Random random = new Random();
int[] a = new int[length];
for (int i = 0; i < length; i++)
a[i] = random.Next(-100, 100);
return a;
}
static void PrintArray(int[] a)
{
foreach (int i in a)
Console.Write(i + " ");
}
static int Min(int[] a)
{
int min = a[0];
for (int i = 1; i < a.Length; i++)
if (min > a[i]) min = a[i];
return min;
}
static int Sum(int[] a)
{
int sum = 0;
for (int i = 0; i < a.Length; i++)
if (a[i] % 2==0) sum += a[i];
return sum;
}
static int[] Positiv(int[] a)
{
List<int> PositivElements = new List<int>();
for (int i = 0; i < a.Length; i++)
if (a[i] >0)
PositivElements.Add(a[i]);
return PositivElements.ToArray();
}
}
}
2-е задание:
using System;
class FailSoftArray2D
{
static int[,] a; // Ссылка на базовый двумерный массив.
int rows = 6, cols = 7;// размерности
public int Length; // Length - открытый член.
public bool errflag; // Индикатор результата
// последней операции.
// Создаем массив заданного размера,
public FailSoftArray2D(int n, int m)
{
rows = n;
cols = m;
a = new int[n, m];
Length = n * m;
}
// Это индексатор для класса FailSoftArray2D.
public int this[int index1, int index2]
{
// Это -- get-аксессор.
get
{
if (ok(index1, index2))
{
errflag = false;
return a[index1, index2];
}
else
{
errflag = true;
return 0;
}
}
// Это — set-аксессор.
set
{
if (ok(index1, index2))
{
a[index1, index2] = value;
errflag = false;
}
else errflag = true;
}
}
// Метод возвращает значение true, если индексы
// находятся внутри границ,
private bool ok(int index1, int index2)
{
if (index1 >= 0 & index1 < rows &
index2 >= 0 & index2 < cols)
return true;
return false;
}
public void formir()
{
Random rnd = new Random();
Console.WriteLine("Исходный массив:");
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < cols; j++)
{
a[i, j] = rnd.Next(100) - 50;
Console.Write("{0,4}", a[i, j]);
}
Console.WriteLine();
}
}
public int min_kol()
{
int min = 0, kol;
for (int j = 0; j < cols; j++)
{
kol = 0;
for (int i = 0; i < rows; i++)
{
if (a[i, j] > 0) kol++;
}
if (j == 0) min = kol;
if (min > kol) min = kol;
}
return min;
}
public void rez()
{
int min = min_kol();
Console.WriteLine("Результат(номера столбцов):");
for (int j = 0; j < cols; j++)
{
int kol = 0;
for (int i = 0; i < rows; i++)
{
if (a[i, j] > 0) kol++;
}
if (min == kol) Console.Write("{0,4}", j);
}
}
}
class Zada4a
{
public static int Main()
{
const int n = 5, m = 6;
FailSoftArray2D z1 = new FailSoftArray2D(n, m);
z1.formir();
z1.rez();
Console.ReadKey();
return 0;
}
}
РЕЗУЛЬТАТ РАБОТЫ ПРОГРАММЫ: