Получить значение целочисленной переменной - PullRequest
0 голосов
/ 11 января 2011

Это, вероятно, легко понять, но я не могу найти решение нигде, по некоторым причинам. Возможно, я не ищу нужную вещь. И, может быть, в каком-то уроке для начинающих я не смотрел.

Во всяком случае, мне было интересно, как получить значение целочисленной переменной в C ++? Я знаю, что вы можете использовать cin.getline() для строковых переменных, но я получил сообщение об ошибке, когда попытался сделать это с целочисленной переменной (и правильно, я знаю, что это было неправильно, но я искал решение).

Мой проект - консольное приложение Win32. Я пытаюсь попросить пользователя ввести число, хранящееся в переменной n. Затем я беру значение n и выполняю с ним различные математические функции. В моем заголовочном файле у меня есть string, windows, iostream, stdio, math и fstream. Нужно ли добавлять другую библиотеку?

EDIT:

cout << "TEST SINE";
cout << "\nPlease enter a number.\n\n";
cin >> n;
break;

Вот код, который я пытаюсь использовать. Это все, что мне нужно сделать? Если да, то как мне включить переменную, чтобы я мог проверить ее, используя sin, cos и tan?

Еще раз, спасибо заранее.

Ответы [ 2 ]

5 голосов
/ 11 января 2011

в чем проблема?

cin>>n;

Для математических функций лучше использовать float или double.

int main()
{
   double number;
   double result;

   cout<<"Enter a number:"<<endl;
   cin>>number;

   result = sin (number);  //if you consider number is in radians
   //result = sin(number*3.14159265/180.0) //if you consider number is in degrees    

   cout<<result;

   return 0;
}
3 голосов
/ 11 января 2011

Если вам нужно целое число, вы можете использовать:

cin >> n;

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

Возможно, лучшей идеей было бы ввести ее в виде строки, как вы уже знаете, как поступить с getline(), а затем проверить, что строка состоит из всех числовых символов перед вызовом функции преобразования, такой как atoi() или strtol() .

Таким образом, вы получаете надежный ввод данных и нужные вам типы данных.

Но если вы хотите использовать тригонометрические функции, вам, вероятно, лучше работать с двойными, с atof(), а не с целыми числами.


Вот пример программы, с которой можно начать:

#include <iostream>
#include <cstdlib>
#include <cmath>
#include <cstring>
using namespace std;

int main (void) {
    char s[256];

    // Get and check line.

    cout << "Enter angle in degrees: ";
    cin.getline(s,100);
    for (char *ps = s; *ps != 0; ps++) {
        if (!isdigit (*ps)) {
            cout << "Not numeric" << endl;
            return 1;
        }
    }

    // Output string, float, sine and cosine (convert to radians first).

    float f = atof (s);
    cout << "String : '" << s << "'" << endl;
    cout << "Float  : " << f << endl;
    f = f * 3.141592653589 / 180.0;
    cout << "Sine   : " << fixed << sin (f) << endl;
    cout << "Cosine : " << fixed << cos (f) << endl;

    return 0;
}

Примеры прогонов показаны ниже:

Enter angle in degrees: 30
String : '30'
Float  : 30
Sine   : 0.500000
Cosine : 0.866025

Enter angle in degrees: 45
String : '45'
Float  : 45
Sine   : 0.707107
Cosine : 0.707107

Enter angle in degrees: 90
String : '90'
Float  : 90
Sine   : 1.000000
Cosine : -0.000000      (caused by floating point inaccuaracy).
...