PDA

View Full Version : ساختار ها



moh3en_f1
جمعه 27 خرداد 1390, 10:24 صبح
توی ساختار ها یا همون struct ها
وقتی تو یه قسمت یکی از ساختارها رو از نوع char تعریف میکنی مثلا به صورت زیر char num[10]s
وقتی چاپش میکنم درسته تا 10 رقم رو میگیره اما یه چیزی اضافه هم چاب میکنه

ببنید مثلا struct زیر:

struct ax {
char num[10];
char sp[30];
}


وقتی من یه مقدار برای این ساختار میگیرم: مثلاً برای num یازده کاراکتر عدد و برای sp ده کاراکتر
هنگامی که دارم چاپش میکنم به جز 10 عدد num مقداری از sp رو هم چاپ میکنه؟

سوال دیگه چطوری میشه تو همین ساختار برای نوع int محدودیت گذاشت که مثلاً 3 رقم عدد وارد کنن؟

tdkhakpur
جمعه 27 خرداد 1390, 11:20 صبح
وقتی من یه مقدار برای این ساختار میگیرم: مثلاً برای num یازده کاراکتر عدد و برای sp ده کاراکتر
هنگامی که دارم چاپش میکنم به جز 10 عدد num مقداری از sp رو هم چاپ میکنه؟

ساختار برای این کاربرد داره که شما داده های پشت سر هم رو توی یک بسته قرار بدید که در اون بسته هر داده اسمی داره که میتونید بهش دسترسی پیدا کنید.
به همین دلیل اگز سما داده های بیشتر از اندازه هر فیلد بهش بدید این قسمتی از این داده اجبارا داخل فیلد بعدی قرار میگیرند البته اگر فیلد بعدی دستخوش تغییر قرار گرفته نشه همانی میشه که شما میگویید به همین دلیل باید در ورودی برای داده های ساختار دقت کرده باشید که مقدار بیش از حد ثبت نشه.

سوال دیگه چطوری میشه تو همین ساختار برای نوع int محدودیت گذاشت که مثلاً 3 رقم عدد وارد کنن؟

شما همان نوع را از نوع int بگیرید اما ابزاری را که برای ورودی استفاده میکنید رو تنظیم کنید که 3 عدد بگیره .

moh3en_f1
جمعه 27 خرداد 1390, 13:11 عصر
1- چه جوری دقت کنیم که بیشتر ثبت نشه ؟

2- ابزار رو چه جوری برای ورودی تنظیم کنیم که یه عدد 3 رقمی بگیره و بقیش رو محاسبه نکنه ؟ منظورتون اینه که اگه مثلا بزرگتر از 999 بود پیغام بده بگه عدد اشتباست؟

BeginnerProgrammer
جمعه 27 خرداد 1390, 13:48 عصر
برای اینکه بیشتر ثبت نشه میتونید از دستور cin.get(num,11) استفاده کنید (باید سایز num هم 11 بشه تا بتونه 10 رقم از ورودی بگیره).