Ошибка, связанная с setw(8), обычно возникает из-за отсутствия подключения заголовочного файла <iomanip>, который содержит определение функции setw. Чтобы исправить ошибку, добавьте следующую строку в начало вашего кода:
#include <iomanip>
Также обратите внимание на условие else if (-4 < X < 4). В C++ такое выражение не работает так, как возможно ожидается. Вместо этого используйте логический оператор && для правильной проверки диапазона:
else if (X > -4 && X < 4) F = X;
Вот исправленный вариант вашего кода:
#include <conio.h>
#include <iostream>
#include <iomanip> // Добавлено для setw
using namespace std;
int main()
{
double A, B, X, F, G, P, h;
int k;
cin >> A >> B >> k;
h = (B - A) / (k - 1);
X = A;
cout << "---------------------------------" << endl;
cout << "| X | F | G | P |" << endl;
cout << "---------------------------------" << endl;
for (int i = 0; i < k; i++)
{
if (X < -4) F = -X - 7;
else if (X > 4) F = X * X + 1;
else if (X > -4 && X < 4) F = X;
else if (X == 4) F = X;
else if (X == -4) F = X;
if (X < 2) G = std::log(2 + X);
else G = sqrt((X * X) + 2);
P = (F * F) + (G * G);
cout.precision(5);
cout << '|' << setw(8) << X;
cout << '|' << setw(8) << F;
cout << '|' << setw(8) << G;
cout << '|' << setw(8) << P << '|' << endl;
X = X + h;
}
cout << "------------------------------------" << endl;
cin >> X;
return 0;
}
После этих изменений ваш код должен компилироваться без ошибок, связанных с setw(8).
#include <conio.h>
#include <iostream>
#include <iomanip> // Добавляем этот заголовок
#include <cmath> // Для функций логарифма и квадратного корня
using namespace std;
int main()
{
double A, B, X, F, G, P, h;
int k;
cin >> A >> B >> k;
h = (B - A) / (k - 1);
X = A;
cout << "---------------------------------" << endl;
cout << "| X | F | G | P |" << endl;
cout << "---------------------------------" << endl;
// Устанавливаем формат вывода один раз перед циклом
cout << fixed << setprecision(5);
for (int i = 0; i < k; i++)
{
if (X < -4) {
F = -X - 7;
}
else if (X > 4) {
F = X * X + 1;
}
else if (X > -4 && X < 4) { // Исправлено условие
F = X;
}
else if (X == 4) {
F = X;
}
else if (X == -4) {
F = X;
}
if (X < 2) {
G = log(2 + X);
}
else {
G = sqrt((X * X) + 2);
}
P = (F * F) + (G * G);
cout << '|' << setw(8) << X
<< '|' << setw(8) << F
<< '|' << setw(8) << G
<< '|' << setw(8) << P << '|' << endl;
X = X + h;
}
cout << "------------------------------------" << endl;
cin >> X;
return 0;
}
#include <conio.h>
#include <iostream>
using namespace std;
int main()
{
double A, B, X, F, G, P, h;
int k;
cin >> A >> B >> k;
h = (B - A) / (k - 1);
X = A;
cout << "---------------------------------" << endl;
cout << "| X | F | G | P |" << endl;
cout << "---------------------------------" << endl;
for (int i = 0; i < k; i++)
{
if (X < -4) F = -X - 7;
else if (X > 4) F = X * X + 1;
else if (-4 < X < 4) F = X;
else if (X == 4) F = X;
else if (X == -4) F = X;
if (X < 2) G = std::log(2 + X);
else G = sqrt((X * X) + 2);
P = (F * F) + (G * G);
cout.precision(5);
cout << '|' << setw(8) << X;
cout << '|' << setw(8) << F;
cout << '|' << setw(8) << G;
cout << '|' << setw(8) << P << '|' << endl;
X = X + h;
}
cout << "------------------------------------" << endl;
cin >> X;
return(0);
}