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

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

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

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

18.01.2012, 18:58. Просмотров 960. Ответов 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;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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++
3585 / 1365 / 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++
3585 / 1365 / 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++
3585 / 1365 / 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++
3585 / 1365 / 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++
3585 / 1365 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
21.01.2012, 22:31     Загвостка с множеством (массивом) #15
Цитата Сообщение от jeka061288 Посмотреть сообщение
Как оно тут все запутано - капец
По сути в выражении где-то будет http://ru.wikipedia.org/wiki/NaN
Где-то что-то с нулем связано.
EMTEC
1 / 1 / 0
Регистрация: 29.10.2011
Сообщений: 110
21.01.2012, 22:33  [ТС]     Загвостка с множеством (массивом) #16
Я уже считал по частям
Это числитель 1.88711025192581i
Это знаменатель sqr3((tn^2)*0.1-1.07177346253629)
Я не понимаю что далее ,калькулятор не считает .
Тут явно видно что значение какие то не правильные
go
Эксперт C++
3585 / 1365 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
21.01.2012, 22:36     Загвостка с множеством (массивом) #17
Все. Я разобрался. Ошибка в числителе ln(x) (в данном случае ln(0.1)=-2.30259) и корень квадратный из него не извлекается
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
22.01.2012, 10:00     Загвостка с множеством (массивом) #18
Цитата Сообщение от jeka061288 Посмотреть сообщение
вывод в массив
в массив вывести нельзя. Можно вывести из массива на экран, на диск, или на принтер, или ввести с клавиатуры, диска, сканера, перцептрона, или мышью в массив. Но не вывести в массив.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.01.2012, 11:22     Загвостка с множеством (массивом)
Еще ссылки по теме:

C++ Массивом и динамическим массивом
C++ с массивом С
C++ Какую функцию STL использовать для работы с множеством ?
C++ Как оптимизировать код, со множеством операторов if?
Структура дерева с одним предком и множеством потомков C++

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

Или воспользуйтесь поиском по форуму:
EMTEC
1 / 1 / 0
Регистрация: 29.10.2011
Сообщений: 110
22.01.2012, 11:22  [ТС]     Загвостка с множеством (массивом) #19
мне всю плеш проел преп ,с этой функцией Y=f(xi) ,говорит у тебя нет в коде массива связанного с функцией ,точно он мне не хочет ничего говорить ,а сам я чето не понимая.
Yandex
Объявления
22.01.2012, 11:22     Загвостка с множеством (массивом)
Ответ Создать тему
Опции темы

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