View Full Version : چگونه Long Int دریافت کنم؟
روح اله معینی زاده
شنبه 13 خرداد 1385, 08:22 صبح
سلام خدمت دوستان عزیز
من تازه کار هستم. در درسهایمان برای تعریف یه عدد مثلاً 6 رقمی، روی ورق از دستور unsigned long int استفاده میکنیم و برنامه رو مینویسیم.
من خودم اومدم و اون رو روی سیستم دوباره نویسی کردم. اما هنگام اجرای برنامه، متوجه شدم که مقداری که متغیرم میگیره از 65535 بیشتر نمیشه، یعنی همون unsigned int !!!
چه کاری انجام دهم که بتوانم از اعداد بیشتر از این هم استفاده کنم؟
من مینویسم:
scanf("%d", &x)
که البته x رو از قبل به روشی که در بالا گفتهام تعریف کردهام.
البته از i% هم استفاده کردهام که نتیجه هیچ فرقی نکرد. درضمن بنده از ++Borland C نسخه 3.1 استفاده می کنم.
در نهایت بی زحمت اگه جواب سوال فوق رو دادید، نحوهی چاپ اون رو هم اگه فرق میکنه، بفرمایید.
با احترام- خدانگهدار
Anti_Evil
شنبه 13 خرداد 1385, 09:10 صبح
اگه اشتباه نکنم scanf یه فرمت برای ورودی داشت که "ld%" بود.
علامت درصد + L کوچک + D کوچک.
فکر میکنم اون کمکت کنه ....
#include <stdio.h>
void main()
{
unsigned long int _Golabi;
scanf( "%ld", &_Golabi );
printf("%ld", _Golabi);
}
با تشکر،
هادی
mzjahromi
شنبه 13 خرداد 1385, 17:04 عصر
اینم روش خوبیه
gets(s)
x=atol(s)
rasep1983
پنج شنبه 18 خرداد 1385, 09:44 صبح
این جور مسایل ظریف رو میتونی توی کتاب جعفر نژاد قمی پیدا کنی
Argonod
پنج شنبه 18 خرداد 1385, 15:11 عصر
اینم روش خوبیه
کد:
gets(s)
x=atol(s)
اگه ممکنه مزیت این روش رو بفرمایید. و اینکه چرا باید یک رشته دریافت کنیم بعد تبدیل به عدد کنیم در حالی که مستقیما میتونیم عدد دریافت کنیم.
روح اله معینی زاده
شنبه 20 خرداد 1385, 07:19 صبح
با سلام خدمت همه دوستان
از جوابهایی که دادید متشکرم. من از روش ld% استفاده کردم.
از راهنمایی شما کمال تشکر را دارم.
با احترام- خدانگهدار
mzjahromi
شنبه 20 خرداد 1385, 07:58 صبح
اگه ممکنه مزیت این روش رو بفرمایید. و اینکه چرا باید یک رشته دریافت کنیم بعد تبدیل به عدد کنیم در حالی که مستقیما میتونیم عدد دریافت کنیم.
Scanf و امثال اون معمولا دارای یک سری مشکلات هستند که تو برنامه های بزرگتر مشخص میشه. ضمن اینکه کنترلشون هم سخت تره ولی برای برنامه های ساده و معمولی میشه ازشون استفاده کرد. حتی تو بعضی شرایط از همون Gets هم نمی تونی استفاده کنی و مجبوری کاراکتر به کاراکتر اطلاعاتت رو دریافت کنی تا بتونی کنترل بیشتری روشون داشته باشی%
Argonod
یک شنبه 21 خرداد 1385, 04:09 صبح
Scanf و اثال اون معمولا دارای یک سری مشکلات هستند که تو برنامه های بزرگتر مشخص میشه
اگه ممکنه بفرمایید چه پیغام خطایی گرفتید و یا اینکه به چه مشکلی برخورد کردید؟ برای اینکه من دفعه اول هست که به یک همچین موضوع جالبی برخورد کردم.
ضمن اینکه کنترلشون هم سخت تره
منظور شما از کنترل چی هست؟ و اینکه چرا کنترل آن سخت است؟
حتی تو بعضی شرایط از همون Gets هم نمی تونی استفاده کنی و مجبوری کاراکتر به کاراکتر اطلاعاتت رو دریافت کنی تا بتونی کنترل بیشتری روشون داشته باشی
خب این یک مساله واضحی هست چون اگر غیر از این بود تابع دیگه ای برای گرفتن کاراکتر وجود نمیداشت.
اما مساله اینه که با وجود تابعی خاص برای اعداد چرا باید از تابعی که جهت رشته های حروف اختصاص داده شده، استفاده شود؟
mzjahromi
یک شنبه 21 خرداد 1385, 06:28 صبح
اگه ممکنه بفرمایید چه پیغام خطایی گرفتید و یا اینکه به چه مشکلی برخورد کردید؟ برای اینکه من دفعه اول هست که به یک همچین موضوع جالبی برخورد کردم.
پیغام خطا نه.
یکی از مشکلات اینه که کاراکتر فاصله بین ورودیها به منزله اتمام ورود اطلاعات با یک متغیر هست.
شما سعی کنید یه برنامه ورود اطلاعات پرسنل رو با یک نظم مناسب بنویسید.(اینو گفتم چون امکانش نیست دقیقا بگم چطوری مشکل بوجود میاد باید تو عمل ببینید.)
منظور شما از کنترل چی هست؟ و اینکه چرا کنترل آن سخت است؟
به جواب قبلی نگاه کنید.
خب این یک مساله واضحی هست چون اگر غیر از این بود تابع دیگه ای برای گرفتن کاراکتر وجود نمیداشت.
منظور من این نیست. گاهی اوقات همین عدد رو هم با getch میگیری چون نمیخواهی کاراکترهای غیر عددی وارد بشه و بعد برنامه ات خطا بده(یه جورائی به سوالات قبل هم مرتبط میشه)
اما مساله اینه که با وجود تابعی خاص برای اعداد چرا باید از تابعی که جهت رشته های حروف اختصاص داده شده، استفاده شود؟
توابع معرفی شده همیشه در شرایطی احتیاجات شما رو براورده نمیکنن و در بعضی شرایط حتی ساده ترین توابع رو هم مجبور میشید دوباره بنویسید
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.