Как я могу использовать одиннадцатизначный номер - PullRequest
4 голосов
/ 15 мая 2019

Я хочу ввести одиннадцатизначное число в моей переменной - число, но я думаю, что памяти не так много. Я пытался использовать * number и int * number = new int [100], но это не работает.

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

Как я могу решить эти проблемы?

#include <iostream>
#include <string>
using namespace std;

struct NOTE {
    string name;
    int number;
    int birthday[3];
};

int main()
{
    //int *tel = new int[100];
    //int *ptr = new int;
    NOTE arr[3];
    cout << "Please enter quality names and numbers or program stop working!";
    for (int i = 0; i < 3; i++) {
        cout << "Man #" << i + 1 << "\n";
        cout << "Name: ";
        cin >> arr[i].name;
        cout << "Number: ";
        //*tel = arr[i].number;
        //cin >> *tel;
        cin >> arr[i].number;
        cout << "Year: ";
        cin >> arr[i].birthday[0];
        cout << "Month: ";
        cin >> arr[i].birthday[1];
        cout << "Day: ";
        cin >> arr[i].birthday[2];
    }
}

1 Ответ

3 голосов
/ 15 мая 2019

В настоящее время вы используете целое число со знаком для хранения вашего значения.

int number;

Подписанное int может содержать максимальное значение 2 ^ 31 (2 147 483 648), длина которого составляет всего 10 цифр.

unsigned int number;

Целое число без знака может содержать 2 ^ 32, что составляет 4 294 967 296 (все еще 10 цифр), что все еще недостаточно.

Вы можете использовать длину со знаком, которая имеет размер 64 бита и может содержать максимум 2 ^ 63 (9 223 372 036 854 775 808), что составляет длину 19 цифр. Этого должно быть достаточно.

long number;
...