Created
December 12, 2017 11:57
-
-
Save skhozinova/5da04d0cad3b92b0aab3691f4f58fd8a to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System; | |
using System.Collections.Generic; | |
using System.Linq; | |
using System.Text; | |
namespace _8_задание | |
{ | |
enum nazvanie_classa { A, B, C, D, E, unknown }; | |
class CStudent | |
{ | |
//класс УЧЕНИК (поля: ФИО, ГОД ОБУЧЕНИЯ, НАЗВАНИЯ КЛАССА (БУКВА a-д)). | |
static public int n = 0; // хранит число созданных объектов | |
string fio; | |
int god_obucheniya; | |
nazvanie_classa bukva; | |
public string fio_1 //свойство для поля fio | |
{ get { return fio; } | |
set | |
{ | |
fio = value; | |
} | |
} | |
public int god_obucheniya_1 //свойство для поля god_obucheniya | |
{ | |
get { return god_obucheniya; } | |
set | |
{ | |
if (value >= 1 && value <= 11) | |
{ | |
god_obucheniya = value; | |
} | |
else throw new Exception("При изменении года ученика указано недопустимое значение. Значение должно быть в диапазоне [1,11]"); | |
} | |
} | |
public nazvanie_classa bukva_1 // свойство для поля nazvanie_classa bukva | |
{ | |
get { return bukva; } | |
set | |
{ | |
bukva = value; | |
} | |
} | |
public static explicit operator int(CStudent s)//приведения типа CStudent к типу int***** | |
{ | |
return s.god_obucheniya; | |
} | |
// перевод студента на следующий курс | |
public static CStudent operator ++(CStudent s) | |
{ | |
s.god_obucheniya_1++; | |
return s; | |
} | |
public void output() | |
{ | |
Console.Write("\nФИО: {0}\tгод обучения:{1}", fio, god_obucheniya); | |
switch (bukva) | |
{ | |
case nazvanie_classa.A: Console.Write("\tназвание класса А"); | |
break; | |
case nazvanie_classa.B: Console.Write("\tназвание класса Б"); | |
break; | |
case nazvanie_classa.C: Console.Write("\tназвание класса В"); | |
break; | |
case nazvanie_classa.D: Console.Write("\tназвание класса Г"); | |
break; | |
case nazvanie_classa.E: Console.Write("\tназвание класса Д"); | |
break; | |
default: Console.Write("\tбуква не указана"); | |
break; | |
} | |
} | |
public void input() | |
{ | |
Console.WriteLine("Введите ФИО ученика:"); | |
fio_1 = Console.ReadLine(); | |
Console.WriteLine("Введите год обучения:"); | |
god_obucheniya_1 = int.Parse(Console.ReadLine()); | |
Console.WriteLine("Введите название класса 1-A, 2-Б, 3-В, 4-Г, 5-Д:"); | |
int g = int.Parse(Console.ReadLine()); | |
switch (g) | |
{ | |
case 1: bukva_1 = nazvanie_classa.A; break; | |
case 2: bukva_1 = nazvanie_classa.B; break; | |
case 3: bukva_1 = nazvanie_classa.C; break; | |
case 4: bukva_1 = nazvanie_classa.D; break; | |
case 5: bukva_1 = nazvanie_classa.E; break; | |
} | |
} | |
public CStudent()//инициализирует все поля класса значениями по умолчанию | |
{ | |
fio = "Unknown"; | |
god_obucheniya = 0; | |
bukva = nazvanie_classa.unknown; | |
} | |
public CStudent(string n)//создает объект класса с заданной фамилией | |
: this()//до начала выполнения тела конструктора будет выполнен метод с таким же именем без параметров | |
{ | |
if (fio != "") | |
fio = n; | |
else fio = "Unknown"; | |
} | |
public CStudent(string fio, int god_obucheniya, nazvanie_classa bukva) | |
{ | |
if (fio != "") this.fio = fio; | |
else this.fio = "Unknown"; | |
if (god_obucheniya >= 1 && god_obucheniya <= 11) this.god_obucheniya = god_obucheniya; | |
else throw new Exception("При создании ученика год обучения задан неверно. Значение должно быть в интервале [1,11]."); | |
this.bukva = bukva; | |
n++; | |
} | |
public static CStudent deleting(CStudent[] ar, int k, string n)//поиск ученика | |
{ | |
if (k == 0) throw new Exception("\n В списке нет учеников"); | |
for (int i = 0; i < k; i++) | |
if (ar[i].fio_1 == n) return ar[i]; | |
throw new Exception("\n В списке нет учеников с такими именем " + n); | |
} | |
public static void sorting(CStudent[] students)//сортировка массива учеников по паре (год обучения, название класса) | |
{ | |
//students.OrderBy | |
List<CStudent> list = students.ToList(); | |
students = list.OrderBy(x => x.god_obucheniya).ThenBy(x => x.bukva).ToArray(); | |
//LINQ | |
list.Where(IsFirstLetterCapital); | |
List<CStudent> list_f_letter = list.Where(x => char.IsUpper(x.fio_1[0])).ToList(); | |
foreach (int l in students) students[l].output(); | |
} | |
static bool IsFirstLetterCapital(CStudent s) | |
{ | |
return char.IsUpper(s.fio_1[0]); | |
} | |
static bool sort_by_god_bukva(CStudent[] students) | |
{ | |
return students[].god_obucheniya_1; | |
} | |
} // class CStudent | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System; | |
using System.Collections.Generic; | |
using System.Linq; | |
using System.Text; | |
using _8_задание; | |
/*11. Описать класс УЧЕНИК (поля: ФИО, ГОД ОБУЧЕНИЯ, НАЗВАНИЯ КЛАССА (БУКВА a-д)). | |
Статический метод класса: сортировка массива учеников по паре (год обучения, название класса); | |
Функция демонстрационной программы: удаление ученика с заданной ФИО из массива. | |
Операция класса: перевод ученика в следующий класс (++) done*/ | |
namespace ConsoleApplication8 | |
{ | |
class Program | |
{ | |
static void Main(string[] args) | |
{ | |
bool q = true; | |
while (q)//меню программы | |
{ | |
Console.WriteLine("Выберите действие:\n"); | |
Console.WriteLine("1 - Текстовое создание объектов класса CStudent"); | |
Console.WriteLine("2 - Текстовое использование свойств класса CStudent и метода ввода"); | |
Console.WriteLine("3 - Формирование нового списка учеников"); | |
Console.WriteLine("4 - Добавление данных об ученике"); | |
Console.WriteLine("5 - Вывод списка учеников на экран"); | |
Console.WriteLine("6 - Сортировка массива учеников по паре (год обучения, название класса)"); | |
Console.WriteLine("7 - Удаление ученика с заданной ФИО из массива"); | |
Console.WriteLine("8 - Перевод ученика на следующий год (++)"); | |
Console.WriteLine("0 - Выход\n"); | |
try | |
{ | |
int d = int.Parse(Console.ReadLine()); | |
switch (d) | |
{ | |
case 0: | |
{ | |
q = false; | |
Console.WriteLine("Программа завершила работу"); break; | |
} | |
case 1: | |
{ | |
Console.WriteLine("Демонстрируется работа трех конструкторов"); // создание учеников | |
CStudent s1 = new CStudent(); | |
s1.output(); | |
CStudent s2 = new CStudent("Иванова"); | |
s2.output(); | |
CStudent s3 = new CStudent("Петров", 2003, nazvanie_classa.A); | |
s3.output(); | |
Console.WriteLine("\nКоличество созданных объектов =" + CStudent.n); | |
break; | |
} | |
case 2: Console.WriteLine("\n Для демонстрации свойства класса и метода ввода создайте ученика"); | |
CStudent s = new CStudent(); | |
s.input(); | |
Console.WriteLine("Создан ученик:"); | |
Console.WriteLine("{0}, {1}, {2}", s.fio_1, s.god_obucheniya_1, s.bukva_1); | |
s.fio_1 = "Иванова"; | |
s.god_obucheniya_1 = 2004; | |
s.bukva_1 = nazvanie_classa.B; | |
Console.WriteLine("\nДанные ученика изменены:"); | |
Console.WriteLine("{0}, {1}, {2}", s.fio_1, s.god_obucheniya_1, s.bukva_1); | |
break; | |
case 3: | |
{ | |
if (k == 0) new_array(); | |
else Console.WriteLine("Список уже сформирован, Вы можете только добавить ученика"); | |
break; | |
} | |
case 4: add(); break ; | |
case 5: output(); break; | |
case 6: CStudent.sorting(students); break; | |
case 7: | |
{ | |
Console.WriteLine("\n Введите ФИО ученика, данные о котором хотите удалить: "); | |
string s_1 = Console.ReadLine(); | |
CStudent.deleting(students, k, s_1).output(); | |
break; | |
} | |
case 8: | |
{ | |
Console.WriteLine("Для демонстрации метода создайте студента"); | |
CStudent s_s = new CStudent(); | |
s_s.input(); | |
Console.WriteLine("\nСоздан ученик:"); | |
s_s.output(); | |
Console.WriteLine("\n\nУченик переведен на следующий год:"); | |
s_s++; | |
s_s.output(); | |
Console.WriteLine("\nКласс ученика:" + (int)s_s); | |
break; | |
} | |
default: Console.WriteLine("Ошибка ввода\n"); break; | |
}// switch(n) | |
}//try | |
catch (Exception e) { Console.WriteLine(e.Message); } | |
Console.WriteLine("\nДля продолжения нажмите Enter"); | |
Console.ReadKey(); | |
}//while | |
Console.ReadKey(); | |
} | |
const int N = 22; | |
static int k = 0; | |
static CStudent[] students = new CStudent[N]; | |
static void add() | |
{ | |
if (k < N) | |
{ | |
students[k] = new CStudent(); | |
(students[k]).input(); | |
k++; | |
} | |
else Console.WriteLine("\n Массив заполнен. Невозможно добавить ученика."); | |
} | |
static void output()// вывод массива на экран | |
{ | |
if (k == 0) Console.WriteLine("Нет учеников в списке"); | |
else for (int i = 0; i < k; i++) | |
students[i].output(); | |
} | |
static void new_array() | |
{ | |
Console.WriteLine("Введите данные с клавиатуры:"); | |
Console.WriteLine("Введите количество студентов не больше " + N); | |
int n = int.Parse(Console.ReadLine()); | |
for (int i = 1; i <= n; i++) add(); | |
Console.WriteLine("\nФормирование списка завершено"); | |
} | |
static void deleting(string s_1)//поиск и удаление ученика по ФИО | |
{ | |
if (k == 0) Console.WriteLine("Удаление невозможно, т.к. в списке нет учеников"); | |
else | |
{ | |
bool f = false; | |
for (int i = 0; i < k; i++) | |
if (students[i].fio_1 == s_1) { students[i].output(); f = true; } | |
if (f == false) Console.WriteLine("\nВ списке нет студентов с ФИО " + s_1); | |
} | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment