
- •Лабораторная работа №9 использование структур и ломаных массивов при работе с классами
- •Вопросы для контроля
- •Постановка задания
- •Содержание отчета
- •Порядок выполнения работы
- •3.Выполнить задание по вариантам, указанным преподавателем (таблица 9.1.).
- •Краткие теоретические сведения
- •Постановка задания
- •Пример выполнения работы
Постановка задания
1) Выполнить задание по вариантам. Использовать структуру и динамический массив.
2) Изменить задачу так, чтобы использовался ломаный двумерный массив.
Таблица 9.1.
№ п.п |
Задание |
1
|
Даны сведения о работе фирмы – филиалы, для каждого из которых указаны фирмы-партнеры. Определить, ведут ли дела филиалы с указанным партнером. Вывести на экран список этих филиалов. |
2
|
Даны сведения о читателях библиотеки – список кодов книг по каждому читателю. Определить, кто из читателей брал заданную книгу. Вывести на экран их список. |
3 |
Даны сведения о вкладчиках банка – ФИО вкладчика, виды вкладов. Определить, кто из вкладчиков имеет заданный вид вклада. Вывести на экран их список. |
4 |
Даны сведения о подписчиках – ФИО подписчика, адрес, газеты и журналы, которые он выписывает. Определить, кто из подписчиков выписывает заданную газету/журнал. Вывести на экран их список. |
5
|
Даны сведения о больных – адрес, ФИО, список заболеваний (диагнозы врачей). Определить, кто из больных имеет указанный диагноз (заболевание). Вывести на экран их список. |
Пример выполнения работы
Даны сведения об учениках одного класса – ФИО и список любимых предметов. Вывести на экран список учеников, у которых любимый предмет N(N вводится с клавиатуры). Количество любимых предметов заранее неизвестно – задается динамически. Использовать структуры. |
Изменить задачу так, чтобы использовался ломаный двумерный массив. |
ПРОГРАММА
1-е задание:
Вариант №1
using System;
class Zada4a
{
public struct klass
{
public string fam;
public string name;
public string otch;
public string[] predmet;
};
klass[] fio;
int n, n1,kol;
public void init_str()
{
Console.WriteLine("Введите количество учеников");
string s = Console.ReadLine();
n = int.Parse(s);
fio = new klass[n];
}
public void formir()
{
for (int i = 0; i < n; i++)
{
Console.WriteLine("Введите фамилию {0} ученика:",i+1);
fio[i].fam = Console.ReadLine();
Console.WriteLine("Введите имя {0} ученика:", i+1);
fio[i].name = Console.ReadLine();
Console.WriteLine("Введите отчество {0} ученика:", i+1);
fio[i].otch = Console.ReadLine();
Console.WriteLine("Введите количество любимых предметов {0} ученика:", i+1);
kol = int.Parse(Console.ReadLine());
fio[i].predmet = new string[kol];
for (int j = 0; j < kol; j++)
{
Console.WriteLine("Введите название {0}любимого предмета {1} ученика:", j+1,i+1);
fio[i].predmet[j] = Console.ReadLine();
}
}
}
public void poisk()
{
Console.WriteLine("Введите иназвание предмета для поиска:");
string s = Console.ReadLine();
for (int i = 0; i < n; i++)
{
for (int j = 0; j < kol; j++)
{
if (String.Compare(fio[i].predmet[j], s) == 1)
Console.WriteLine(fio[i].fam);
}
}
}
public static int Main()
{
Zada4a z1 = new Zada4a();
z1.init_str();
z1.formir();
z1.poisk();
Console.ReadKey();
return 0;
}
}
1-е задание:
Вариант №2
using System;
class Zada4a
{
public struct klass
{
public string fam;
public string name;
public string otch;
};
public struct child
{
public klass[] fio;
public string[] predmet;
}
int n, n1,kol;
child[] ch;
public void init_str()
{
Console.WriteLine("Введите количество учеников");
string s = Console.ReadLine();
n = int.Parse(s);
ch = new child[n];
}
public void formir()
{
for (int i = 0; i < n; i++)
{
ch[i].fio = new klass[n];
Console.WriteLine("Введите фамилию {0} ученика:",i+1);
ch[i].fio[i].fam = Console.ReadLine();
Console.WriteLine("Введите имя {0} ученика:", i+1);
ch[i].fio[i].name = Console.ReadLine();
Console.WriteLine("Введите отчество {0} ученика:", i+1);
ch[i].fio[i].otch = Console.ReadLine();
Console.WriteLine("Введите количество любимых предметов {0} ученика:", i+1);
kol = int.Parse(Console.ReadLine());
ch[i].predmet = new string[kol];
for (int j = 0; j < kol; j++)
{
Console.WriteLine("Введите название {0}любимого предмета {1} ученика:", j+1,i+1);
ch[i].predmet[j] = Console.ReadLine();
}
}
}
public void poisk()
{
Console.WriteLine("Введите иназвание предмета для поиска:");
string s = Console.ReadLine();
for (int i = 0; i < n; i++)
{
for (int j = 0; j < kol; j++)
{
if (String.Compare(ch[i].predmet[j], s) == 1)
Console.WriteLine(ch[i].fio[i].fam);
}
}
}
public static int Main()
{
Zada4a z1 = new Zada4a();
z1.init_str();
z1.formir();
z1.poisk();
Console.ReadKey();
return 0;
}
}
РЕЗУЛЬТАТ РАБОТЫ ПРОГРАММЫ:
2-е задание:
using System;
class Zada4a
{
string[][] ch;
int kol,n;
public void init_str()
{
Console.WriteLine("Введите количество учеников");
string s = Console.ReadLine();
n = int.Parse(s);
ch = new string[n][];
}
public void formir()
{
for (int i = 0; i < n; i++)
{
Console.WriteLine("Введите количество любимых предметов {0} ученика:", i + 1);
kol = int.Parse(Console.ReadLine());
ch[i] = new string[3+kol];
for (int j = 0; j < kol+3; j++)
{
switch (j)
{
case 0: Console.WriteLine("Введите фамилию {0} ученика:", i + 1); break;
case 1: Console.WriteLine("Введите имя {0} ученика:", i + 1); break;
case 2: Console.WriteLine("Введите отчество {0} ученика:", i + 1); break;
default: Console.WriteLine("Введите название {0}любимого предмета {1} ученика:", j - 2, i + 1); break;
}
ch[i][j] = Console.ReadLine();
}
}
}
public void poisk()
{
Console.WriteLine("Введите иназвание предмета для поиска:");
string s = Console.ReadLine();
for (int i = 0; i < n; i++)
{
for (int j = 3; j < kol+3; j++)
{
if (String.Compare(ch[i][j],s) == 1) Console.WriteLine(ch[i][0]);
}
}
}
public static int Main()
{
Zada4a z1 = new Zada4a();
z1.init_str();
z1.formir();
z1.poisk();
Console.ReadKey();
return 0;
}
}
РЕЗУЛЬТАТ РАБОТЫ ПРОГРАММЫ: