PDA

View Full Version : سوال: چگونه مقدار یک متغیر رو می تونم زیاد کنم؟



motherboard
یک شنبه 29 دی 1392, 11:04 صبح
سلام.خسته نباشید.در یک برنامه ساده با for میتونم مثلا از i=0 تا i=100 و i++ رو اعداد 1 تا 100 رو بشمارم اما وقتی می خوام یه عدد بزرگی مثل 100000000000 رو جایگزین کنم.برنامه اجرا نمیشه.ایا باید از دستور خاصی استفاده کرد؟با تشکر.

amirhossein.ha
یک شنبه 29 دی 1392, 12:05 عصر
اگه منظورتون متغیر بزرگتره میتونید از unsigned long long int استفاده کنید
این بزرگترین نوع متغیر در c++ هست و تقریبا تا 18 رقم رو میتونه نگه داره از این بزرگ تر نیست

ayub_coder
یک شنبه 29 دی 1392, 12:06 عصر
هر عددی یه محدوده ای داره . بستگی به نوع متغییری که برای i تعریف کردی داره. نوع بزرگتری مثل double بگیر

omidshaman
یک شنبه 29 دی 1392, 12:13 عصر
سلام شما حداکثر مقداری که میتونی توی int بزاری محدوده
اگر بیشتر بخوای باید از unsigned long long استفاده کنی که اینم باز محدوده .
کد زیر max عددی رو که توی هر تایپی میشه گذاشت برات مینویسه :

#include <iostream>
#include <limits>

int main()
{
std::cout<<"\n\nshort int\n";
std::cout<< std::numeric_limits<short int>::lowest() << '\n'
<< std::numeric_limits<short int>::max() << "\n" ;

std::cout<<"\n\nint\n";
std::cout<< std::numeric_limits<int>::lowest() << '\n'
<< std::numeric_limits<int>::max() << "\n" ;

std::cout<<"\n\nunsigned int\n";
std::cout<< std::numeric_limits<unsigned int >::lowest() << '\n'
<< std::numeric_limits<unsigned int>::max() << "\n" ;

std::cout<<"\n\nlong\n";
std::cout<< std::numeric_limits<long>::lowest() << '\n'
<< std::numeric_limits<long>::max() << "\n" ;

std::cout<<"\n\nunsinged Long \n";
std::cout<< std::numeric_limits<unsigned long>::lowest() << '\n'
<< std::numeric_limits<unsigned long>::max() << "\n" ;

std::cout<<"\n\nLong Long\n";
std::cout<< std::numeric_limits<long long>::lowest() << '\n'
<< std::numeric_limits<long long>::max() << "\n" ;

std::cout<<"\n\nunsinged Long Long\n";
std::cout<< std::numeric_limits<unsigned long long>::lowest() << '\n'
<< std::numeric_limits<unsigned long long>::max() << "\n" ;

// for(unsigned long long i=0;i<100000000000LL;i++)
// {}

}


اگر عددت بزرگتره باید از library های دیگه مثل Infinit - BigInt و.... استفاده کنی .

amirhossein.ha
یک شنبه 29 دی 1392, 13:04 عصر
امید درست میگه فقط کدش یه مشکلی داره lowest تعریف نشده اس باید از min استفاده کرد :‌

#include <iostream>
#include <limits>
using namespace std;
int main()
{
ios_base::sync_with_stdio(false);
cout<<"\n\nshort int\n";
cout<< numeric_limits<short int>::min() << '\n'<< numeric_limits<short int>::max() << "\n" ;

cout<<"\n\nint\n";
cout<< numeric_limits<int>::min() << '\n'<< numeric_limits<int>::max() << "\n" ;

cout<<"\n\nunsigned int\n";
cout<< numeric_limits<unsigned int >::min() << '\n'<< numeric_limits<unsigned int>::max() << "\n" ;

cout<<"\n\nlong\n";
cout<< numeric_limits<long>::min() << '\n'<< numeric_limits<long>::max() << "\n" ;

cout<<"\n\nunsinged Long \n";
cout<< numeric_limits<unsigned long>::min() << '\n'<< numeric_limits<unsigned long>::max() << "\n" ;

cout<<"\n\nLong Long\n";
cout<< numeric_limits<long long>::min() << '\n'<< numeric_limits<long long>::max() << "\n" ;

cout<<"\n\nunsinged Long Long\n";
cout<< numeric_limits<unsigned long long>::min() << '\n'<< numeric_limits<unsigned long long>::max() << "\n" ;
return 0;

}

omidshaman
یک شنبه 29 دی 1392, 14:00 عصر
lowest از c++11 به بعد تعریف شده ...

mostafi1391
یک شنبه 29 دی 1392, 15:02 عصر
ممنون میشم اگه در باره ی lowest خودتون توضیح بدین

ضمنا این کتابخونه های bigint و infinite رو چطوری میشه ازشون استفاده کردن ؟ فقط با include کردن؟

omidshaman
یک شنبه 29 دی 1392, 18:01 عصر
هیچی کار همون min رو می کنه اون 2 تا کده یکین.
باید دانلود کنی بعد build کنی بعد استفاده کنی .
این مثلا :
https://gmplib.org/