Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


ФИЗИКО-МАТЕМАТИЧЕСКАЯ ШКОЛА

на общественных началах при МГТУ им. Н. Э. Баумана


 

Программа лабораторных работ по курсу “Информатика и программирование”

Москва 2018

 

Семестр 1

1. Лабораторная работа №1: (2-3 занятие)

1.1. Составить программу для решения квадратного уравнения ax2+ bx+ c=0, где a,b,cвводятся с клавиатуры. Результаты вывести в консоль.

1.2. Создать заголовочный и два исполняемых файла(например, func.h,и main.cpp, extra.cpp). В extra.cppопределяем функции: add(сложение целых чисел), sub(вычитание целых чисел), pow(возведение в степень). В func.h создаем прототипы всех функций из extra.cpp, и добавляем в него “headerguards”. В main.cpp подключаем заголовочный файл с помощью includeи используем эти функциив mainдля подтверждения работоспособности. Результаты тестирования выводим в консоль в понятном для человека виде.

 

P.S. Headerguards-вот такая конструкция, которая не позволяет коду внутри выполняться повторно если мы будем несколько раз подключатьэтот файлс помощью #includeв другие свои файлы:

 

#ifndefQWERTY//где QWERTY- любое название константы, которую вы создаете

#defineQWERTY

//здесь будет находится код, который должен

//выполняться только один раз

#endif

 

В последних версияхкомпиляторов c++ существует более удобная директива препроцессору #pragmaonce, которая делает то же самое и работает на весь файл сразу, но она поддерживается не везде

2. Лабораторная работа №2: (3-4 занятие)

2.1. С клавиатуры вводится число N. Вывести в консоль пирамидку из звездочек высотойN

Пример: N=3

 

*

* **

* ****

2.2. С клавиатуры вводятся 10 целых чисел в цикле. Требуется найти их сумму, среднее, минимальное и максимальное, и вывести результаты в консоль.

 

3. Лабораторная работа №3: (4-5 занятие)

3.1. Создание простой текстовой игры со случайными событиями(обязательные условия: использование enumдля хранения возможных вариантов событий, использование struct для сущностей игры, использование функций для повторяющихся вызовов)

Например:


enum Events

{

         Spider_num,

         Zombie_num,

         Vampire_num,

         HPpotion_num,

         Bonus_damage_num,

};

struct Spider {

           int Health;

int Damage;

}

 

 


4. Лабораторная работа №4: (5-6 занятие)

4.1. Сортировка массивов из 10 и 100 случайных элементов методом выбора, методом пузырька, и непрактичным Bogosort(функция random_shuffle для перемешивания массива, include<algorithm>). Подсчитать и вывести в консоль количество перестановок и сравнений для первых двух алгоритмов, и количество сравнений для последнего.

5. Лабораторная работа №5: (6-7 занятие)

5.1. Написать функцию вычисления длины строки C-style. На вход функции подается указатель на строку. Завершающий нулевой символ считать не нужно.

5.2. Нужно реализовать функцию resize. Функция resize принимает на вход три аргумента: указатель на область памяти, выделенную с помощью оператора new[], размер области (size) и новый размер (new_size). Функция должна выделить память размера new_size, скопировать в нее данные из переданной области памяти, освободить старую область памяти и вернуть выделенную область памяти нового размера со скопированными данными.

6. Лабораторная работа №6: (7-8 занятие)

6.1. Реализовать игру в кости, в которой имитируется бросание кубиков компьютером и пользователем. В игре 2 кубика и на каждом из них может выпасть от 1 до 6 очков. В начале игры у игрока просят ввести имя, затем случайным образом выбирается первый ходящий. Во время хода пользователя его просят ввести символ с клавиатуры для броска(например символ!,или любой другой). После бросков выводить в консоль нарисованные символами кубики(например из *), а также вспомогательную информацию(чей сейчас ход, промежуточный счет). В конце выводить победителя и проигравшего(или ничью!!).

 

Условия: использование функций везде где их использованием можно избежать нагромождения кодав одном месте; Отрисовка кубиков в консоль должна быть реализована через switch.

 

Switch(“параметр числа выпавших очков”){

         Case 1: //отрисовка кубика с числом 1

         …

}

 

7. Лабораторная работа №7: (8-9 занятие)

