Member 13928285 Ответов: 4

Мой код C++ не отображает номер мобильного телефона с 10 цифрами в чем ошибка в моем коде (я пытался запустить его в turbo C++)


#include<iostream.h>
class customer
{
	private:
               int billingamount[5][2];
	void acceptdetails()
	{
	for(int r=0;r<5;r=r+1)
		{
		cout<<"Enter a  mobile number:";
		cin>>billingamount[r][0];
		cout<<"Enter the billing amount";
		cin>>billingamount[r][1];
		}
	}
	void displaydetails()
	{
	for(int r=0;r<3;r=r+1)
		{
		cout<<"Mobile Number"<<billingamount[r][0];
		cout<<"\t"<<"Billing Amount"<<billingamount[r][1]<<endl;
		}
	}
};
int main()
{
	customer object;
	object.acceptdetails();
	object.displaydetails();
        return 0;

}

What I have tried:

I tried to introduce one more variable mobilenumber and tried to limit it to ten digits in the input  but it didn't work

4 Ответов

Рейтинг:
2

Jochen Arndt

Вы сохраняете номер мобильного телефона в качестве int который не может содержать значений больше, чем INT_MAX Для большинства целевых систем это 2.147.483.647, который полностью удовлетворяет требованию о 10 цифрах только тогда, когда наиболее значимая десятичная цифра меньше 2.

Для хранения таких больших целых чисел вы должны использовать тип, использующий более 32 бит (обычно 64 бита), например long long или int64_t (определено в <cstdint> (stdint.h) - ссылка на C++ [^]) или соответствующие беззнаковые типы unsigned long соответственно. uint64_t.


Рейтинг:
2

KarstenK

Если вы хотите сохранить только номер телефона, строка верна, но когда вам нужно еще немного поработать, лучше использовать класс с основным хранилищем в строке.

Но в классе вы можете лучше справиться с общими ловушками репрезентации строки как "+" , фигурными скобками или отсутствием этого. Это называется "нормализовать" число.

А сравнение всегда есть правосторонний по этой причине.


Рейтинг:
1

OriginalGriff

Чтобы добавить к тому, что сказал Йохен, всегда используйте соответствующие типы данных: а телефонный номер - это строка, а не число - вы не можете ничего добавить к нему, разделить его на 6 или вычислить, является ли он простым и получить разумный результат, поэтому вы вообще не должны хранить его в числовом поле. Например, некоторые телефонные номера содержат нечисловые цифры: +44 777 7777 777 например, где "+44" означает, что он международный и английский.


Рейтинг:
0

Patrice T

Еще одна причина, по которой не следует вводить int для телефонного номера, заключается в том, что он часто начинается с 0.
Используя строку, вы позволяете вводить номер телефона с интервалом, который облегчает чтение/проверку для пользователя.

01 23 45 67 89
0123 456 789
012 345 67 89