Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите, не работает код на с++

Иван Капырин Ученик (114), на голосовании 1 неделю назад
Кто шарит подсобите, выдает ошибку где setw(8) но непонятно почему, буду благодарен:
#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);
}
Голосование за лучший ответ
Throat Sucker Мастер (1122) 1 месяц назад
Сгенерировано ИИ:
Ошибка, связанная с 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).
Sergio 2.1 Оракул (67261) 1 месяц назад
 #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;
}
Похожие вопросы