• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

Помогите с решением задач в Visual Studio C++!

  • Автор темы kerragin
  • Дата начала
K

kerragin

Помогите решить данные задачи!

1.Составить программу для вычисления функции F(x) на отрезке [a,b], с шагом h. Результат представить в виде таблицы, первый столбец которой - значение аргумента, второй - соответствующее значение функции

F(x)=tg x/2+2cosx



2.Найти наименьший номер члена последовательности, для которого выполняется условие |an-an-1|< ε. Вывести на экран этот номер и все элементы ai , где i=1,2,3…,n.

an=1/2 tg an-1,a=0,5

3.Дано натуральное число п. Вычислить

P=(1-1/2)(1-1/4)(1-1/6)...(1-1/2n)
 
K

kerragin

Насчет 3го задания я написал код,но не уверен правильный он или нет:

#include <iostream>
#include <iomanip>

using namespace std;
int main()
{
int n;
double p = 1.0;
cout << "Введите чилсо n: ";
cin >> n;

for (int i = 1; i <= n; i++ )
{ p *= (1 - (1.0 / (2.0 * i)));
}
cout << fixed << setprecision(2);
cout << "P = "<<p<< endl;
getchar();
return 0;
}

Второе задание я не знаю как делать вообще.

В первом задание не знаю как делать через тангенс,вот код который попытался написать:

#include <iostream>
#include <cmath>
using namespace std;

double function(double x);
int main()
{
double x;
cout << "X = ";
cin >> x;


cout << "Function = " << function(x) << endl;

cin.get();
return 0;}
 
I

ierofant

Задача 1.
C++:
#include <iostream>
#include <cmath>

int main ()
{
double a, b, h;
std::cout << "Введите a: " , std::cin >> a;
std::cout << "Введите b: " , std::cin >> b;
std::cout << "Введите шаг h: ", std::cin >> h;

for (double x = a; x <= b; x += h) std::cout << x << "\t" << std::tan (x / 2) + 2 * std::cos (x) << std::endl;

return 0;
}
В зависимости от того в радианах или градусах задаётся угол, формула может немного изменится.
 
K

kerragin

error C2059: синтаксическая ошибка: =
error C2143: синтаксическая ошибка: отсутствие ";" перед ")"
error C2143: синтаксическая ошибка: отсутствие ";" перед ")"
 
K

kerragin

ок,а что тогда эти?

error C2143: синтаксическая ошибка: отсутствие ";" перед ")"
error C2143: синтаксическая ошибка: отсутствие ";" перед ")"
 
I

ierofant

Да
<=
, иначе компилятор не поймёт, что за оператор. Сам не знаю, откуда пробел закрался, наверху сейчас исправлю.

Добавлено:
ок,а что тогда эти?

error C2143: синтаксическая ошибка: отсутствие ";" перед ")"
error C2143: синтаксическая ошибка: отсутствие ";" перед ")"

Это вероятно следствия той ошибки. Ты уже попробовал по новой запустить?
 
K

kerragin

делал по новой,кстати,самое главное чтобы результат был в виде таблицы,он будет выдавать так?
 
K

kerragin

хорошо,сейчас проверю

Добавлено: спасибо,получилось.

ierofant,сможешь еще подсказать решение этой задачи?

Найти наименьший номер члена последовательности, для которого выполняется условие |an-an-1|< ε. Вывести на экран этот номер и все элементы ai , где i=1,2,3…,n.

an=1/2*tg an-1,a=0,5

я(и не только) ее даже не представляю/т как делать
 
K

kerragin

вроде да,задаем сами)

еще,извиняюсь,можешь проверитьэт код?правилен ли он для данной задачи,а то у меня возникают сомнения...

Дано натуральное число п. Вычислить

P=(1-1/2)(1-1/4)(1-1/6)...(1-1/2n)
Код:

#include <iostream>
#include <iomanip>

using namespace std;
int main()
{
int n;
double p = 1.0;
cout << "Введите чилсо n: ";
cin >> n;

for (int i = 1; i <= n; i++ )
{ p *= (1 - (1.0 / (2.0 * i)));
}
cout << fixed << setprecision(2);
cout << "P = "<<p<< endl;
getchar();
return 0;
}
 
K

kerragin

void search(double eps) {
int i = 0;
double last = 0.5, next = 0.5;

while (fabs(next - last) < eps) {
cout << "a: " << last << " i: " << i << endl;

last = next;
next = 1 / (2 * tan(last));
}
}

похоже нашел приимерное решение
 
I

ierofant

Насчёт, того кода. Само решение-то вроде правильное.

А твоя задача:
C++:
#include <iostream>
#include <cmath>

int main ()
{
double epsilon;
std::cout << "Введите epsilon: " , std::cin >> epsilon;

int i;
double a0 = 0.5, a1 = std::tan (a1) / 2;
for (i = 1; std::abs (a1 - a0) > epsilon; i++)
{
std::cout << "a" << i << " = " << a1 << std::endl;
a0 = a1;
a1 = std::tan (a1) / 2;
}

std::cout << "Номер наименьшего члена последовательности, при котором выполняется условие: " << i << std::end;

return 0;
}

Кое-что подправил в первоначальном варианте, не пропусти изменения!
 
K

kerragin

Ок,попробовал еще сам свой сделать)

#include <iostream>
#include <cmath>
using namespace std;
void search(double eps);

int main()

{
int i = 0;
double last = 0.5, next = 0.5;

while (fabs(next - last) < eps)
{
cout << "a: " << last << " i: " << i << endl;

last = next;
next = 1 / (2 * tan(last));
}

return 0;
}
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!