PDA

نسخه کامل مشاهده نسخه کامل : اشكال اين كجاست



MohammadJavad.T
26-09-2006, 03:12
سلام
خروجي اين برنامه بايد بگه اين عداد بر 2و3 بخش پذيرند
dim fozool,n as integer
fozool=val(text1.text
while fozool>0
n=fozool mod 10
fozool=fozool\10
if (n mod 2=0)or(n mod 3=0)then
text2.text=text2.text+str(n
end if
حالا مثلا اگه به وروديش 557898 بديم بايد 8 9 8 رو بده كه اين كار صورت نمي گيره :blink:

00110
26-09-2006, 10:58
به نظر که درست میاد ولی این خط رو درست کن
if (n mod 2=0) or (n mod 3=0) then

در ضمن عدد رو بزرگ دادی فکر کنم سرریزی شده ...

Admiral
26-09-2006, 12:09
ویرایش شد !!!

Admiral
26-09-2006, 12:30
فکر کنم الان منظورت رو متوجه شدم.

پس پست قبلی رو بی خیال شید.

ولی سوالت رو خیلی مبهم پرسیده بودی.

این کد جواب میده :

طبق معمول چون VB نصب ندارم توی Qbasic نوشتم.



برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

میشه بگی به جای 8 9 8 چه خروجی ای رو میده ؟

Admiral
26-09-2006, 12:38
در ضمن عدد رو بزرگ دادی فکر کنم سرریزی شده ...

بله سرریز (Overflow) رخ داده !

راه حل اینه که عدد رو از همون اول به Integer تبدیل نکنی.

یعنی عدد داخل Text1 رو با تابع Val به Integer تبدیل نکن. به جاش ارقام اون رو یکی یکی از انتهای رشته جدا کن و به Integer تبدیل کن و اگه بر 2 یا 3 بخشپذیر بود به Text2 اضافه کن.

موفق باشید

MohammadJavad.T
27-09-2006, 02:38
سلام
01110 اونجا كه داشتم پست ميدادم اشتب شد شرمنده
admiral مرسي دمت گرم تازه با ديدن كدت فهميدم اشكال من كجاست اگه گفتم نخندين يه خورده گيج زدم جاي end if با wend بر عكس نوشتم يعني اول wend مينوشتم بعد end if