Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
0 / 0 / 0
Регистрация: 31.10.2013
Сообщений: 89

Вывести таблицу значений кусочной функции с заданным шагом аргумента

11.11.2014, 10:49. Показов 2985. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задание:
https://www.cyberforum.ru/cgi-bin/latex.cgi?y=\begin{cases}<br />
x^2+4x^x+2 & \text{ , } x\geq 0  \\ <br />
\prod_{i=1}^{4}(x+x^{i-1}) & \text{ , } x \lt 0<br />
\end{cases}<br />
<br />
x \in [-5,4]\;;\;h=0,25

Код:
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
50
51
52
53
54
55
#include "stdafx.h"
#include <math.h>
#include <iostream>
 
using namespace std;
 
const int n = 40;
 
int main()
{
    float x, y1[n], y2[n], y[n];
    int i, i2, i3, k, j;
    for (x = -5.0; x < 4.0; x += 0.25)
    {
        if (x >= 0)
        {
            for (i = 0; i < n; i++)
                y1[i] = x*x + 4 * pow(x, x) + 2;
        }
        else
        {
            for (i = 0; i < n; i++)
            {
                for (j = 1; j < 4; j++)
                    y2[i] = x + pow(x, j - 1);
            }
        }
    }
    for (i = 0; i < n; i++)
        cout << y1[i] << "  ";
    cout << "\n";
    for (i = 0; i < n; i++)
        cout << y2[i] << "  ";
    cout << "\n";
    i3 = 0;
    k = 0;
    for (i = 0; i < n; i++)
    {
        for (i2 = 0; i2 < n; i2++)
        {
            if (y1[i] == y2[i2])
            {
                for (i3 = 0; i3 < n; i3++)
                {
                    y[i3] = y1[i];
                    i3++;
                    k++;
                }
            }
        }
    }
    for (i = 0; i < k; i++)
    cout << "MaccuB y: " << y[i] << " ";
    system("pause");
}
Я думаю что с циклом х что то не так, так как постоянно одно значение х выводиться как бы я его не менял...
Миниатюры
Вывести таблицу значений кусочной функции с заданным шагом аргумента  
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.11.2014, 10:49
Ответы с готовыми решениями:

Вывести таблицу значений функции с заданным шагом аргумента
и отладить программу с использованием цикла с предусловием. Вычислить значение функции y=f(x), начиная от значения x=xнач до значения...

Вывести таблицу значений функции с заданным шагом аргумента
2) Z=\frac{{ax}^{6}}{\sqrt{x}}+cos x a=16 2\leq x\leq 20\;;\;\Delta x=3

Вывести таблицу значений функции на заданном отрезке с заданным шагом
Помогите нужно создать программу табулирования функции y = {x}^{0.2}tgx при изменении значения x от –1 до 1 с шагом 0,2

8
654 / 575 / 164
Регистрация: 13.12.2012
Сообщений: 2,124
11.11.2014, 11:34
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int i = 0;
 
 
         if (x >= 0)
        {
            y1[i] = x*x + 4 * pow(x, x) + 2;
        }
        else
        {
            for (j = 1; j <=4; j++)
             y1[i] = x + pow(x, j - 1);
        }
        i++;
Добавлено через 1 минуту
Цитата Сообщение от Fox_Yo Посмотреть сообщение
float x, y1[n], y2[n], y[n];
не правильно, n должно вычисляться по формуле
C++
1
n = (4.0 - (-5.0) )/0.25
тогда придется динамически распределять память
C++
1
float * y1 = new float[n];
1
0 / 0 / 0
Регистрация: 31.10.2013
Сообщений: 89
11.11.2014, 12:05  [ТС]
aLarman, Все равно выводит такой же результат, только чисел не 40, а 36...
0
654 / 575 / 164
Регистрация: 13.12.2012
Сообщений: 2,124
11.11.2014, 12:28
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
#include "stdafx.h"
#include <math.h>
#include <iostream>
 
using namespace std;
 
int main()
{
    float x;
    int n = (4.0-(-5.0))/0.25;
    float *y = new float[n];
    for (int i = 0; i < n; ++i)
    {
        y[i] = 0.;
    }
 
    int i = 0;
    for (x = -5.0; x < 4.0; x += 0.25)
    {
        if (x >= 0)
        {
            y[i] = x*x + 4. * pow(x, x) + 2.;
        }
        else
        {
            y[i] = 1.;
            for (int j = 1; j <= 4; j++)
            {
                y[i] *= x + pow(x, j - 1);
            }
        }
        ++i;
    }
    for (i = 0; i < n; i++)
    {
        cout << y[i] << "  ";
    }
    cout << endl;
        delete[] y;
    system("pause");
        return 0;
}
Добавлено через 2 минуты
дальше по приведенному кода задания не понятно, опишите словами
1
0 / 0 / 0
Регистрация: 31.10.2013
Сообщений: 89
11.11.2014, 12:58  [ТС]
aLarman, написал с комментариями надеюсь понятно.
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
50
51
52
53
54
55
#include "stdafx.h"
#include <math.h>
#include <iostream>
 
using namespace std;
 
const int n = 40;
 
