Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

s12-lab-book

.pdf
Скачиваний:
6
Добавлен:
20.04.2015
Размер:
448.77 Кб
Скачать

ООП - лабораторные работы (весна 2012), Release 0

4.3 Задания (лабораторная работа 4)

4.3.1 Матрица на динамическом массиве

Задача - реализовать класс матрицы с использованием ручного управления памятью (new[]/delete[]) и провести тестирование.

4.3.2 Реализация матричных операций (дополнительное задание)

Задача - для созданного класса матрицы реализовать матричные операции:

умножение матрицы на число

сложение двух матриц

умножение двух матриц

транспонирование матрицы

4.3. Задания (лабораторная работа 4)

38

CHAPTER

FIVE

ЛАБОРАТОРНАЯ РАБОТА (ТЕСТИРОВАНИЕ РАЗНЫХ ВАРИАНТОВ РЕАЛИЗАЦИИ СТЕКА)

Теория

понятие сложности алгоритмов

функции работы со временем в стандартной библиотеке С++

случайные и псевдослучайные числа, функции генерации псевдослучайных чисел в стандартной библиотеке С++

адаптеры (шаблонные классы STL, например std::stack<>)

умолчательные параметры шаблонов

отладочная (debug) и продуктовая (release) версии программы

39

ООП - лабораторные работы (весна 2012), Release 0

5.1 Пример - генерирование псевдослучайной последовательности

Исходный текст (файл lab-05-00.cpp).

1#include <iostream>

2#include <cstdlib>

3#include <ctime>

4#include <cassert>

5

6using namespace std;

7

8int getRand(const int rst, const int last)

9{

10assert( rst < last);

11const int n(last - rst);

12return ( rst + rand() % (n + 1));

13}

14

15int main()

16{

17

18

srand(static_cast<unsigned int>(time(0)));

19

20

21

22

23

24

25

cout << "Let's generate (pseudo)random binary sequence:" << endl; for (int i(0); i < 40; ++i)

{

cout << getRand(0, 1);

}

cout << endl << endl;

26cout << "Let's generate (pseudo)random sequence with values from -9 to 9:\n";

27for (int i(0); i < 20; ++i)

28{

29cout << showpos << getRand(-9, 9);

30}

31cout << endl;

32

33

return 0;

34 }

Результаты работы программы (lab-05-00.exe) для нескольких запусков

Обратите внимание, что каждый раз результат различный.

5.1. Пример - генерирование псевдослучайной последовательности

40

ООП - лабораторные работы (весна 2012), Release 0

5.2 Пример - измерение времени выполнения (части) программы

Исходный текст (файл lab-05-01.cpp).

1#include <iostream>

2//#include <cstdlib>

3#include <ctime>

4#include <cmath>

5

6using namespace std;

7

8int main()

9{

10cout << "Let's do something..." << endl;

11const double tBeg(static_cast<double>(clock()));

12for (int i(0); i < 5000; ++i)

13{

14for (int j(0); j < 5000; ++j)

15{

16pow(sqrt(static_cast<double>(i)), log(static_cast<double>(i + j)));

17}

18}

19const double tEnd(clock());

20double tDelta(tEnd - tBeg);

21cout << "It takes us " << (tDelta / CLOCKS_PER_SEC) << " sec" << endl;

22

23

return 0;

24 }

Результаты работы программы (lab-05-01.exe)

5.2. Пример - измерение времени выполнения (части) программы

41

ООП - лабораторные работы (весна 2012), Release 0

5.3 Задания (лабораторная работа 5)

Написать программу оцеки среднего времени выполнения операций для самописных классов и различных вариантов stl стека.

Провести исследование оценки сренег времени выполнения операций для debug/release версий и разных распределений операций.

5.3. Задания (лабораторная работа 5)

42

CHAPTER

SIX

ЛАБОРАТОРНАЯ РАБОТА (ЗАМЕНА СЛОВ В ТЕКСТОВЫХ ФАЙЛАХ)

Теория

параметры командной строки и функция main

абстрактный типа данных Строка (АТД Строка)

C-строки

std::string

работа с потоками

обработка текстовых файлов

абстрактный типа данных Ассоциативный массив

std::map<>

43

ООП - лабораторные работы (весна 2012), Release 0

6.1 Пример - анализ параметров командной строки

1#include <iostream>

2

3using namespace std;

4

5int main(int argc, char* argv[])

6{

7

8

9

10

11

12

cout << "Number of arguments: " << argc << endl; for (int i(0) ; i < argc; ++i)

{

cout << "arg[" << i << "]: " << argv[i] << endl;

}

13return 0;

14}

Результаты работы программы (lab-06-00.exe) Запуск без дополнительных параметров:

Запуск с дополнительными параметрами: test 0 1

Запуск с дополнительными параметрами: 0 string with spaces

6.1. Пример - анализ параметров командной строки

44

ООП - лабораторные работы (весна 2012), Release 0

6.2 Пример - посимвольная обработка текстового файла

1#include <iostream>

2

3using namespace std;

4

5int main(int argc, char* argv[])

6{

7

8

9

10

11

12

cout << "Number of arguments: " << argc << endl; for (int i(0) ; i < argc; ++i)

{

cout << "arg[" << i << "]: " << argv[i] << endl;

}

13return 0;

14}

Результаты работы программы (lab-06-01.exe) Для текстового файла

6.2. Пример - посимвольная обработка текстового файла

45

ООП - лабораторные работы (весна 2012), Release 0

1

2

3

4

5

6

7

8

6.3 Пример - составление частотного словаря слов

#include <iostream>

using namespace std;

int main()

{

return 0;

}

Результаты работы программы (lab-06-02.exe)

6.3. Пример - составление частотного словаря слов

46

ООП - лабораторные работы (весна 2012), Release 0

6.4 Задания (лабораторная работа 6)

Задача:

1.реализовать консольное приложение для замены слов в текстовом файле

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

3.список замен предоставляется в текстовом файле, каждая строка которого состоит из разделенных пробелом заменяемого и подставляемого слов

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

5.в случае успешной работы приложение выводит сообщение о том, сколько успешных замен оно сделало

6.4. Задания (лабораторная работа 6)

47

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