Консультация № 176182
21.01.2010, 13:37
41.76 руб.
0 6 2
По С++ ... Помогите решить задачу заранее спасибо
Разработать алгоритм, интерфейс пользователя и программу вычисления величины z по формуле:
z = x3/y, где y = sin(n*x+0,5).

Обсуждение

Неизвестный
21.01.2010, 13:48
общий
Питулин Александр Михайлович:
Добрый день!
1. Интерфейс пользователя какой? Оконный или консольный?
2. Какая среда?
3.
z = x3/y, где y = sin(n*x+0,5).
Может быть, имеется в виду z=x^3/y?
4. Откуда берутся x и n?
5. Надо оформлять как функцию?
Неизвестный
21.01.2010, 13:57
общий
это ответ
Здравствуйте, Питулин Александр Михайлович.
Предлагаю консольное приложение с выводом меню.
Проверено в VS2008.

Приложение:
#include <iostream>
#include <cmath>
#include <conio.h>

using namespace std;

void Solve()
{
double y,z,x;
int n;
cout<<"\nN = "; cin>>n;
cout<<"\nX = "; cin>>x;
y=sin(n*x+0.5);
z=pow(x,3)/y;
cout<<"\n\nOtvet : Z = "<<z<<"\n\n";
}

void Menu()
{
while(true)
{
cout<<"**** MENU ***\n";
cout<<"1 - schitat'\n";
cout<<"2 - vihod\n";
cout<<"*****************\n\n";
int c;
cout<<">> "; cin>>c;
switch(c)
{
case 1: Solve();
break;
case 2: cout<<"\nVihodim...";
_getch();
exit(0);
default: cout<<"\n\nOshibka!\nPovtorite vvod!\n\n";
break;
}
}
}


int main()
{
Menu();
}
Неизвестный
21.01.2010, 15:24
общий
это ответ
Здравствуйте, Питулин Александр Михайлович.
Программа. C++. Компилировал GCC.
Код:
#include <iostream>
#include <limits>
#include <locale>
#include <valarray>

using namespace std;

// Будем использовать для ввода значений
template<class T>
T input(const char* const msg)
{
T result=T();
while(true)
{
cout<<msg;
cin>>result;
if(cin.fail())
{
cerr<<"Ошибочный ввод"<<endl;
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(),'\n');
}
else
{
cin.ignore(numeric_limits<streamsize>::max(),'\n');
break;
}
}
return result;
}

// Вычисляет y
double y(double x,int n)
{
return sin(n*x+0.5);
}

// Вычисляет z
double z(double x,int n)
{
return pow(x,3.0)/y(x,n);
}

int main()
{
locale::global(locale(""));
// Ввод данных
double x=input<double>("Введите x:");
int n=input<int>("Введите n:");
// Результат
double z=::z(x,n);
cout<<"z="<<z<<endl;
return 0;
}

Пример работы программы:
Код:
Введите x:3.002
Введите n:-1
z=-45.3266

Поскольку не ясно, что такое x3 считал, что это x^3(x в кубе). Что не сложно изменить, если подразумевается другое.
Неизвестный
21.01.2010, 15:40
общий
Стандартные, увы, вопросы: в чём? Какое приложение (консольное, ...)?
Неизвестный
21.01.2010, 17:36
общий
К сожалению, в ответах не видно обработки ситуации sin(n*x+0.5)==0, то есть n*x=-0.5+pi*k, где k=0.+/-1,+/-2,+/-3...
Неизвестный
21.01.2010, 20:01
общий
lamed:
И то верно. Но что касается чисел с плавающей точкой(в отличие от целочисленного деления), то такая ситуация выявляется без проблем. Дело в том, что сопроцессор в таких случаях возвращает специально зарезервированное для этого значение inf.
Например:
Код:
Введите x:0.5
Введите n:-1
z=inf
Форма ответа