Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
387.doc
Скачиваний:
11
Добавлен:
30.04.2022
Размер:
3.51 Mб
Скачать

Пример решения задачи

Описать структуру с именем STUDENT, содержащую следующие поля:

- фамилия и инициалы;

- номер зачетной книжки;

- факультет (тип – перечисление);

- номер группы;

- адрес;

- успеваемость (массив из пяти элементов).

Написать программу, выполняющую следующие действия:

-инициализацию данных в массив, состоящий из 12 структур типа STUDENT;

- сортировку записей по факультетам;

- сортировку по группам;

- формирование нового массива – отличников;

- удаление из исходного массива двоечников;

- вывод студентов, имеющих оценки 3 и 4.

Если таких элементов нет, вывести соответствующее сообщение

namespace з3

{

enum facultet:byte

{

ФАЭМ,

РТФ,

ЕГФ,

АФ,

ИЭФ

}

struct student

{

public string fio;

public int nomZach;

public facultet fac;

public string nomGr;

public string adres;

public int[] usp;

}

class Class1

{

static void Init (out student stud) //Создание

{

Console.WriteLine("Введите фамилию, имя и отчество студента");

stud.fio=Console.ReadLine();

Console.WriteLine("Введите номер зачетки ");

stud.nomZach=Convert.ToInt32(Console.ReadLine());

Console.WriteLine("Выберите факультет");

Console.WriteLine("0 - ФАЭМ"+"\n"+"1 - РТФ"+"\n"+ "2 - ЕГФ"+"\n"+"3 - АФ"+"\n"+"4 - ИЭФ");

stud.fac=(facultet)Convert.ToByte(Console.ReadLine());

Console.WriteLine("Введите номер группы");

stud.nomGr=Console.ReadLine();

Console.WriteLine("Введите адрес");

stud.adres=Console.ReadLine();

int[] oc=new int [5];

Console.WriteLine("Введите успеваемость");

for (int j=0; j<5; j++)

{

oc[j]=Convert.ToInt32(Console.ReadLine());

}

stud.usp=oc;

}

//Создание по умолчанию

static void DefInit(out student stud, string f, string nG, string ad, int nZ, byte facul,int[] oc)

{

stud.fio = f;

stud.nomZach = nZ;

stud.fac = (facultet)facul;

stud.nomGr = nG;

stud.adres = ad;

stud.usp = oc;

}

static void DefaultZap(params student[] stud)

{

nt[] oc ={ 5, 5, 5, 5, 5 };

DefInit(out stud[0],"Кипелов Валерий Александрович", "ВМ-081","",1801,0,oc);

int[] oc0 ={ 5, 3, 5, 4, 5 };

DefInit(out stud[1], "Холстинин Владимир Сергеевич", "ИС-081", "", 1832, 2, oc0);

int[] oc1 ={ 2, 5, 3, 4, 4 };

DefInit(out stud[2], "Дубинин Виталий Андреевич", "РД-081", "", 1816, 3, oc1);

int[] oc2 ={ 3, 4, 4, 3, 3 };

DefInit(out stud[3], "Жмельков Олег Григорьевич", "РК-081", "", 1803, 1, oc2);

int[] oc3 ={ 3, 2, 5, 4, 5 };

DefInit(out stud[4], "Немоляев Кирилл Петрович", "ПТ-081", "", 1808, 3, oc3);

int[] oc4 ={ 5, 5, 5, 5, 5 };

DefInit(out stud[5], "Маврин Сергей Викторович", "ВМ-081", "", 1817, 0, oc4);

int[] oc5 ={ 5, 4, 4, 5, 5 };

DefInit(out stud[6], "Горшенев Михаил Валерьевич", "АТ-081", "", 1884, 0, oc5);

int[] oc6={ 2, 2, 3, 2, 3 };

DefInit(out stud[7], "Лобашев Андрей Евгеньевич", "ЭК-081", "", 1811, 4, oc6);

int[] oc7={ 5, 5, 5, 5, 5 };

DefInit(out stud[8], "Грановский Алик Дмитриевич", "ВМ-081", "", 1899, 0, oc7);

int[] oc8={ 4, 4, 4, 2, 4 };

DefInit(out stud[9], "Михеев Артур Степанович ", "ИС-081", "", 1873, 2, oc8);

int[] oc9={ 4, 3, 3, 3, 3 };

DefInit(out stud[10], "Нефедова Мария Сергеевна", "ЭСХ-081", "", 1876, 0, oc9);

int[] oc10={ 5, 5, 3, 3, 3 };

DefInit(out stud[11], "Булгаков Алексей Владимирович", "РТ-081", "", 1809, 1, oc10);

}

static void Print (student stud) //Печать

{

Console.WriteLine("\n"+stud.fio+"\t"+stud.nomZach+"\t"+

stud.nomGr+"\t"+stud.fac);

Console.WriteLine("Адрес: "+stud.adres);

Console.Write("Успеваемость: ");

foreach (int a in stud.usp) Console.Write("\t"+a);

Console.WriteLine();

}

static void SortGr(student[] A) //Сортировка по группам

{

student[] B = A;

for (int i=0; i<B.Length; i++)

{

for (int j=i; j<B.Length; j++)

{

If (A[j].nomGr.CompareTo(B[i].nomGr) < 0)

{

student h;

h=B[i];

B[i]=B[j];

B[j]=h;

}

}

}

foreach (student a in B) Print(a);

}

static void SortF(student[] A) //Сортировка по факультетам

{

student[] B = A;

for (int i = 0; i < B.Length; i++)

{

for (int j = i; j < B.Length; j++)

{

if(Convert.ToString(B[j].fac).CompareTo(Convert.ToString(B[i].fac)) < 0)

{

student h;

h = B[i];

B[i] = B[j];

B[j] = h;

}

}

}

foreach (student a in B) Print(a);

}

static void FindOtl(student[] A) //Поиск отличников

{

int n = 0;

student[] B = new student[A.Length];

for (int i = 0; i < A.Length; i++)

{

bool flag = true;

for (int j = 0; j < 5; j++)

{

if (A[i].usp[j].CompareTo(5) != 0)

{

flag = false;

break;

}

}

if (flag)

{

B[n] = A[i];

n++;

}

}

for (int i = 0; i < n; i++)

Print(B[i]);

}

static void FindDv(student[] A, out int n) //Удаление двоечников

{

student[] B = A;

n=0;

for (int i = 0; i < A.Length; i++)

{

bool flag = true;

for (int j = 0; j < A[i].usp.Length; j++)

{

if (A[i].usp[j] == 2)

{

flag = false;

break;

}

}

if (flag==true)

{

B[n] = A[i];

n++;

}

}

for (int i = 0; i < n; i++)

A[i] = B[i];

for (int i = 0; i < n; i++ ) Print(A[i]);

}

static void Poisk(student[] A, int n) //Вывод троечников и хорошистов

{

for (int i = 0; i < n; i++)

{

bool flag = true;

for (int j = 0; j < 5; j++)

{

if ((A[i].usp[j].CompareTo(3) != 0) && (A[i].usp[j].CompareTo(4) != 0))

{

flag = false;

break;

}

}

if (flag) Print(A[i]);

}

}

static void Main(string[] args)

{

Console.WriteLine("Нажмите Enter для просмотра записей"+"\n");

student[] st=new student[12];

int newRazm;

DefaultZap(st);

Console.ReadLine();

foreach (student a in st) Print(a);

Console.WriteLine("\n"+

"Enter для просмотра списка, отсортированного по номеру группы"+"\n");

Console.ReadLine();

SortGr(st);

Console.WriteLine("\n" +

"Нажмите Enter для просмотра списка, отсортированного по факультетам" + "\n");

Console.ReadLine();

SortF(st);

Console.WriteLine();

Console.WriteLine("\n" + "Нажмите Enter для просмотра списка отличников" + "\n");

Console.ReadLine();

FindOtl(st);

Console.WriteLine("\n" +

"Нажмите Enter для удаления двоечников из списка" + "\n");

Console.ReadLine();

FindDv(st,out newRazm);

Console.WriteLine("\n"+

"Нажмите Enter для просмотра записей о студентах, учащихся на 3 и 4" + "\n");

Console.ReadLine();

Poisk(st,newRazm);

}

}

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]