Помогите упростить код, пожалуйста...

#include <iostream>
#include <math.h>

using namespace std;

double func(double x) // функция для вычисления синуса числа х
{
    double y;
    y = sin(x);
    return y;
 }

void main()
{
    const int size_x=79;// задаем размеры будущего массива
    const int size_y=50;

    char c[size_x][size_y]; // создаем двумерный массив

    for(int i = 0; i < size_x; i++)// инициализируем его пробелами
        for(int j = 0; j < size_y; j++)
            c[i][j]=' ';

    double xst, xend; // вводим два числа - начало и конец
    cin >> xst;
    cin >> xend;

    double intx = (xend - xst) / size_x;// отнимаем начало от конца и делим на первый из размеров массива

    double ymax = -1e308;// задаем максимальное и минимальное значения
    double ymin = 1e308;

    for(int i = 0; i < size_x; i++)
    {
        double x = xst + intx * i;// вычисляем х
        double y = func(x);// с помощью функции находим синус х

        if(y < ymin)// если выход за установленные пределы(максимум и минимум) устанавливаем новые пределы
            ymin=y;

        if(y > ymax)
            ymax=y;
    }

    double inty = (ymax-ymin) / size_y; // отнимаем минимум от максимума и делим на второй размер массива

    for(int i=0; i < size_x; i++)
    {
        double x = xst + intx * i; // вычисляем новый х

        double y = func(x);// с помощью функции находим синус х

        for(int j=0; j<size_y; j++)
        {
            double ylow = ymin + inty * j; // вычисляем y
            double yup = ylow + inty;

            if(y> ylow && y< yup) // по результатам рисуется синусоида в массиве
                c[i][j]='/';
        }
    }

    for(int i = size_y - 1; i >= 0; i--)// выводим полученный массив на экран
    {
        for(int j = 0; j < size_x; j++)
            cout << c[j][i];

        cout<<endl;
    }

    system("pause");
}

Например так:

#include <iostream>
#include <math.h>
#include <limits.h>

using namespace std;

double func(double x) // функция для вычисления синуса числа х
{
    return sin(x);
}

void main() {
    const int size_x = 79;// задаем размеры будущего массива
    const int size_y = 20;

    char c[size_y][size_x + 1]; // создаем двумерный массив, резервируем один элемент для конца строки

    for (int i = 0; i < size_y; i++) { // инициализируем его пробелами
        for (int j = 0; j < size_x; j++)
            c[i][j] = ' ';
        c[i][size_x] = '\0';  // символ конца строки
    }
    double xst, xend; // вводим два числа - начало и конец
    cout << "enter x_from and x_to: ";
    cin >> xst;
    cin >> xend;

    double intx = (xend - xst) / size_x;    // шаг итерации по оси х

    double ymax = -DBL_MAX;// задаем максимальное и минимальное значения
    double ymin = DBL_MAX;

    // вычисляем максимальное и минимальное значение функции на отрезке [xst, xend]
    for (double x = xst; x <= xend; x += intx) {
        double y = func(x);             // с помощью функции находим f(х)

        if (y < ymin)
            ymin = y;

        if (y > ymax)
            ymax = y;
    }

    double scale = (size_y - 1) / (ymax - ymin);

    for (int i = 0; i < size_x; i++) {
        double x = xst + intx * i; // вычисляем новый х
        double y = func(x);     // с помощью функции находим f(х)

        int iy = (int)round((y - ymin) * scale);
        c[iy][i] = '*';
    }

    for (int i = size_y - 1; i >= 0; i--)// выводим полученный массив на экран
    {
        cout << c[i] << endl;
    }
    system("pause");
}

Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.

Ответить

Вы можете использовать разметку markdown для оформления комментариев и постов. Используйте функцию предпросмотра для проверки корректности разметки.

Пожалуйста, оформляйте исходный код в соответствии с правилами разметки. Для того, чтобы вставить код в комментарий, скопируйте его в текстовое поле ниже, после чего выделите то, что скопировали и нажмите кнопку «код» в панели инструментов. Иначе ваш код может принять нечитаемый вид.

Либо производите оформление кода вручную, следующим образом:

``` #include <iostream> using namespace std; int main() { // ... } ```

Предпросмотр сообщения

Ваше сообщение пусто.