Другие языки программирования и технологии

Нужна помощь в решении задачи по языку программирования С++!!срочно!

Есть ошибки, но не знаю как исправить и почему они вообще появились, интернет не помог. Самому разобраться уже мозгов не хватает... Прошу помощи!

Даны два выражения z1 и z2. Написать функции для вычисления этих выражений с организацией обнаружения нештатной ситуации (например, ввод некорректных данных, деление на ноль) и еѐ обработки. В случае успеха значения z1 и z2 должны быть приблизительно одинаковыми. Вывести значения выражений в виде таблице от Хнач до Хкон с заданным шагом: z1 z2 x y Хнач, Хкон, шаг ввести с клавиатуры.

#include
#include
#include
using namespace std;
int main()
{
setlocale(LC_ALL, "");
double z1, z2;
double x1, x2, h, i;
int x;
cout << "Введите X начальное:";
cin >> x1;
cout << endl;
cout << "Введите X конечное:";
cin >> x2;
cout << endl;
cout << "Введите шаг:";
cin >> h;
cout << endl;
cout << "Значения Z1";
cout << setw(15) << " X z1" << endl;

for (double i = x1; i <= x2; i = i + h)

z1 = (x + 1) * sqrt(x ^ 2 - 9) + x * (x + 2) - 3 / (x - 1) * sqrt(x ^ 2 - 9) + x ^ 2 - 2 * x - 3;
try
{
int znamenatsel1 = ((x + 1) * sqrt(x ^ 2 - 9) + x * (x + 2) - 3);
int znamenatsel2 = ((x - 1 * sqrt(x ^ 2 - 9) + x ^ 2 - 2 * x - 3);

if (znamenatsel1 & znamenatsel2== 0);
throw "123";

z1 = (x + 1) * sqrt(x ^ 2 - 9) + x * (x + 2) - 3 / (x - 1) * sqrt(x ^ 2 - 9) + x ^ 2 - 2 * x - 3;
cout << setw(10) << i << setw(15);

}
catch (int i)
{
cout << "Error!" << i << "Знаменатель равен 0!" << endl;
try
{
if (x1 < 0 || x2 < 0)
throw"222";

cout << "Значение z1 " << x << endl;
}
catch
cout << "Error!" << i << "Отрицательное подкоренное уравнение!" << endl;
{
for (double i = x1; i <= x2; i = i + h)
{
z2 = sqrt(x + 3 / x - 3);
cout << setw(10) << z2 << setw(15) << i << endl;
}
try
{
double znamenatsel3 = x + 3;
double znamenatsel4 = X - 3;

if (znamenatsel 3 == 0 || znamenatsel4 == 0);
throw "333";

cout << "значение z2" << z2 << endl;
}
catch
cout << "Error!" << z2 << "Деление на 0!" << endl;

system("pause");
return 0;
}
}
}

Ошибка (активно) E2140выражение должно относиться к целочисленному типу или типу перечисления без области видимости

Ошибка (активно) E2140выражение должно относиться к целочисленному типу или типу перечисления без области видимости

Ошибка (активно) E2140выражение должно относиться к целочисленному типу или типу перечисления без области видимости

Ошибка (активно) E0125требуется круглая скобка "("

Ошибка (активно) E0018требуется круглая скобка ")"

Ошибка (активно) E0130требуется фигурная скобка "{"
AM
Anatoly Makashov
119
а разве в с++ "^" это возведение в степень?
а если дальше читать то еще больше ошибок
напишите чему равны выражения z1 и z2 по условию задачи.
РА
Руслан Ахтямов
25 445
Лучший ответ
Ошибок куча. Вообще надо всегда приводить условие задачи. Что за выражения?
Сергей Канев
Сергей Канев
79 597
Трудно разобраться сразу.
Возможно несовпадение типов переменных double и int.
надо приводить к чему-то одному
Nurik Asanov
Nurik Asanov
93 923
sqrt(x ^ 2 - 9) чо это за ересь? вы xor делаете или вторую степень? если второе то просто pow(x, 2)
далее вы не пробовали кешировать? у вас куча x ^ 2 и sqrt(x^2 - 9), может заведете переменные x_sqr = pow(x, 2); и x_sqrt = sqrt(x_sqr - 9); ?

catch обязан иметь тип исключения которое ловит ну или хотя бы (...), не может catch выглядеть так
catch cout << endl;
обязан так
catch(...)
{
cout << endl;
}

catch(...) { cout << endl; } // на худой конец

далее

double znamenatsel4 = X - 3; // у вас нет переменной "Х" только "х"

if (znamenatsel 3 == 0 || znamenatsel4 == 0); // имя не может содержать пробелы

я сомневаюсь что после for нет фигурной скобки, иначе вы z1 прокрутите и только после войдете в блок try catch

z1 вообще не используется
cout << "Значение z1 " << x << endl; //может тут всеже должен z1 быть а не x?

далее x - чему он равен???? он вообще у вас не задается ни разу! может он равен i? тогда смените имя переменной в счетчике с i на x

если тут замешан дискрименант - у вас большие проблемы...
SM
Sanga Mahela
5 038