Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
103 changes: 103 additions & 0 deletions sem2/EmelianovaED/homework_4/main.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
#include <algorithm>
#include <fstream>
#include <random>
#include <string>
#include <vector>

// ��������� ������� � 20 �������
std::vector<int> generateVector(std::mt19937& generator) {
std::vector<int> vector_num(20);
std::generate(vector_num.begin(), vector_num.end(), [&generator]() {
return std::uniform_int_distribution<int>(-50, 100)(generator);
});
return vector_num;
}
// ������ ������ � ����
void writeLine(const std::string& filename, const std::string& text) {
std::ofstream file_out(filename, std::ios::app);
file_out << text << std::endl;
}
// ������ ������� � ����
void writeVector(const std::string& filename, const std::vector<int>& vec) {
std::ofstream file_out(filename, std::ios::app);
file_out << " ";
std::for_each(vec.begin(), vec.end(),
[&file_out](int n) { file_out << n << " "; });
file_out << std::endl;
}
// ����������� � ������������ ��������
void findMinMax(const std::vector<int>& vec, const std::string& filename) {
auto min_max = std::minmax_element(vec.begin(), vec.end());
writeLine(filename, "�����������: " + std::to_string(*min_max.first));
writeLine(filename, "������������: " + std::to_string(*min_max.second));
}
// ������������� ������ �� �����������
std::vector<int> sortVector(const std::vector<int>& vec,
const std::string& filename) {
std::vector<int> sorted_vec = vec;
std::sort(sorted_vec.begin(), sorted_vec.end());
writeLine(filename, "��������������� ������ �� �����������");
writeVector(filename, sorted_vec);
return sorted_vec;
}
// ������� �����., �����. � ������� ���������
void countEl(const std::vector<int>& vec, const std::string& filename) {
int pos_el =
std::count_if(vec.begin(), vec.end(), [](int n) { return n > 0; });
int neg_el =
std::count_if(vec.begin(), vec.end(), [](int n) { return n < 0; });
int zer_el =
std::count_if(vec.begin(), vec.end(), [](int n) { return n == 0; });
writeLine(filename, "�������������, ������������� � ������� ��������:");
writeLine(filename, "�������������: " + std::to_string(pos_el));
writeLine(filename, "�������������: " + std::to_string(neg_el));
writeLine(filename, "�������: " + std::to_string(zer_el));
}
// ������� ��������������
double findAverage(const std::vector<int>& vec, const std::string& filename) {
double sum_el = 0.0;
std::for_each(vec.begin(), vec.end(), [&sum_el](int n) { sum_el += n; });
double avarage_el = sum_el / vec.size();
writeLine(filename, "������� ��������������");
writeLine(filename, std::to_string(avarage_el));
return avarage_el;
}
// �������� ������ �����
std::vector<int> removeEven(const std::vector<int>& vec,
const std::string& filename) {
std::vector<int> result_vec = vec;
result_vec.erase(std::remove_if(result_vec.begin(), result_vec.end(),
[](int n) { return n % 2 == 0; }),
result_vec.end());
writeLine(filename, "������ ����� �������� ������ �����");
writeVector(filename, result_vec);
return result_vec;
}
// ���������� ������ �������
void sortNewVec(const std::vector<int>& vec, const std::string& filename) {
std::vector<int> result_vec = vec;
std::sort(result_vec.begin(), result_vec.end());
auto uniq_vec = std::unique(result_vec.begin(), result_vec.end());
result_vec.erase(uniq_vec, result_vec.end());
writeLine(filename, "��������������� ������ � ����������� ����������");
writeVector(filename, result_vec);
}
void runProgram() {
const std::string file_name = "output.txt";
std::mt19937 generator(12);
std::ofstream file_out(file_name);
file_out.close();
std::vector<int> vec_new = generateVector(generator);
writeLine(file_name, "�������� ������");
writeVector(file_name, vec_new);
findMinMax(vec_new, file_name);
std::vector<int> sorted_vec = sortVector(vec_new, file_name);
countEl(sorted_vec, file_name);
double avg_vec = findAverage(sorted_vec, file_name);
std::vector<int> without_even = removeEven(sorted_vec, file_name);
sortNewVec(without_even, file_name);
}
int main() {
runProgram();
return 0;
}
16 changes: 16 additions & 0 deletions sem2/EmelianovaED/homework_4/output.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
�������� ������
-27 17 61 81 -11 -37 30 59 -48 2 88 -45 86 -6 -45 -38 94 59 -30 6
�����������: -48
������������: 94
��������������� ������ �� �����������
-48 -45 -45 -38 -37 -30 -27 -11 -6 2 6 17 30 59 59 61 81 86 88 94
�������������, ������������� � ������� ��������:
�������������: 11
�������������: 9
�������: 0
������� ��������������
14.800000
������ ����� �������� ������ �����
-45 -45 -37 -27 -11 17 59 59 61 81
��������������� ������ � ����������� ����������
-45 -37 -27 -11 17 59 61 81