7.1. Написать функцию для вычисления суммы цифр числа через рекурсивную функцию и через итеративный цикл.(две разных функции)

7.2. Написать функцию для вычисления факториала числа через рекурсивную функцию и через итеративный цикл.(две разных функции)

8. Лабораторная работа №8: (9-10 занятие)

8.1. Создать текстовый файл и самому записать в него вещественные числа. В программе считать числа из файла и вывести их на экран, а также в другой файл, который создается программно. (с проверкой правильного открытия)

 


 

Семестр 2

1. Лабораторная работа №1: (1-3 занятие)

1.1. В программе реализовать классы для 3х геометрических фигур(“Треугольник”, “Прямоугольник”, “Круг”), содержащихprivateполя для вычисления площади фигуры. (Треугольник-длину основания и высоту; Прямоугольник- длины сторон; Круг- радиус) В каждом из классов реализовать метод подсчета площади фигуры.

1.2. В задание 1.1 добавить абстрактный класс геометрической фигуры Shapeс виртуальным методом для вычисления площади фигуры. От этого класса наследовать все 3 класса из задания 1.1. Добавить класс “Квадрат”, который наследуется от класса “Прямоугольник”.

1.3. Для всех 4х фигур из задания 1.2 реализовать конструктор с параметром для определения privateполей класса.

2. Лабораторная работа №2: (3-6 занятие)

2.1. В этой лабораторной нужно самостоятельно реализовать класс String(содержит поле intsizeдля хранения размера и поле char*strдля указателя на C-строку символов). Для него необходимо описать конструктор, который принимает на вход C-style строку, вычисляет ее размер (без учета завершающего 0 символа) и сохраняет его в поле size, кроме того, конструктор должен выделять память достаточную для хранения копии переданной строки (вместе с завершающим 0 символом), копирует переданную строку в выделенную память и сохраняет указатель на начало этой области памяти в поле str.

2.2. Для класса Stringреализовать заполняющий конструктор. Заполняющий конструктор принимает число и символ, и создает строку с заданным количеством повторений переданного символа. Например:

Strings(10, ‘A’) // строка s теперь хранит 10 символов A

2.3. Для классаStringреализовать деструктор.

2.4. В классе Stringперегрузить операторвывода в консоль <<.

2.5. Перегрузить оператор индексации [] для класса String для получения буквы по заданному индексу(задание выполняется после занятия 6, когда материал будет пройден)

3. Лабораторная работа №3: (5-8 занятие)

3.1. Определить класс Rationalрациональных чисел, в котором присутствуют 2 privateполя numeratorи denominator(числитель и знаменатель соответственно). Написать для него конструктор с параметрами.

3.2. Для класса Rationalперегрузить оператор вывода в консоль; операторы +=, -=, *=, /= так, чтобы они могли принимать в качестве аргументов и объекты типа Rational и целые числа.

3.3. Определить для класса Rational операторы сложения, вычитания, умножения и деления, так чтобы объекты типа Rational можно было складывать (вычитать, умножать и делить) не только друг с другом но и с целыми числами.

3.4. Реализуйте операторы <, <=, >, >=, ==,!= для класса Rational так, чтобы можно было сравнивать объекты класса Rational не только друг с другом, но и с целыми числами.

3.5. Добавьте в класс Rational оператор приведения к double.

4. Лабораторная работа №4: (9-11 занятие)

4.1. Требуется написать шаблонную версию класса Array. В классе должны быть реализованы:

1) Конструктор класса explicitArray(size_tsize = 0, const T&value = T()), который создает Array размера size, заполненный значениями value типа T. Считать что у типа T есть конструктор, который можно вызвать без параметров, либо он ему не нужен.

2) конструктор копирования, который создает копию параметра. Считайте, что для типа T определен оператор присваивания.

3) Оператор присваивания Array&operator=(...)

4) Оператор индексации для доступа по индексу T&operator[](size_t)

 



<== предыдущая лекция | следующая лекция ==>
Обработка результатов измерений | Задания для самостоятельной работы.
Поделиться с друзьями:


Дата добавления: 2018-10-18; Мы поможем в написании ваших работ!; просмотров: 246 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Жизнь - это то, что с тобой происходит, пока ты строишь планы. © Джон Леннон
==> читать все изречения...

2323 - | 2092 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.014 с.