2016-02-11 2 views
-1

У меня проблема с этой проблемой. В нем говорится, что я разрешил программе находить минуты, макс и диапазон, когда пользователь вводит минимальный диапазон и максимальный диапазон.Min, Max, Range

Здесь код у меня есть:

#include <iostream> 
#include <string> 
#include <cmath> 
#include <iomanip> 
#define pi 3.1416 
#define POINTS 20 


using namespace std; 

int main() 
{ 

    int Xmin, Xmax; 
    double step; 

    cout << "Enter a value for xMin and xMax:\n"; 
    cin >> Xmin >> Xmax; 


    step = (double)(Xmax - Xmin)/(double)POINTS; 

    cout << "X-VALUES " << "" << "| " << "" << "Y-VALUES" << endl; 
    cout << "_________" << "" << "|_" << "" << "_________" << endl; 



    for (int i = 0; i < POINTS; ++i) 
    { 

     double x = Xmin + (step * i); 

     double y = 0.0572 * cos(4.667 * x) + 0.0218 * pi * cos(12.22 * x); 


     cout << x << "\t  " << setprecision(2) << y << endl; 
    } 

    cout << "____________________" << endl; 


    return 0; 
} 

Я здесь выход моей программы:

X-Value | Y-Value 
__________|__________ 
-2   -0.0043 
-1.8   -0.0982 
-1.6   0.0378 
-1.4   0.0438 
-1.2   0.0099 
-1   0.0618 
-0.8   -0.1118 
-0.6   -0.0198 
-0.4   -0.0047 
-0.2   -0.0184 
0   0.1257 
0.2   -0.0184 
0.4   -0.0047 
0.6   -0.0198 
0.8   -0.1118 
1   0.0618 
1.2   0.0099 
1.4   0.0438 
1.6   0.0738 
1.8   -0.0982 
2   -0.0043 
───────────────────── 

В принципе, эта программа все готово имеет уравнение, которое вычисляет числа и их список на основе пользовательских входов для Xmin и Xmax. Я полагаю, чтобы программа нашла min, max и вычислила его диапазон от Y-Значений из приведенной выше таблицы.

Вот мой код для поиска мин и макс.

#include <iostream> 
#include <string> 
#include <cmath> 
#include <iomanip> 
#include <limits> 
#define pi 3.1416 
#define POINTS 20 


using namespace std; 

int main() 
{ 

    int Xmin, Xmax; 
    double step; 
    int max = numeric_limits<int> :: min(); 
    int min = numeric_limits<int> :: max(); 
    int num = 0; 

    cout << "Enter a value for xMin and xMax:\n"; 
    cin >> Xmin >> Xmax; 


    step = (double)(Xmax - Xmin)/(double)POINTS; 

    cout << "X-VALUES " << "" << "| " << "" << "Y-VALUES" << endl; 
    cout << "_________" << "" << "|_" << "" << "_________" << endl; 



    for (int i = 0; i < POINTS; ++i) 
    { 

     double x = Xmin + (step * i); 

     double y = 0.0572 * cos(4.667 * x) + 0.0218 * pi * cos(12.22 * x); 

     //printf(" %f\t%f\n ", x, y); 
     cout << x << "\t  " << setprecision(2) << y << endl; 
    } 

    cout << "____________________" << endl; 

    while (cout << "Enter a value for xMin and xMax:\n" && 
     cin >> Xmin >> Xmax) 
    { 
     if (num > max) max = num; 
     if (num < min) min = num; 
    } 

    cout << "max is: " << max << '\n' 
     << "min is: " << min << '\n'; 


    return 0; 
} 

Он работает, но не распечатывает мин или макс. Он просто повторяет программу на «введите Xmin и Xmax». Но когда я вхожу в какой-нибудь летер, он печатает мин и макс. Помоги мне. Я смущен.

+0

Сохраните значения в массиве и используйте - насколько это возможно - стандартные алгоритмы для вычисления желаемого результата (например, 'std :: minmax_element',' std :: nth_element' (для медианы), 'std :: accumulate' (для среднего значения)) – MikeMB

+0

Что касается ошибки: я не знаю, что вы думаете о своей программе, но компилятор сообщает вам, что именно не так: вы читаете из 'num', не инициализируя его значением. – MikeMB

+1

'while (cout <<" Введите значение для xMin и xMax: \ n "&& cin >> Xmin >> Xmax)' серьезно? –

ответ

1

Локальная переменная num никогда не получает значения внутри функции. Вы используете его в цикле while, но вы не вводите вход.

Когда вы объявляете переменную, вы всегда должны ее инициализировать.

Edit 1: Min и Max
Вы можете пополняемый минимальное и максимальное значение для любой переменной. Установите максимальную переменную в наименьшее значение, установите минимальное значение наибольшего значения.

После вычисления переменной y выполнить следующие действия:

if (y > max_y) max_y = y; 
if (y < min_y) min_y = y; 

Это пополняемый минимум и максимум.

Я рекомендую выполнить это для переменной суммы. Вам понадобится переменная суммы.

+0

Я сделал это, но теперь он повторяется и не показывает мин и макс. –

+0

Один шаг через ваш код с помощью отладчика и выяснить, почему цикл не заканчивается. * Наблюдайте * или просмотрите переменные при каждом выполнении каждого утверждения по одному. –

+0

На самом деле мой профессор еще не научил нас отлаживать –