Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # include <iostream>
- #include <fstream>
- #include <string>
- #include <vector>
- using namespace std;
- void smooth( vector<double>const& input, vector<double>& output, int n, int window)
- {
- int i, j, z, k1, k2, hw;
- double tmp;
- if (window%2 == 0) window++;
- hw = (window - 1) / 2;
- output[0] = input[0];
- for (i = 1; i < n; i++) {
- tmp = 0;
- if (i < hw) {//начало массива и нужно изменение окна
- k1 = 0;
- k2 = 2 * i;
- z = k2 + 1;
- }
- else if ((i + hw) > (n - 1)) {//конец массива и необходимость аналогично изменить размер
- k1 = i - n + i + 1;
- k2 = n - 1;
- z = k2 - k1 + 1;
- }
- else {
- k1 = i - hw;
- k2 = i + hw;
- z = window;
- }
- for (j = k1; j <= k2; j++) {
- tmp += input[j];
- }
- output[i] = tmp / z;
- }
- }
- int main() {
- string inputFile;
- int window;
- cout << "file and window: ";
- cin >> inputFile>>window;
- vector<double>numbers;
- double num;
- ifstream in(inputFile);
- if (in.is_open())
- {
- in.ignore(numeric_limits <streamsize>::max(),'\n');
- while (in >> num)
- numbers.push_back(num);
- }
- in.close();
- for (auto elem : numbers)
- cout << elem << '\n';
- cout << "after smooth\n";
- vector<double>resnumbers(numbers.size());
- smooth(numbers,resnumbers,numbers.size(),window);
- double temp=resnumbers[0];
- ofstream out("afterSmooth.txt");
- out << "Values after Smooth:" << '\n';
- for (auto elem : resnumbers) {
- out << elem<<endl;
- if(elem>=temp)
- cout << elem <<'>'<< '\n';
- else cout << elem << '<' << '\n';
- temp = elem;
- }
- out.close();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement