Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
EMTEC
1 / 1 / 0
Регистрация: 29.10.2011
Сообщений: 110
#1

Загвостка с множеством (массивом) - C++

18.01.2012, 18:58. Просмотров 979. Ответов 18
Метки нет (Все метки)

Прошу прощения ,у меня такая проблема - нужно осуществить вывод в массив .Как я понял Y=f(xi) это множество и его нужно реализовать ,а как я незнаю .
Сама задача - Составить и выполнить программы циклической структуры расчета Y=f(xi), где xi еX
Множество значений аргумента X 0,1; 0,2; 0,8

Не по теме:

Название: 18.02.png
Просмотров: 104

Размер: 2.3 Кб


Это мой код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#define _USE_MATH_DEFINES
#include<iostream>
#include<stdio.h>
#include<cmath>
int main()
{
double x;
double y[100];
double x1,x2,h;
double y1,y2;
int j = 0;
//Вводим значение,обозначающие промежуток(от x1 до x2)
printf("Enter x1 = ");
scanf("%lf",&x1);
printf("\nEnter x2 = ");
scanf("%lf",&x2);
//Вводим шаг
printf("\nEnter h = ");
scanf("%lf",&h);
//Проходим по промежутку (x1,x2) с шагом h
for(x = x1; x <= x2; x += h)
{
 //Вначале проверяем подойдет ли нам значение,по условию подходят только x > 0(1-ое условие)
 if(x > 0)
 {
 
 y1 = (log10(x) - pow(M_E, 2.3 * x));
 //Если x > 0,проверяем,чтобы под корнем было выражение больше нуля.Числитель
 if(y1 > 0)
 {
 //Проверяем существование тангенса, для этого cos(x) != 0
 if(cos(x) != 0)
 //Проверяем знаменатель,нужно,чтобы не был нулем
 y2 = (pow(tan(x * M_PI / 180), 2) - pow(2,x));
 if(y2 != 0)
 {
 y[j] = (double) sqrt(y1) / pow(y2,(double)1/3);
 j++;
 }
 }
 }
 else continue;
}
if(j == 0) printf("There is no elements on %lf for %lf with step %lf",x1,x2,h);
for(int i = 0; i < j; i++)
printf(" %lf ", y[i]);
system("pause");
return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.01.2012, 18:58
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Загвостка с множеством (массивом) (C++):

Загвостка с функцией Y=f(xi) - C++
Помогите ,пожалуйста ,закончить код. Начальная задача-Составить и выполнить программы циклической структуры расчета Y=f(xi), где xi еX ...

Как оптимизировать код, со множеством операторов if? - C++
Можно ли сделать так, чтобы проверка обрабатывалась только тогда, когда нужно чтобы она проверила условие. while ( 1 ) { //...

Структура дерева с одним предком и множеством потомков - C++
Здравствуйте! Можете подсказать из каких полей состоит такая структура, у которой должен быть один предшественники множество потомков.

Точки пересечения прямой и функции с множеством точек - C++
Как найти количество пересечений прямой y с множеством точек (x,y)?

Какую функцию STL использовать для работы с множеством ? - C++
Есть 2 множества : а и b for( int i = 0; i &lt; 5; i++) { a.insert(i); } ...

Извлечение из класса поля которое является множеством (set) - C++
Здравствуйте! У меня есть класс одно из полей которого множество (set&lt;Something&gt; SomethingSet). Я хочу передать это множество в функцию...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Deviaphan
Делаю внезапно и красиво
Эксперт C++
1286 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
18.01.2012, 19:47 #2
Y=f(xi) это функция. Передаёшь в неё Х и возвращает она У, в соответствии с формулой. А результат уже в массив или куда хочешь помещай.
EMTEC
1 / 1 / 0
Регистрация: 29.10.2011
Сообщений: 110
18.01.2012, 20:08  [ТС] #3
Спасибо большое .

Добавлено через 19 минут
Все равно не понимаю как будет выглядить код .Что тогда в начальном коде лишнее и что надо дописать?
Deviaphan
Делаю внезапно и красиво
Эксперт C++
1286 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
18.01.2012, 20:15 #4
Вычисление функции Y=f(xi) вынеси из main в функцию.
EMTEC
1 / 1 / 0
Регистрация: 29.10.2011
Сообщений: 110
18.01.2012, 20:30  [ТС] #5
Извините Ув. Deviaphan ,можете написать эту часть ,ну не получается у меня ни как.Чувствую себя каким то .... .
Deviaphan
Делаю внезапно и красиво
Эксперт C++
1286 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
19.01.2012, 06:04 #6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
double Function( double x )
{
     double y = 0.0;
     ...// Вычисление У для указанного Х, по заданной формуле
     return y;
}
 
int main
{
   ...
   for(x = x1; x <= x2; x += h)
       y[j] = Function(x);
   ...
}
А ещё нужна проверка, что количество шагов не превышает размер массива у.
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
20.01.2012, 15:10 #7
Формулу немного не понял. Возьмите аргументы функций в скобки.
Вот, что у меня получилось. (скорее всего у Вас что-то с формулой)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
#include <cmath>
#include <vector>
#include <algorithm>
#include <iterator>
 
#define E 2.718281828459
 
double fun(double x)
{
   return sqrt(  (log(x) - pow(E, 2.3 * x))  / pow( ( tan(x) * tan(x) - pow(2., x) ), 1 / 3.)  );
}
 
int main()
{
   std::vector<double> arr = { 0.1, 0.2, 0.8 };
   std::vector<double> res(arr.size());
   
   std::for_each(arr.begin(), arr.end(), [&](double val) { res.push_back(fun(val)); } );
   std::copy(arr.begin(), arr.end(), std::ostream_iterator<double>(std::cout, " ")); 
   std::cout << std::endl;
   std::copy(res.begin(), res.end(), std::ostream_iterator<double>(std::cout, " "));
   std::cout << std::endl;
   return 0;
}
http://liveworkspace.org/code/90ea0d...089f6dc6bb597d
EMTEC
1 / 1 / 0
Регистрация: 29.10.2011
Сообщений: 110
21.01.2012, 19:20  [ТС] #8
ну никак не получается у меня переделать код ,помогите ,пожалуйста ,исправить мой код.
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
21.01.2012, 21:30 #9
Цитата Сообщение от jeka061288 Посмотреть сообщение
ну никак не получается у меня переделать код ,помогите ,пожалуйста ,исправить мой код.
я же просил привести пример входных-выходных данных. Возмите калькулятор - и посчитайте. Или я где-то в 11-ой строчке криво написал, или формула не верная...

Добавлено через 52 секунды
Цитата Сообщение от go Посмотреть сообщение
Формулу немного не понял. Возьмите аргументы функций в скобки.
И это тоже сделайте. Очень принципиально.
EMTEC
1 / 1 / 0
Регистрация: 29.10.2011
Сообщений: 110
21.01.2012, 21:34  [ТС] #10
Цитата Сообщение от go Посмотреть сообщение
пример входных-выходных данных.
Извините пожалуйста ,я не понял ,входные данные любые .Т.е. ввести мои "любые"данные и посчитать?
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
21.01.2012, 21:37 #11
Цитата Сообщение от jeka061288 Посмотреть сообщение
Множество значений аргумента X 0,1; 0,2; 0,8
Ну вот входные данные. Посчитайте, что должно получится, если Х, например, равен 0.1
EMTEC
1 / 1 / 0
Регистрация: 29.10.2011
Сообщений: 110
21.01.2012, 22:11  [ТС] #12
Извините ,чето не получается посчитать -запутался .Числитель = 0
а знаменатель калькулятор пишет sqr3((tn^2)*0.1-1.07177346253629)
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
21.01.2012, 22:18 #13
Цитата Сообщение от jeka061288 Посмотреть сообщение
Извините ,чето не получается посчитать -запутался .Числитель = 0
Ну вот видите, разберитесь с формулой, а потом уже
EMTEC
1 / 1 / 0
Регистрация: 29.10.2011
Сообщений: 110
21.01.2012, 22:20  [ТС] #14
Это числитель 1.88711025192581i
Как оно тут все запутано - капец
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
21.01.2012, 22:31 #15
Цитата Сообщение от jeka061288 Посмотреть сообщение
Как оно тут все запутано - капец
По сути в выражении где-то будет http://ru.wikipedia.org/wiki/NaN
Где-то что-то с нулем связано.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.01.2012, 22:31
Привет! Вот еще темы с ответами:

Массивом и динамическим массивом - C++
Составить программу, в которой 1) организовать ввод матрицы размера mxn из целых чисел; 2) вычислить сумму ненулевых элементов, кратных...

Массивом - C++
помогите плиз.. чет проблемы с массивом у меня) Задать два массива вещественных чисел с помощью датчика случайных чисел. Для каждого...

С массивом - C++
Требуется в массиве, между минимальным и максимальным элементами (и их кстати) записать в обратном порядке элементы. У меня какой-то бред в...

с массивом С - C++


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
21.01.2012, 22:31
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru