последовательно печатают таблички с помощью cout, в режиме релиза, строки печатаются вперемешку, как будто они работают асинхронно?
Делай в конце строчки flush
Более сказать ничего нельзя, надо код
запусти у себя на горячую #include <iostream> #include <iomanip> #include <cmath> #include <vector> #include <Windows.h> #include <algorithm> #include <cstdlib> using namespace std; struct Point { double x, y; }; const int C = 8; const double H = 0.007; double targetFunc(double x) { return pow(C, 3) * cos((x + 10 * C) / C); } double linearInterpolation(const double x, const Point& startP, const Point& endP) { double deltaY = endP.y - startP.y; double q = (x - startP.x) / H; return startP.y + q * deltaY; } void printTargetFuncTable(const vector<Point>& arr) { ios init(0); init.copyfmt(cout); const int HCell = 15; const int HRow = 34; const int HTitle = 25; //---------------HEADER------------------------- cout << setw(HTitle) << setfill(' ') << "Значение функции" << endl; cout << setw(HRow) << setfill('-') << ' ' << endl; cout << '|' << setw(HCell) << setfill(' ') << 'x' << '|'; cout << setw(HCell) << setfill(' ') << 'y' << '|' << '\n'; cout << setw(HRow) << setfill('-') << ' ' << '\n'; cout << flush; //----------------BODY-------------------------------- for (auto target = arr.begin(); target != arr.end(); target += 1) { cout << fixed << setprecision(4); cout << '|' << setw(HCell) << setfill(' ') << target->x << '|'; cout << setw(HCell) << setfill(' ') << target->y << '|' << '\n'; cout << setw(HRow) << setfill('-') << ' ' << endl; cout << flush; } cout.copyfmt(init); } void printLinearInterpolationTable(const vector<Point>& arr) { ios init(0); init.copyfmt(cout); const int HCell = 25; const int HRow = 80; const int HTitle = 60; //---------------HEADER------------------------- cout << setw(HTitle) << setfill(' ') << "Таблица линейной интерполялции" << endl; cout << setw(HRow) << setfill('-') << ' ' << endl; cout << '|' << setw(HCell) << setfill(' ') << 'x' << '|'; cout << setw(HCell) << setfill(' ') << "y приближ." << '|'; cout << setw(HCell) << setfill(' ') << "y точн." << '|' << endl; cout << setw(HRow) << setfill('-') << ' ' << endl; //----------------BODY-------------------------------- for (auto target = arr.begin(); target != arr.end(); target += 1) { cout << fixed << setprecision(4); cout << '|' << setw(HCell) << setfill(' ') << target->x << '|'; cout << setprecision(14); cout << setw(HCell) << setfill(' ') << target->y << '|'; cout << setw(HCell) << setfill(' ') << targetFunc(target->x) << '|' << endl; cout << setw(HRow) << setfill('-') << ' ' << endl; cout << flush; } cout.copyfmt(init); } int main() { SetConsoleOutputCP(1251); // создание таблицы с результатом расчетов функции vector<Point> TfRes; for (int i = 0; i <= 15; i++) { double x = C + i * H; TfRes.push_back({ x, targetFunc(x) }); } // печать таблицы printTargetFuncTable(TfRes); // нахождение значений линейной интерполяции в точке vector<Point> interpolArr; for (int i = 1; i <= 14; i++) { double x = C + 0.6 * i * H; // поиск близжайшей точки меньше x auto PointPtr = find_if( TfRes.begin(), TfRes.end(), [&x](Point p) -> bool {return x > p.x; } ); interpolArr.push_back({ x, linearInterpolation(x, *PointPtr, *(PointPtr + 1)) }); } // печать таблицы линейной интерполяции printLinearInterpolationTable(interpolArr); system("pause"); return 0; }
Обсуждают сегодня