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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.05.2019, 13:22   #1
dbegin
Новичок
Джуниор
 
Регистрация: 20.05.2019
Сообщений: 5
По умолчанию Как вывести значения "b" для каждого из пройденных значений "a"

Доброго времени суток!

Успешно написал программу для вывода значений для параметра "а" в интервале от 0,5 до 1.

Теперь пытался написать программу, чтобы каждое последовательно значение a1 бралось для вычисления min/max функций, составляло интервал, и выводило с шагом h1 значения b

То есть, если a1=0.5, a2=1, h=0.1, то получается что берется только первое значение из промежутка. Как сделать так, чтобы эти значения проходили полностью все значения от 0,5 до 1 и применялись для вычисления min/max?

И как потом вывести эти значения также в столбик?

Пока что только написал для подсчета, но и в min функции выдает не конкретное число, а только лишь непонятно что.

Для простоты понимания, прилагаю картинку выходных данных моего кода, а также картинку, для чего собственно говоря решается




Код:
#include <iostream>
#include <algorithm>
#include <cmath>
using namespace std;
int main() {
    float a1, a2, h, h1, b, b1;
    cout << "Vvedite granici a:\n";
    cout << "Nizhnaya granica a ";
    cin >> a1;
    cout << "Verhnaya granica a ";
    cin >> a2;
    cout << "\nEnter a step:\n";
    cout << "h = ";
    cin >> h;
    cout << "\nZnacheniya a\n";
    do {
        cout << " " << a1 << "\n";
        a1 += h;
    } while (a1 <= a2+0.1);
       cout << "\nEnter step b:";
     cin >> h1;
  
cout << "max(a1-1,(-(5+4*a1)+sqrt(25+48*a1))/4)=" << b << endl;
cout << "min(a1-0.5,(-1+sqrt(1+4*a1*(1-a1)))/2)=" << b1 << endl;
    do{
        cout << " " << b1 << "\n";
        b += h1;
    } while (b <= b1+0.05);   
    system("pause");
    return 0;
}
Изображения
Тип файла: png Безымянный.png (9.9 Кб, 64 просмотров)
Тип файла: png Безымянный1.png (3.1 Кб, 70 просмотров)
dbegin вне форума Ответить с цитированием
Старый 20.05.2019, 13:37   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

если я правильно Вас понял, то попробуйте
что-то вроде такого:

Код:
     eps = 1.0e-7;
     cout << "\nEnter step b:";
     cin >> h1;

    do {
        cout << " " << a1 << endl;;

        b = max(a1-1.0,(-(5.0+4.0*a1)+sqrt(25.0+48.0*a1))/4.0);
        b2 = min(a1-0.5,(-1.0+sqrt(1.0+4.0*a1*(1.0-a1)))/2.0);

	cout << "max(a1-1,(-(5+4*a1)+sqrt(25+48*a1))/4)=" << b << endl;
	cout << "min(a1-0.5,(-1+sqrt(1+4*a1*(1-a1)))/2)=" << b2 << endl;

        do{
            cout << " " << b << endl;
            b += h1;
        } while (b <= b2+eps); 

        a1 += h;
    } while (a1 <= a2+eps);
Serge_Bliznykov вне форума Ответить с цитированием
Старый 20.05.2019, 13:59   #3
dbegin
Новичок
Джуниор
 
Регистрация: 20.05.2019
Сообщений: 5
По умолчанию

супер, теперь все правильно считает сами max и min, однако выводит все равно несколько не то.

то есть нужно чтобы работало так - выдаем границы для a, потом он выводит все значения a.

потом каждое значение a берется, считается для max и min, получается интервал.

и чтобы этот интервал тоже выводился в столбец но с задаваемым шагом h2

То есть для значения a=0.5 вычисляется max и min, из этих двух чисел получается интервал, который нужно вывести с шагом h2

и далее тут же берется a=0.6 и повторяет.

