Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2-й семестр / Лаб.работы / Мет.ук. к л.р.8.doc
Скачиваний:
59
Добавлен:
12.03.2016
Размер:
193.54 Кб
Скачать

Методические указания к лабораторным работам

2-й семестр

Порядок выполнения лабораторных работ

  1. Познакомиться с темой и целью лабораторной работы.

  2. Изучить необходимые к выполнению лабораторной работы теоретические сведения и примеры программ.

  3. Познакомиться с общим заданием к лабораторной работе и индивидуальным вариантом задания.

  4. Написать и отладить программу решения задачи индивидуального варианта.

  5. Протестировать работу программы на различных наборах исходных данных.

  6. Продемонстрировать преподавателю работу программы.

  7. Оформить отчет.

  8. Защитить лабораторную работу.

Оборудование, технические средства, инструмент

Лабораторные работы выполняются в компьютерном классе, оснащенном персональными компьютерами. На компьютерах должна быть установлена система программирования, поддерживающая создание программ на С++ (например, Qt Creator, MS Visual C++ Express), система программирования на Java (например, NetBeans) и система программирования на С# (например, MS Visual C# Express).

Требования к оформлению отчета

Отчет по лабораторной работ должен содержать:

  • титульный лист;

  • цель работы;

  • задание к лабораторной работе (общее задание и индивидуальный вариант задания);

  • состав проекта и листинг программы;

  • тестовые примеры, иллюстрирующие все варианты работы программы.

Требования к защите лабораторных работ

После оформления отчета, лабораторную работу защищают, т. е. поясняют алгоритм работы программы и отвечают на контрольные вопросы.

Лабораторная работа №8. Перечисления в С++, Java и C#.

Цель работы: получить практические навыки работы с перечислимым типом данных в С++, Java и C#.

Задание 1

Изменить программу, созданную на C++ на основе задания 1 лабораторной работы № 1. Добавить в класс, созданный на основе индивидуального варианта, поле перечислимого типа и организовать работу с ним.

Пример 1

В листинге 1 представлена программа, в которой формируется исходный список студентов, список студентов с минимальным рейтингом, осуществляется поиск информации о рейтинге студента по его фамилии, а также формируется список студентов заочников. Исходный список студентов сортируется по фамилии. В программе используется перечислимый тип данных для задания формы обучения студента.

Для создания программы использовалась среда разработки Qt Creator 3.0 (основан на Qt 5.2.0). На рисунке 1 показан состав проекта программы.

Рисунок 1 – Состав проекта программы

Создание проекта в Qt Creator: Файл -> Новый файл или проект … -> Проект без использования Qt -> Простой проект на С++.

Компиляция, сборка и выполнение проекта: Сборка -> Запустить.

На рисунке 2 показан результат выполнения программы.

Листинг 1

// main.cpp

#include <iostream>

#include <string>

#include <cstdlib>

#include <iomanip>

using namespace std;

enum Type

{ OCH,

ZAOCH,

VECH

};

class Student

{ private:

string fam;

string name;

int grade; //рейтинг

Type typeob;

public:

Student(string fam, string name, int grade,Type typeob);

~Student();

string getfam();

string getname();

int getgrade();

Type gettypeob();

void output();

};

Student::Student(string fam, string name, int grade, Type typeob)

{ this->fam = fam;

this->name = name;

this->grade = grade;

this->typeob = typeob;

}

Student::~Student(){}

void Student::output()

{ string StrMyType[] = {"OCH", "ZAOCH", "VECH"};

cout << left << setw(10)<< fam;

cout << setw(10) << name;

cout << right << setw(4) << grade;

cout << setw(13)<< StrMyType[typeob] << endl;

}

string Student::getfam() { return fam;}

string Student::getname(){ return name;}

int Student::getgrade(){ return grade;}

Type Student::gettypeob(){ return typeob;}

int compare(const void* s1, const void* s2)

{ if (((Student*)s1)->getfam() < ((Student*)s2)->getfam()) return -1;

else if (((Student*)s1)->getfam() > ((Student*)s2)->getfam()) return 1;

else return 0;

}

int main()

{ const int n = 3;

Student st[n] = { Student("Сидоров", "Иван", 80,OCH),

Student("Иванов", "Иван", 60, ZAOCH),

Student("Петров", "Петр", 70,ZAOCH) };

qsort(st,n,sizeof(Student), compare);

cout << "Список студентов: \n";

cout << left << setw(10) << "Фамилия" << setw(10)<< "Имя"

<< setw(10)<< "Рейтинг" << setw(10)<< "Форма обуч" << endl;

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

st[i].output();

string fam;

cout << "\nУкажите фамилию студента: "; cin >> fam;

int f = 0; int pr = 0;

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

if (st[i].getfam() == fam)

{ cout << "\nРейтинг студента "<< fam <<" - " << st[i].getgrade();

f = 1;

}

if (f == 0) cout << "\nНет в списке студента " << fam << endl;

int min = st[0].getgrade();

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

if (st[i].getgrade() < min)

min = st[i].getgrade();

cout << "\nСписок студентов с минимальным рейтингом: \n";

cout << left << setw(10) << "Фамилия" << setw(10)<< "Имя"

<< setw(10)<< "Рейтинг" << setw(10)<< "Форма обуч" << endl;

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

if (st[i].getgrade() == min)

st[i].output();

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

if (st[i].gettypeob() == ZAOCH)

{ pr = 1; break; }

if (pr == 1)

{ cout << "\nСписок студентов заочников: \n";

cout << left << setw(10) << "Фамилия" << setw(10)<< "Имя"

<< setw(10)<< "Рейтинг" << setw(10)<< "Форма обуч" << endl;

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

if (st[i].gettypeob() == ZAOCH)

st[i].output();

}

else cout << "Нет студентов заочников" << endl;

}

Рисунок 2 – Результат выполнения программы

Соседние файлы в папке Лаб.работы