Суть ошибки: когда прогоняю программу выводится таблица, однако значения в столбце F имеет очень странный вид (setprecision не помогает, или я дурной). Также буду крайне благодарен за исправления других недочетов, думаю их тут не мало. :(
Собственно сама программа.
________________________
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <cmath>
#include <iomanip>
using namespace std;
int main()
{
double a, b, c, Xn, Xk, dX,F;
cout << "Vvedite a,b,c,Xn,Xk,dX" << endl;
cin >> a;
cin >> b;
cin >> c;
cin >> Xn;
cin >> Xk;
cin >> dX;
cout << "_____________________\n";
cout << "|" << setw(5) << "X" << setw(5) << "|" << setw(5) << "F" << setw(5) << "|" << endl;
cout << "_____________________\n";
for (double X = Xn; X <= Xk; X += dX)
{
if ((X < 3) && (b != 0))
F = (a*pow(X, 2.0)) - b*X + c;
else X / c;
if ((X > 3) && (b = 0))
F = X - a / X - c;
else X / c;
if ((~(static_cast<int>(a)) | static_cast<int>(b)) && ((static_cast<int>(a)) ^ (static_cast<int>(c))) != 0)
cout << "| " << X << " |" << F << setprecision(2) << endl;
else cout << "|" << setw(10) << "|" << setw(10) << static_cast<int>(F) << setw(10) << "|" << endl;
}
cout << "_____________________\n";
system("pause");
return 0;
}
И задание (10 вариант)
Табличка.

Добавлю свои 2 ¢
1. Вам сказано использовать Aц, Bц, Сц - декларируйте ЦЕЛЫЕ переменные, инициализируйте ОКРУГЛЕНИЕМ и используйте для формулы.
2. Вам чётко написано, что ВСЕ операции с Aц, Bц и Сц - битовые. Так почему у вас в условии &&, а не & и сравнение с 0?
3. Вам также сказано, что ЗНАЧЕНИЕ F должно быть целым. Так почему вместо округления значения вы используете другой способ вывода ?
ЗЫ
По поводу 3: целые числа ЯВЛЯЮТСЯ вещественными, поэтому их можно (а в данном задании нужно) выводить в том же формате. Иногда вещественное не преобразуется к целому из за того, что вещественное слишком большое.
ЗЗЫ
Условие можно проверять не внутри цикла, а до него так как оно никак не зависит от X.
Использовать pow(x, 2.0) вместо x*x - очень творческое решение
Про мусор сказал Зло.
Остальное:
- условие нечитаемое;
- когда записываешь "вертикальную" дробь в строчку, ставь скобки
(сравни 2+2/ 2+2 и (2+2)/(2+2) )
- static_cast желательно использовать для классов для явного отличия от dynamic_cast, для простых типов достаточно C-шной формы int(a);
- манипуляторы (setprecision в частности) надо выводить ДО того, чем они манипулируют, а не после.
if ((X > 3) && (b = 0))F = X - a / X - c;else X / c;
если условие выполнено - получаем F. а если не выполнено - ничего по сути не делаем.
вот он тебе мусор и выдает в F
И я добавлю пару копеек.
Уберите этот систем поз, ну замумукали уже, этому в школе учат, что ли?
std::cin.get();При желании можно перед этим можно напечатать "Press any key to continue...".
нихуя себе ботаник чё вытворяет, профессию меняешь Василий Иванович ?