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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.12.2017, 15:24   #1
ozziedejavu
Новичок
Джуниор
 
Регистрация: 15.12.2017
Сообщений: 1
По умолчанию Доработать программу

Код:
#include "stdafx.h"
#include "stdio.h"
#include "iostream"
#include "math.h"
#include "conio.h"
 
#include <locale.h>
 
using namespace std;
 
float f, g, fprom, a, amin, amax, b, bmin, bmax;
int n, i, da, db;
 
float function(float, float, int);  //функция подсчёта функции f (Yi)
float gfunction(float, float, float, float, float, float, int); //функция подсчёта функции g (U)
 
 
int main()
{
    setlocale(LC_ALL, "Rus");
 
    int prov;  //переменная для проверки окончания программы
 
    do {  //цикл do while для перезапуска программы
 
          //просим ввести amin, amax, поточно записываем
        cout << "Введите значения amin, amax\n";
        cin >> amin >> amax;
        //просим ввести da, поточно записываем
        cout << "Введите значения da\n";
        cin >> da;
        //просим ввести bmin, bmax, поточно записываем их
        cout << "Введите значения bmin, bmax\n";
        cin >> bmin >> bmax;
        //просим ввести db, поточно записываем
        cout << "Введите значения db\n";
        cin >> db;
        //просим ввести n, поточно записываем
        cout << "Введите значения n\n";
        cin >> n;
 
        //проверка на количество значений функции
        if ((amin + da*(n - 1) > amax) || (bmin + db*(n - 1) > bmax)) {
            cout << "Количество значений функций превышает допустимое. Программа закончит свою работу" << endl;
            system("pause");
            exit(1); //окончание работы программы
        }
 
        //проверка на интервал (не равно 0)
        if (n == 0) {
            cout << "Интервал не может быть равен 0. Программа закончит свою работу" << endl;
            system("pause");
            exit(1);
        }
 
        //проверка на кол-во шагов хода (не равно 0)
        if ((da == 0) || (db == 0)) {
            cout << "Шаг хода не может быть равен 0. Программа закончит свою работу" << endl;
            system("pause");
            exit(1);
        }
 
        //вывод строки наименовнаий
        cout.width(6);
        cout << "a";
        cout.width(6);
        cout << "b";
        cout.width(6);
        cout << "i";
        cout.width(6);
        cout << "Yi" << endl;
 
        //вычисление и вывод функций и их пременных
        for (a = amin; a <= amax; a = a + da) {
            for (b = bmin; b <= bmax; b = b + db) {
                for (int i = 0; i <= (n - 1); i++) {
 
                    f = function(a, b, i + 1);
 
                    printf("%6.2f %6.2f %6.0i %6.2f\n", a, b, i + 1, f);
 
                    g = gfunction(amin, amax, bmin, bmax, da, db, i + 1);
                }
                cout << "U = " << g << endl;
            }
        }
 
        cout << "Продолжить с новыми данными? Наберите цифру 1 - для ввода новых значений, любую другую для окончания" << endl;
        cin >> prov;
 
    } while (prov == 1);
    system("pause");
 
 
}
 
//функция f(Yi)
float function(float a, float b, int i) {
    float funct;
    if (a <2 * b) {
        funct = pow((2 * a + 3 * i), 2) - pow((3 * a - 2 * i), 2) / sqrt(pow(a, 2) + pow(-1.0, i)*a*i + pow(b, 2) + pow(i, 2));
    }
    else {
        funct = pow((3 * i - 2 * a), 2) + pow((2 * i - 3 * a), 2) / sqrt(pow(a, 2)*pow(i, 2) - 2 * a*b*i + pow(b, 2) + 1);
    }
    return funct;
}
 
//функция g(U)
float gfunction(float amin, float amax, float bmin, float bmax, float da, float db, int n) {
 
    float sum = 0;
    float a = 0;
    float b = 0;
 
    for (int j = 1; j <= n; j++) {
        a = amin + da*(j - 1);
        b = bmin + db*(j - 1);
 
        if (function(a, b, j) <= 1) { //проверка на принадлежность заданным интервалам
            sum = sum + function(a, b, j)*function(a, b, j);
        }
        else {
            sum = sum + (1 / function(a, b, j))*(1 / function(a, b, j));
        }
    }
    system("pause");
    return sum;
 
}
Нужно переделать функцию G под мой вариант (т.к она тут сделана под другой).

Вот сама функция G: GGGGGGGGGGGGGGG.JPG
ozziedejavu вне форума Ответить с цитированием
Старый 15.12.2017, 15:29   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

А зачем кому-то это делать за вас?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
доработать программу ehanjaki Помощь студентам 1 12.07.2012 14:37
доработать программу konispat Паскаль, Turbo Pascal, PascalABC.NET 1 25.12.2011 20:16
Доработать программу на С++ sol1tary Фриланс 3 20.07.2011 10:15
Доработать программу drama2rg Помощь студентам 2 29.03.2010 19:22