И так для всего интервала значений для a
dbegin вне форума Ответить с цитированием
Старый 20.05.2019, 14:07   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от dbegin Посмотреть сообщение
потом каждое значение a берется, считается для max и min, получается интервал.

и чтобы этот интервал тоже выводился в столбец но с задаваемым шагом h2

То есть для значения a=0.5 вычисляется max и min, из этих двух чисел получается интервал, который нужно вывести с шагом h2

и далее тут же берется a=0.6 и повторяет.

И так для всего интервала значений для a
пример напишите. как оно должно выводиться.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 20.05.2019, 14:22   #5
dbegin
Новичок
Джуниор
 
Регистрация: 20.05.2019
Сообщений: 5
По умолчанию

Например:
вводится левая граница a=0.5
вводится правая граница а=1
вводится шаг для а=0.1
далее выводится
0.5
0.6
0.7
0.8
0.9
1
Далее вводится шаг для b=0.05
Берется значение a для формулы, например 0.5, высчитывается max и min, и эти значения max и min будут являться границами для b.
Пусть для примера они будут для max 0.1, а для min 0.3
И вывестись должно
0.1
0.15
0.2
0.25
0.3

После чего берется значение a=0.6 и повторяется
Также для всех остальных значений из промежутка a

Последний раз редактировалось dbegin; 20.05.2019 в 14:27.
dbegin вне форума Ответить с цитированием
Старый 20.05.2019, 14:30   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от dbegin Посмотреть сообщение
Пусть для примера они будут для max 0.1, а для min 0.3
И вывестись должно
а где дожно вывестись для a=0.6, для a=0.7 и т.д. ?!

тот код, что я предложил выводит так
a=0.5
теперь в столбик все b от 0.1 до 0.3 (например)
a=0.6
теперь в столбик все b от 0.22 до 0.57 (например)
a=0.7
теперь в столбик все b от 0.3 до 0.9 (например)
и т.д.

а как Вам нужно?

примерно так:
https://ideone.com/LEKccK

Последний раз редактировалось Serge_Bliznykov; 20.05.2019 в 14:39.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 20.05.2019, 14:37   #7
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Столбик а отдельно в начале, а потом Н столбиков для b.
p51x вне форума Ответить с цитированием
Старый 20.05.2019, 14:55   #8
dbegin
Новичок
Джуниор
 
Регистрация: 20.05.2019
Сообщений: 5
По умолчанию

Именно так! Спасибо большое!
dbegin вне форума Ответить с цитированием
Старый 20.05.2019, 14:57   #9
dbegin
Новичок
Джуниор
 
Регистрация: 20.05.2019
Сообщений: 5
По умолчанию

с eps я понял, по сути она уничтожает неудобные для вывода значения с e,
но почему мой код тогда не работал от слова совсем? я неправильно делал цикл? или ошибка была скорее в том что я не дописал дополнительного кусочка кода?
dbegin вне форума Ответить с цитированием
Старый 20.05.2019, 14:57   #10
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

И в чем ваша проблема? Из приведенного кода вытаскиваем вывод a1 вверх, а условие выхода берем из текущего для а. Все остальное оставляем.
p51x вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дан список имен names=["Bob" "Alice" "Elizabet" "Dan"]. Вывести на экран последовательно строчки с приветствием вида Hello,Bob! Hello, Alice! dianaaa1998 Помощь студентам 8 14.09.2018 09:44
Убрать папки "Pictures", "Music", "Видео", "Downloads" из "МОЙ КОМПЬЮТЕР" Бахтиёр1916 Windows 1 05.04.2017 12:53
Нужно пояснить/прокомментировать код программы, или коды функций "Добавить" "Удалить" "Обновить(редактировать" "Поиск" "Период") ZIRASS PHP 4 15.06.2016 14:23
Вывести название соответствующей карты вида "шестерка бубен", "дама червей","туз треф" и т.п. воваава Помощь студентам 3 01.12.2011 12:50