Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.07.2022, 15:25   #1
Darklight
Пользователь
 
Регистрация: 08.07.2022
Сообщений: 29
По умолчанию Табилировка

- Составить схему алгоритма и программу вычисления значений функций, результаты вычислений в виде таблицы.
- При наличии точек разрыва предусмотреть в программе соответствующую защиту.
- Результаты вычислений вывести на экран в виде таблицы, используя форматирование данных.
- Предусмотреть возможность выбора отдельного графика для построения, или вывод на экран одновременно всех.
- Вычисления ведутся на интервале xЕ[0;3] с шагом 0,1. Дополнительно для всех тригонометрических, гиперболических и соединенных (столбцы 4, 6 и 8) функций вычислить их значение при x = pi/3; pi/4; 2pi/3; pi.

Результаты меня смущают.

Код:
#include<cmath>
#include <iostream>
#include <math.h>

using namespace std;

int f1(int x)
{
    return x/(pow(1-x, 3));
}
int f2(int x)
{
    return 1.0 + (pow(x, 2)) / sqrt(1+x);
}
int f3(int x)
{
    return 1.0 /pow(sin(x),2)*(1+sin(x));
}
int f4(int x)
{
    return 1.0 / 1 + pow(exp(1), -x );
}
int f5(int x)
{
    return 1.0 / pow(x,2)*sinh(x);
}
int f6(int x)
{
    return 1.0 / pow(x,2)*log(x+1);
}
int f7(int x)
{
    return cosh(sin(x));
}

int main()
{
    const double pi = 4*acos(-1);
    int a = 0, b = 3, h = 0.1;

    for (int x = a; x < b + 2.e-15; x += h)

    printf("%2.3lf\t%2.3lf\t%lf2.3\t%lf2.3%2.3lf\t%2.3lf\t%lf2.3\t%lf2.3\n", x, f1(x), f2(x), f3(x), f4(x), f5(x), f6(x), f7(x));
    int x = pi / 3;
    printf("%2.3lf\t%2.3lf\t%lf2.3\t%lf2.3%2.3lf\t%2.3lf\t%lf2.3\t%lf2.3\n", x, f1(x), f2(x), f3(x), f4(x), f5(x), f6(x), f7(x));
    x = pi / 4;
    printf("%2.3lf\t%2.3lf\t%lf2.3\t%lf2.3%2.3lf\t%2.3lf\t%lf2.3\t%lf2.3\n", x, f1(x), f2(x), f3(x), f4(x), f5(x), f6(x), f7(x));
    x = 2 * pi / 3;
    printf("%2.3lf\t%2.3lf\t%lf2.3\t%lf2.3%2.3lf\t%2.3lf\t%lf2.3\t%lf2.3\n", x, f1(x), f2(x), f3(x), f4(x), f5(x), f6(x), f7(x));
    x = pi;
    printf("%2.3lf\t%2.3lf\t%lf2.3\t%lf2.3%2.3lf\t%2.3lf\t%lf2.3\t%lf2.3\n", x, f1(x), f2(x), f3(x), f4(x), f5(x), f6(x), f7(x));
    getchar();
    return 0;
}
Изображения
Тип файла: png 32.png (8.0 Кб, 14 просмотров)
Darklight вне форума Ответить с цитированием
Старый 16.07.2022, 17:56   #2
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,550
По умолчанию

После вот такого
Код:
 
  int a = 0, b = 3, h = 0.1;
..........
  int x = pi / 3;
смущение переходит в возмущение.
Товарисч имеет представление - что такое int ? Кроме int - известен ли ему ещё хоть один тип переменной?
------
Табилировка - чувствуется, что ТС из Грузии, поэтому простительно. Но у нас принято слово "табулирование"

Очень смешной формат вывода %2.3lf - "выводимое число на печати будет занимать 2 позиции, из которых 3 - дробная часть." Вспомнилось из юморески: "Три диссертации защитил, причём обе - докторские" .

Последний раз редактировалось digitalis; 16.07.2022 в 18:35.
digitalis вне форума Ответить с цитированием
Старый 17.07.2022, 15:39   #3
Darklight
Пользователь
 
Регистрация: 08.07.2022
Сообщений: 29
По умолчанию

Darklight, решил
Код:
#define _USE_MATH_DEFINES
#include<math.h>
#include<stdio.h>
#include <iostream>
#include <math.h>
using namespace std;

const double eps = 1.0e-7; // Точность сравнения чисел

double f1(double x)
{
    double t = 1.0 - x;
    if (fabs(t) < eps)return 0;
    return x / (t * t * t);
}
double f2(double x)
{
    if (x < -1.0 + eps)return 0;
    return (1.0 + x * x) / sqrt(1. + x);
}
double f3(double x)
{
    double t = sin(x);
    if (fabs(t) < eps || fabs(t + 1.0) < eps)return 0;
    return 1.0 / (t * t * (1.0 + t));
}
double f4(double x)
{
    return 1.0 / (1. + exp(x));
}
double f5(double x)
{
    if (fabs(x) < eps)return 0;
    return 1.0 / (x * x * sinh(x));
}
double f6(double x)
{
    if (fabs(x) < eps || x < -1.0 + eps)return 0;
    return 1.0 / (x * x * log(x + 1.0));
}
double f7(double x)
{
    return cosh(sin(x));
}
void Print(double x)
{
    const char* form = "|%9.3lf |";
    printf("|%5.2lf |", x);
    printf(form, f1(x));
    printf(form, f2(x));
    printf(form, f3(x));
    printf(form, f4(x));
    printf(form, f5(x));
    printf(form, f6(x));
    printf(form, f7(x));
    puts("");
}


int main()
{
    const double pi = M_PI;
    double a = 0., b = 3., h = 0.1;

    cout << string(92, '=') << endl;
    cout << "|   x  ||     2    ||     3    ||     4    ||     5    ||     6    ||     7    ||    8     |" << endl;

    for (double x = a; x < b + 2.e-15; x += h) {
        cout << string(92, '-') << endl;
        Print(x);
    }
    cout << string(92, '=') << endl;
    puts("\nx = pi/3; pi/4; 2pi/3; pi\n");

    cout << string(92, '=') << endl;
    cout << "|   x  ||     2    ||     3    ||     4    ||     5    ||     6    ||     7    ||    8     |" << endl;

    double xc[4] = { pi / 3.,pi / 4.,2. * pi / 3.,pi };

    for (int i = 0;i < 4;i++) {
        cout << string(92, '-') << endl;
        Print(xc[i]);
    }
    cout << string(92, '=') << endl;

    getchar();
    return 0;
}
Изображения
Тип файла: jpg 213213.jpg (70.9 Кб, 0 просмотров)

Последний раз редактировалось Darklight; 17.07.2022 в 15:42.
Darklight вне форума Ответить с цитированием
Старый 17.07.2022, 23:26   #4
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,550
По умолчанию

Ну что сам решил - верится слабо, слишком большая разница с первым вариантом. Но я же не препод: есть решение - и ладушки. А вот что готовое решение выставил - респект. Пусть другие читают, учатся.
digitalis вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц