lab-01
.pdfООП - лабораторные работы (весна 2012), Release 0
1.1Пример - cоздание проcтого консольного приложения c выводом в консоль
1/**
2 \ le lab-01-00.cpp
3\brief короткое приложение "Hello, world!"
4\author Полевой Дмитрий
5 \date 05.02.2012
6*/
7#include <iostream>
8
9using namespace std;
10
11int main()
12{
13
14
cout << "Hello, world!";
15return 0;
16}
Результаты работы программы (lab-01-00.exe)
1.1. Пример - cоздание проcтого консольного приложения c выводом в консоль |
2 |
ООП - лабораторные работы (весна 2012), Release 0
1.2 Пример - печать таблицы функции
Задача - написать консольное приложение, которое печатает таблицу значений функции:
•для нечетных x
f(x) = x=2
•для четных x
f(x) = x ïðè x < 9
f(x) = 10 x при остальных x
1/**
2 \ le lab-01-01.cpp
3\brief печать таблицы функции
4\author Полевой Дмитрий
5 \date 01.02.2012
6*/
7#include <iostream>
8#include <iomanip>
9#include <cassert>
10
11 |
using namespace std; |
12
13double f(const int arg)
14{
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
double funcValue(0.0); switch (arg % 2)
{
case 0:
if (arg < 9)
{
funcValue = arg;
}
else
{
funcValue = 10 - arg;
}
break; case 1:
funcValue = -arg / 2.0; break;
default: assert(0);
}
return funcValue;
35 }
36
37int main()
38{
39
40
41
42
43
44
45
46
const int N_ROW(10);
cout << setw(3) << 'x' << '|' << setw(5) << "f(x)" << endl; cout << "------------\n";
for (int iRow(0); iRow < N_ROW; ++iRow)
{
cout << setw(3) << iRow << '|' << setw(5) << f(iRow) << endl;
}
47return 0;
48}
1.2. Пример - печать таблицы функции |
3 |
ООП - лабораторные работы (весна 2012), Release 0
Результаты работы программы (lab-01-01.exe)
1.2. Пример - печать таблицы функции |
4 |
ООП - лабораторные работы (весна 2012), Release 0
1.3Пример - обработка последовательности (на примере использование std::vector)
Задача - написать консольное приложение, которое:
•считывает с консоли последовательность целых чисел (длинна последователности от 1 до 10);
•находит индекс минимального и максимального элемента в последовательности;
•показывает индексы и значения минимального и максимального элементов;
•показывает все элементы последовательности.
1/**
2 \ le lab-01-02.cpp
3\brief печать таблицы функции
4\author Полевой Дмитрий
5 \date 01.02.2012
6*/
7#include <iostream>
8#include <vector>
9
10 |
using namespace std; |
11 |
|
12 |
bool get(vector<int>& data); |
13
14void ndMinMaxIdx(const vector<int>& data, int& iMin, int& iMax)
15{
16
17
18
19
20
21
22
23
24
25
26
27 }
28
iMin = 0; iMax = 0;
for (size_t i(1); i < data.size(); ++i) // по всем элементам
{
if (data.at(i) < data.at(iMin))
{
iMin = i;
}
iMax = (data.at(i) > data.at(iMax)) ? i : iMax;
}
29int main()
30{
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
cout << "Please, enter number of elements (from 1 to 10) > "; int n(-1);
cin >> n;
if ((n < 1) || (10 < n))
{
cout << "Invalid size " << n << "\nTry again later\n";
}
else
{
vector<int> data(n); if (get(data))
{
int iMin(0); int iMax(0);
ndMinMaxIdx(data, iMin, iMax);
cout << "min index is " << iMin << " and value is " << data.at(iMin) << endl;
cout << "max index is " << iMax << " and value is " << data[iMax]; cout << "\nall values - ";
1.3. Пример - обработка последовательности (на примере использование std::vector) |
5 |
ООП - лабораторные работы (весна 2012), Release 0
50for (vector<int>::iterator it(data.begin()), itEnd(data.end());
51it != itEnd; ++it)
52{
53cout << *it << ' ';
54}
55}
56}
57
58return 0;
59}
60
61bool get(vector<int>& data)
62{
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85 }
//результат работы функции - все ли значения введены правильно bool res(true);
//очередное значение последовательности
int val(0);
for (size_t i(0); ((i < data.size()) && res); ++i) // по элементам массива
{
cout << "Please enter element with index " << i << " > "; cin >> val;
if (cin.good())
//введено число
{
data.at(i) = val;
}
else
//ошибка разбора числа
{
cout << "Invalid element value, please, try again later"; res = false;
}
}
return res;
1.3.1 Тестирование решения (lab-01-02.exe)
Проверим нижнюю границу размеров и зададим заведомо неправильное значение 0.
Проверим верхнюю границу размеров и зададим заведомо неправильное значение 11.
Введем заведомо неправильный вариант значения элемента последовательности.
1.3. Пример - обработка последовательности (на примере использование std::vector) |
6 |
ООП - лабораторные работы (весна 2012), Release 0
Введем корректные данные.
1.3. Пример - обработка последовательности (на примере использование std::vector) |
7 |
ООП - лабораторные работы (весна 2012), Release 0
1.4 Задания (лабораторная работа 1)
1.4.1 Копирование примеров
Для каждого примера:
•набрать (именно набрать, а не скопировать-вставить) текст программы и произвести отладку (программа должна собираться без ошибок и запускаться)
•убедится, что результат работы программы совпадает с указанным
1.4.2Изучение и модификация программы печать таблицы функции
Выяснить, для чего именно в программу включен каждый из заголовочных файлов.
Todo
сформулирвать разумные варианты
Модифицировать программу печати функции так, чтобы выводить
•1=x в диапазоне [ 1; 1] с шагом 0.1
•1=x2 в диапазоне [ 1; 1] с шагом 0.1
•1=sin(x) в диапазоне [ pi=2; pi=2] с шагом pi/24
•1=sin2(x) в диапазоне [ pi=2; pi=2] с шагом pi/24
•1=sin(x2) в диапазоне [ pi=2; pi=2] с шагом pi/24
•1=cos(x) в диапазоне [ pi=2; pi=2] с шагом pi/24
•1=cos2(x) в диапазоне [ pi=2; pi=2] с шагом pi/24
•1=cos(x2) в диапазоне [ pi=2; pi=2] с шагом pi/24
1.4. Задания (лабораторная работа 1) |
8 |