- •Введение
- •Контрольная работа № 1 разработка приложений в microsoft visual studio 2008
- •Теоретические сведения Интерфейс Microsoft Visual Studio 2008
- •Создание консольного приложения
- •Построение xml-отчета по выполненному проекту
- •Создание приложения Windows Forms
- •Контрольные вопросы
- •Содержание и порядок выполнения работы
- •Контрольная работа № 2
- •Теоретические сведения Структура программы. Переменные и выражения
- •Литеральные константы
- •Операции и их старшинство
- •Операторы c#
- •If(выражение1) if(выражение2) if(выражение3) ...
- •Контрольные вопросы
- •Содержание и порядок выполнения работы
- •Примеры решения задач
- •Контрольная работа № 3 техника работы с массивами. Процедуры и функции
- •Теоретические сведения
- •Базовый класс для массивов
- •Процедуры и функции
- •Синтаксис методов
- •Формальные и фактические аргументы
- •Соответствие формальных и фактических аргументов
- •Функции с побочным эффектом
- •Функция Main()
- •Контрольные вопросы
- •Содержание и порядок выполнения работы
- •Примеры решения задач
- •Контрольная работа № 4 перечисления и структуры
- •Теоретические сведения
- •Базовый класс перечислений - System.Enum
- •Структуры
- •Контрольные вопросы
- •Содержание и порядок выполнения работы
- •Пример решения задачи
- •Контрольная работа № 5 обработка символов и строк
- •Теоретические сведения
- •Контрольные вопросы
- •Содержание и порядок выполнения работы
- •Примеры решения задачи
- •Контрольная работа № 6 проектирование классов. Составление программ с использованием ооп
- •Теоретические сведения
- •Контрольные вопросы
- •Содержание и порядок выполнения работы
- •Пример решения задачи
- •Заключение
- •Библиографический список
- •Оглавление
- •394026 Воронеж, Московский просп., 14
Пример решения задачи
Описать структуру с именем 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);
}
}
}