int main()
{
    float x, y1[n], y2[n], y[n];
    int i, i2, i3, k, j;
    for (x = -5.0; x < 4.0; x += 0.25)// наш промежуток от -5 до 4 с шагом 0,25(x Є [-5;4] и h=0,25)
    {
        if (x >= 0)// это наше первое уровненные, когда х больше или ровняется 0 ([LATEX]{x}^{2}+4{x}^{x}+2[/LATEX])
        {
            for (i = 0; i < n; i++) // считаем количество корней первого уравнения
                y1[i] = x*x + 4 * pow(x, x) + 2;
        }
        else // это наше второе уровненные, когда х меньше 0 ([LATEX]\prod_{i=1}^{4}(x+{x}^{i-1})[/LATEX])
        {
            for (i = 0; i < n; i++) // считаем количество корней второго уравнения
            {
                for (j = 1; j < 4; j++) // цикл для произведения ([LATEX]\prod_{i=1}^{4}[/LATEX])
                    y2[i] = x + pow(x, j - 1);
            }
        }
    }
    for (i = 0; i < n; i++)
        cout << y1[i] << "  ";
    cout << "\n";
    for (i = 0; i < n; i++)
        cout << y2[i] << "  ";
    cout << "\n";
    i3 = 0;
    k = 0;
    for (i = 0; i < n; i++) // два цикла для сравнивания наших уравнений
    {
        for (i2 = 0; i2 < n; i2++)
        {
            if (y1[i] == y2[i2])// так как у нас система уравнений, тогда "і" элемент первого уравнения должен быть равен "і2" элементу второго уравнения
            {
                for (i3 = 0; i3 < n; i3++)// цикл для нахождения совместных корней
                {
                    y[i3] = y1[i];
                    i3++;
                    k++;
                }
            }
        }
    }
    for (i = 0; i < k; i++)// вывод наших корней в массив у[i]
    cout << "MaccuB y: " << y[i] << " ";
    system("pause");
}
0
654 / 575 / 164
Регистрация: 13.12.2012
Сообщений: 2,124
11.11.2014, 13:17
Fox_Yo, судя по заданию необходимо вывести таблицу значений ф-ции описанную системой, тут нет системы уравнений...
1
0 / 0 / 0
Регистрация: 31.10.2013
Сообщений: 89
11.11.2014, 15:21  [ТС]
aLarman, Мне препод сказал что в принципе и так можно сделать, но нужно изменить цикл с "х", он сказал что там все очень просто, и он не будет мне подсказывать. Но я не знаю что делать, уже 2 дня мучаюсь, он сказал что намного проще через функции, но я как то не очень понимаю как так делать.
А как бы вы сделали?
0
654 / 575 / 164
Регистрация: 13.12.2012
Сообщений: 2,124
11.11.2014, 16:29
Лучший ответ Сообщение было отмечено Fox_Yo как решение

Решение

Fox_Yo, я так и не понимаю какое было у Вас задание, если "через ф-ции" это скорее всего вот так
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
50
51
#include "stdafx.h"
#include <math.h>
#include <iostream>
 
using namespace std;
 
floaf func1(float x)
{
return x*x + 4. * pow(x, x) + 2.;
}
float func2(float x)
{
float tmp = 1.;
            for (int j = 1; j <= 4; j++)
            {
                tmp *= x + pow(x, j - 1);
            }
return tmp;
}
int main()
{
    float x;
    int n = (4.0-(-5.0))/0.25;
    float *y = new float[n];
    for (int i = 0; i < n; ++i)
    {
        y[i] = 0.;
    }
 
    int i = 0;
    for (x = -5.0; x < 4.0; x += 0.25)
    {
        if (x >= 0)
        {
            y[i] = func1(x);
        }
        else
        {
            y[i] = func2(x);
        }
        ++i;
    }
    for (i = 0; i < n; i++)
    {
        cout << y[i] << "  ";
    }
    cout << endl;
        delete[] y;
    system("pause");
        return 0;
}
1
0 / 0 / 0
Регистрация: 31.10.2013
Сообщений: 89
11.11.2014, 17:34  [ТС]
aLarman, Спасибо вам большое, вроде работает правильно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.11.2014, 17:34
Помогаю со студенческими работами здесь

Вывести таблицу значений функции на заданном отрезке с заданным шагом
Нужна помощь с кодом {a}_{n}=\frac{1}{(n+1^2)} , M : {a}_{n}\prec \varepsilon Составить программу для вычисления значений функции...

Вывести таблицу значений функции на заданном интервале с заданным шагом
найти функцию у(х) где х - с шагом h (-1,8], h=0,6

Вывести на экран таблицу значений указанной функции в заданном диапазоне с заданным шагом
Кто в курсе как решается задача на С++. Именно через цикл &quot;while&quot;. Напишите программу, которая выводит на экран таблицу значений функции...

Вывести таблицу значений функции и ее разложения в ряд Тейлора на заданном отрезке с заданным шагом
Помогите пожалуйста... Табулировать экспоненциальную функцию {e}^{x} для значений x\epsilon с шагом 0.1. Результат вывести в виде...

Вывести таблицу значений функции и ее разложения в ряд Тейлора на заданном отрезке с заданным шагом
Для x, изменяющегося в интервале от x0 до xk с шагом h, вычислить значения бесконечной суммы S(x) с точностью Е=0.00001 и функции y(x).


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru