
| نیازمندی های نرم افزاری سیستم : |
| Windows XP .Net Framework 2.0 |
دریافت فایل
نویسنده : حامد حبیبی اقدم
الگوریتم ژنتیک برای حل مساله n- وزیر

| نیازمندی های نرم افزار |
Windows XP .Net Framework 2.0 |
دریافت فایل
مربع هشت ( 8-puzzle )
در یک مربع 3 در 3 که شامل 9 خانه کوچک است ، هشت مربع شماره گذاری شده قرار داده ایم . یکی از خانه ها نیز خالی است . مسئله با یک حالت اولیه شروع می شود . هدف چیدن مربع های شماره گذاری شده به ترتیب زیر است ( حالت هدف ) :

نکته مسئله مربع هشت اینسنت که فقط مربع های اطراف خانه خالی را می توانیم با خانه خالی تعویض کنیم . یعنی با حرکت دادن مکرر خانه خالی به چپ ، راست ، بالا و پایین باید به حالت هدف برسیم .
برای این منظور می توان از روش جستجوی A* استفاده کرد . برای این مسئله چند هیوریستیک مختلف وجود دارد . دو هیوریستیک معمول به صوزت زیر هستند :
1) هیوریستیک اول سعی می کند خانه خالی را طوری جابجا کند که تعداد مربع هایی را در خانه خود قرار نگرفته اند ، صفر شود . یعنی این هیوریستیک بر اساس تعداد مربع هایی که در خانه خود قرار نگرفته اند ، جستجو انجام می دهد.
2) هیوریستیک دوم مجموع فاصله های بلوک شهری هر مربع از خانه خود را محاسبه کرده و سعی می کند خانه حالی را طوری حرکت دهد که این مقدار را به صفر برسد
نام دوره آموزشی
مدرس
آموزش Internet - مهارت هفتم از ICDL
بيتا ضرابيان
آموزش Photoshop
فاطمه حسني
آموزش HTML
بيتا ضرابيان
آموزش مباحث پيشرفته در طراحي صفحات وبjavascript - SQL - ADO
نوشين ابراهيم زاده - مهدي سيف اللهي
لیست اسناد و منابع اینترنتی
امیر حسین مرتضوی
آموزش متدولوژی و تکنولوژی طراحی وب CIW
بیتا ضرابیان
مفاهیم Java و Active-x
ریحانه عارفی مقدم
آشنایی با مفاهیم و اصطلاحات اینترنتی
بیتا ضرابیان
مفاهیم پایه فن آوری اطلاعات - مهارت اول از ICDL1
ریحانه عارفی مقدم
آموزش Word - مهارت سوم از ICDL
ویدا زارعی
آموزش Power Point -مهارت ششم از ICDL
مهشید ملالی
مقدمه ای بر ویروسها و برنامه های مخرب
آرش رضا پور خان
آشنایی با Access - مهارت پنجم از ICDL
فائزه شهيدي
كد نويسي با Java-Script
بيتا ضرابيان
آموزش Excel2000 - مهارت چهارم از ICDL
مدیا صداقت کیش
آموزش مهارت رفتاري
ابراهيم خليل اخوان - محمود علواني
آموزش شبكه هاي بي سيم - Wireless Network
هومن عزيزي
آموزش Front - Page
پرهام باغستاني-ريحانه عارفي مقدم
آموزش Flash-mx
آزاده ماه آور پور
آموزش Windows-XP مهارت دوم از ICDL
ريحانه عارفي مقدم

چند سایت معتبر برای تبدیل کد:
۲- carlosag.net
این هم یک برنامه برای تبدیل کد Paste As Visual Basic
این هم تبدیل پروژه #C به VB .
بانکهای اطلاعاتی معمولا قلب یک وب سایت یا یک برنامه Web based و یا Web Enabled را تشکیل میدهند. زیرا اطلاعاتی که باید در سایت نمایش داده شوند در آنها ذخیره میگردد. بر اساس مدلهای مختلف برنامه سازی، ترکیبی از یک بانک اطلاعاتی و یک زبان اسکریپت یا کد نویسی و احتمالا چند لایه دیگر میتوان برنامه ای نوشت که مورد رضایت مشتری قرارگیرد و اورا قانع به پرداخت هزینه های برنامه نویسی نمود.
گاه با اینکه تمام جوانب برنامه نویسی را رعایت کرده ایم ممکن است متوجه وجود برخی حفره ها و یا خطاها در برنامه های خود شویم. در صورتی که این حفره ها به دلیل اشکالات موجود در ابزارهای استفاده شده در برنامه ما، مانند بانکهای اطلاعاتی باشند، میتوان به نصب SERVICE PACK ها و یا ارتقاء به نگارش جدید این برنامه ها مشکل را حل نمود، اما در اکثر موارد اشکال و حفره های موجود در یک برنامه وبی به اشکالات مربوط به “تزریق کدهای SQL” یا همان SQL Injection مربوط میشود….
نویسنده: سعید یزدانی
توضیح : این گفتگو در تاریخ 19 مهرماه در سایت BootDaily منتشر شده است. در این مصاحبه پرسش ها توسط BD (کوتاه شده عبارت Boot Daily) و پاسخ ها با نام Chris (مدیر بخش گسترش و بازاریابی مایکروسافت) مشخص شده اند. همچنین منظور از DX10 در این مصاحبه DirectX 10 می باشد.

BD : لطفا اهمیت DX10 برای دوست داران بازی ها را در یک جمله توضیح دهید.
Chris : ما در مایکروسافت DirectX 10 را به عنوان بلند ترین جهش در کیفیت و کارایی گرافیک در صنعت کامپیوتر های شخصی از زمان پیدایش DirectX که به زمان ویندوز 95، و تحولی در زمینه بازی های کامپیوتری و تکنولوژی مربوط به آن می دانیم.
BD : و اهمیت آن برای کاربران عادی؟
Chris : بله، DirectX 10 بالاترین کیفیت و کارایی گرافیکی را در پلاتفرم ویندوز را به همراه خواهد داشت که نتیجه آن تجربه ای باورنکردنی و دور از ذهن برای کاربران عادی خواهد بود.
ترجمه و تدوين: علي حسيني ماهنامه شبکه
اشاره :
يك بازي كامپيوتري را روي كامپيوترتان اجرا ميكنيد. فعلاً كارت گرافيك شما روي اسلاتAGP سوار ميشود، پردازشگر سلرون داريد و ... پس از چند ماه يا چند سال كامپيوتر جديدي ميخريد. اكنون اسلات كارت گرافيكي شما PCI Express است و يك پردازشگر 64 بيتي داريد. همان بازي را روي اين كامپيوتر هم نصب و اجراميكنيد! شايد به نظر طبيعي ميآيد كه همه چيز بايد همينطور باشد. اما چگونه يك بازي روي كامپيوترهايي با تراشهها و سختافزارهاي مختلف و گاه فناوري متفاوت اجرا ميشود؟ APIهاي گرافيكي يا همان رابطهاي برنامهنويسي، بخش بزرگي از اين مشكل را حل ميكنند و امكانات گسترده ديگري را نيز در اختيار برنامهنويسان و توسعهدهندگان بازي و برنامههاي چندرسانهاي قرارميدهند. OpenGL وDirectX، دو مجموعه API گرافيكي و صوتي هستند كه براي آسانتر ساختن توسعه بازيها و نرمافزارهاي چندرسانهاي طراحي شدهاند.
اما يكي از امكانات مفيدي كه visual studio در اختيار ما مي ذاره اينه كه مي تونيم خط به خط برنامه رو دنبال كنيم تا اشكالاتمون رو به طور دقيق پيدا كنيم.
براي اين كار ما از break points استفاده مي كنيم:
1)براي قرار دادن break point بر روي خط مورد نظر كافيست بر روي حاشيه كنار صفحه اصلي برنامه
و خط مورد نظر كليك كنيد و يا با رايت كليك كردن بر روي خط مورد نظر insert breakpoint را انتخاب كنيد. براي نمونه يه برنامه دلخواه رو باز كنيد و بر روي دو خط از آن (يا هر تعداد خطي كه مايليد) breakpoint را قرار دهيد(يك كره قرمز رنگ مشاهده مي كنيد).
2)بعد از قرار دادن breakpoint ها بر روي Build>Build Solution كليك كنيد تا برنامه compile شود بعد Debug>Start را انتخاب كنيد.برنامه به محض رسيدن به اولين breakpoint متوقف مي شود.
3)حالا شما مي تونيد داده هاتون رو تا اين قسمت برنامه چك كنيد. يعني اگر ماوس رو روي هر متغير برنامه ببريد مقدار متغير ظاهر مي شه.
4)براي ادامه دادن اين كار تا breakpoint بعدي Debug>Continue رو انتخاب كنيد...
و بدين ترتيب تا آخر برنامه مي تونيد اشتباهاتتون رو اصلاح كنيد.
البته براي كار با breakpoint بهتره چند نكته رو بدونيد:
1)قرار دادن breakpoint در مكان هايي كه تاثيري در برنامه ندارند(مثلا خطوط خالي يا comment ها )
باعث مي شه تا breakpoint در خط بعدي عمل كنه.
2)براي غير فعال كردن breakpoint كافيست روي علامت آن در حاشيه سمت چپ كليك كنيد
از این رو این لینک رو برای دانلود این Pdf در این جا قرار میدم چون اکثر اشکالات دوستان عزیز در برنامه نویسی به زبان ++C ناشی از نشناختن امکانات فوق العاده زبان سی پلاس پلاس است.
تعيين رنگ زمينه:
|
<div id="m1" style="background:yellow;">Computer Union</div> |
در صورتي كه بخواهيد لايه شفاف باشد عبارت transparent را بلافاصله بعد از رنگ بنويسيد.
|
<div id="m1" style="background:yellow;"> |
مثلا در مثال بالا لايه قرمز رنگ شفاف است و ديده نمي شود.
نمايش عكس در پس زمينه لايه:
توجه داشته باشيد در صورتي كه براي لايه هم تصوير زمينه و هم رنگ زمينه انتخاب شوداولويت نمايش با تصوير است.
|
<div id="m2" style="background-image:url(1.jpg); ">Computer Union</div> |
مثلا در مثال فوق عكس براي زمينه انتخاب شده است.در صورتي كه بخواهيد تصويري نمايش داده نشود عبارت none را بجاي آدرس تصوير قرار دهيد.شايد اين نكته بي مورد به نظر برسد ولي در صورتي كه بخواهيم با كدنويسي بين دو حالت سوئيچ كنيم لازم است.
در مثال بالا تصوير آنقدر تكرار مي شود تا كل زمينه را بپوشاند.براي جلوگيري از اين امر اين طور عمل مي كنيم:
|
<div id="m2" style="background-image:url(1.jpg); background-repeat:no-repeat">Computer Union</div> |
عبارت no-repeat موجب ميشود كه تصوير تنها يكبار نمايش داده شود.حالت پيش فرض اين خاصيت repeat مي باشد.دو حالت repeat-x و repeat-y هم هست كه به ترتيب تصوير را به صورت طولي و عرضي تكرار مي كند.
در صورتي كه تصوير تكرار شود شما مي توانيد تعيين كنيد كه اين تكرار از كدام سمت شروع شود.همچنين از لحاظ ارتفاع كدام مقطع از تصوير نمايش داده شود.
|
<div id="m2" style="background-image:url(1.jpg); background-position=center left;">Computer Union</div> |
پارامتر اول تعيين مي كند كه وسط تصوير نمايش داده شود و پارامتر دوم هم تعيين مي كند كه چينش تصاوير از سمت چپ شروع شود.در صورتي كه تنها يك پارامتر تعيين شود به عنوان پارامتر دوم محسوب خواهد شد.
نمايش كادر :
شما مي توانيد نوع ، رنگ و ضخامت كادر را تعيين كنيد.
|
<div id="m2" style="border-style=solid; border-color=red; border-width=thin">Computer Union</div> |
در مثال بالا border-style كادر را تعيين مي كند و مي تواند مقادير زير باشد.
dotted براي كادر نقطه چين ،
dashed براي كادر خط چين ،
solid براي كادر خطي ،
groove / ridge / inset / outset هم انواع كادر هاي سه بعدي را رسم مي كنند.
border-width هم ضخامت را تعيين مي كند.مقدار پيش فرض اين خاصيت medium مي باشد.دو مقدار thin/thick هم به ترتيب ضخامت را كوچتر و بزرگتر از حد پيش فرض مي كنند.البته شما مي توانيد مقدار دلخواه خود را همراه با واحد آن وارد كنيد.واحدها عبارتند از:
cm, mm, in, pt, pc, px
نكته آخر در مورد كادر ها اين است كه با استفاده از خصوصيات شما مي توانيد خطوط هر طرف را كه مايليد نمايش دهيد و نوع و رنگ و ضخامت را هم مشخص كنيد.
border-bottom / border-left / border-right / border-top
تعيين رنگ متن:
|
<div id="m2" style="color:red;">Computer Union</div> |
تعيين اسكرول براي لايه:
اين مورد اين امكان رو فراهم مي كند كه در فضاي كمي عكس بزرگ يا متني زيادي رو قرار بدهيم.
|
<div id="m2" style="overflow=scroll; height=100; width=100;">Computer Union Computer Union Computer Union Computer Union Computer Union</div> |
همچنين به جاي scroll مي توان عبارت auto رو قرار داد كه در صورت لزوم اسكرول را ظاهر مي كند.
- CSS مخفف کلمه Cascading Style Sheets ميباشند.
- اولين ورژن استايلها در سال ۱۹۹۶ ساخته شد. که اولين ورژن آن CSS1 بود.
- ديگر وژن آن CSS2 مي باشد که در سال ۱۹۹۸ ساخته شد که بيشتر براي ويرايش صفحات، نحوه نمايشها تگها و ... کاربرد دارد.
- فايل استايلها با فرمت CSS ذخيره ميشوند.
انواع استايلها:
۱. Inline Style: اين نوع استايل در داخل تگهاي HTML به كار گرفته ميشوند، و اين استايل فقط بروي همان تگ به خصوص تاثير خواهد گذاشت و به صورت زير نوشته خواهد شد.
<tag style="Style Declarations">
Example:
<p style="font-family: Tahoma">This is a paragraph</p>
در مثال بالا با استفاده از حالتهاي مختلف در استايلها نوع فونت آنرا تغيير داديم و همانطوري که در تعريف اين نوع استايل نوشتيم اين استايل فقط و فقط تغييرات را به روي همين پاراگراف اعمال خواهد کرد.
۲. Embedded or Global Style: در اين نوع، استايل نوشته شده در تمامي صفحه تاثير خواهد گذاشت، اينرا بين دو تگ (<head></head>) به صورت زير نوشته خواهد شد.
<style>
<!--
Style Declaration
-->
</style>
Example:
<head>
<style type="text/css">
<!--
p { color: red; text-align: left; font-size: 8pt }
-->
</style>
</head>
اين نوع حالت از تغييرات تعريف شده بروي تمامي تگها پاراگراف اعمال خواهد شد که رنگ متن: قرمز، جهت متن: چپ، و اندازه فونت ۸ پوينت خواهد بود. توجه داشته باشيد در اين مثال سه حالت مختلف يک استايل را براي تگ پاراگراف تعريف کرديم که با استفاده از (;) حالتهاي مختلف آن از هم جدا شدند.
اگر بخواهيد اين حالت نوشته شده را براي چند تگ ديگر اعمال کنيد مي توانيد تگها را بااستفاده از کاما (,) از هم جدا کنيد براي مثال:
h1, h2, h3, h4 { color: gold; font-family: sans-serif {
۳. Linked or External style sheet: نوع آخر هم معروف به استايلهاي خارجي هستند كه به صورت لينك فايل استايل را به صفحات خود لينك ميدهيد. فايلهاي استايل با فرمت CSS ذخيره ميشوند و به صورت زير به صفحات لينك داده ميشود.
<link href="url" rel="relation type" type="link type">
URL: آدرس فايل استايل. : Relation type برابر با stylesheet هست. link type : هم با text/css برابر ميباشد.
Example:
<head>
<link rel="stylesheet" type="text/css" href="mystyle.css">
</head>
در اين نوع از استايلها بعد از اينکه فايل استايل خود را آماده کرديد آنرا با فرمت CSS ذخيره کرده و آنرا همانند بالا فايل استايل را به قالب لينک مي کنيم. براي راحت بود در کار مي توانيد ابتدا استايلها را به صورت Internal استفاده کرده و بعد از اينکه کارتان تمام شد کدهاي نوشته شده بين دو تگ (<style></style>) را در نت پد کپي کرده و آنرا با فرمت CSS دخيره کرده و سپس با استفاده از فرمول بالا آن فايل را به قالب لينک دهيد. يکي از مزيتهاي اين نوع استايل اين ميباشد که مي توانيد با داشتن يک فايل استايل براي چندين صفحه استفاده کنيد و از ديگر مزيت هاي آن با اين کار کدهاي قالب را به چند فايل تقسيم کرده و قالب را منظم تر ميشود.
این دو سری کد شاید بتونه کمکی براشون باشه.
قبل از دریافت کد سوم این توضیحات رو که نویسنده کدها ذکر فرمودند بخونید :
اين كلاس ها از آخر كتاب ذخيره و بازيابي (جعفر نژاد) تايپ شده. اما error هاش حذف نشده. كلاس هايي غير از btree هم داخلش داره كه در واقع زير مجموعه اون هست. يک برنامه هم نوشته شده كه از كلاس ها استفاده مي كنه با نام tstbtree.
موفق باشید
باز هم سلام
دوستاني كه درس معماري كامپيوتر رو گذرانده باشن ، با زبان Verilog كه يكي از زبانهاي توصيف سخت افزار هست آشنايي دارن و باهاش كار كردن. از اونجايي كه لازم هست تا با زبانهاي ديگه هم آشنايي داشته باشيم ، فايل Zip شده اي كه شامل 5 بخش و آشنايي و مروري بر زبان VHDL هست براتون قرار داديم.
اميدواريم استفاده كنيد.
جهت توضیح بیشتر این الگوریتم برای عزیزانی که آشنایی ندارند یا توضیح بیشتری رو مطالبه می کنند دو فایل قرار داده شده
۱ - بخشی از اسلایدهای جناب آقای دکتر مینایی ( استاد محترم این درس ) دریافت فایل
۲ - یک فایل Pdf دریافت فایل
انشاا... که مورد توجه علاقه مندان قرار گرفته باشه
موفق باشید
براي نوشتن برنامه های کاربردی لازمه که با توابع API آشنا باشیم.
اما API چیست؟
ویندوز برای کنترل خود توابع و روال هایی را در اختیار برنامه نویسان می گذارد که در Dll های خاصی قرار داشته و به نام توابع API ( Application programming Interface )
معروفند. این توابع دارای قدرت و توانایی بالایی می باشند و قابل استفاده توسط برنامه نویسان Delphi, C++, Visual c, Visual Basic و غیره می باشند.
* کاربرانی که برنامه های خود را در حالت Win32 Console Application اجرا می کنند لازمست که هدر فایل windows.h را در برنامه های خود قرار دهند.
#include <windows.h>
یکی از مهم ترین توابعی که در اکثر برنامه ها مورد استفاده قرار می گیرد تابع
ExitWindowsEx ( UINT uFlags, DWORD dwReason );
از این تابع برای Restart ، Logoff و یا Shutdown کردن کامپیوتر استفاده می شود. همانطور که در prototype این تابع نوشته شده دو متغیر را به عنوان ورودی می گیرد. متغیر اول می تواند مقادیر
EWX_LOGOFF
EWX_POWEROFF
EWX_REBOOT
EWX_SHUTDOWN
و یا مقدار صحیح متناظر با هر متغیر را بپذیرد. پارامتر دوم علت فراخوانی این تابع می باشد که مقدار آن را صفر قرار دهید. پس برای Logoff کردن کاربر کد زیر را داریم :
ExitWindowsEx ( EWX_LOGOFF, 0 ); // ExitWindowsEx( 0, 0 )
کد لازم برای ReStart کردن کامپیوتر
ExitWindowsEx ( EWX_REBOOT, 0 ); // ExitWindowsEx( 2, 0 )
کد لازم برای ShutDown کردن کامپیوتر
ExitWindowsEx ( EWX_SHUTDOWN, 0 ); // ExitWindowsEx( 3, 0 )
سلام
براي آزار و اذيت آماده ايد ؟!!! ![]()
مي خواهيم با استفاده از VB برنامه اي بنويسيم كه فرد با اجرا كردنش ، تمام آيكون هاي دسكتاپ رو ناپديد ميكنه و شايد كمي بترسه و .... پس هدف ما اين هست : پنهان كردن Icon هاي desktop در Visual Basic . اگر با VB كار نكرديد و آشنايي نداريد اصلا مهم نيست. مراحل زير رو طي كنيد و قطعا موفق ميشيد.
در اين برنامه اگرCtrl + alt + delete بزنه برنامه رو مي تونه remove كنه ولي اثرش از بين نمي ره و بايد show desktop رو بزنه ( اما باز هم خلاص نميشه و بايد حتما log off كنه يا reset كنه )
حتي مي تونيم برنامه رو طوري تنظيم كنيم كه در task manager هم نشان داده نشه ( كه باشه براي بعد )
خب .......
VB رو اجرا كنيد.
مسير زير رو طي كنيد :
File>New>Standard EXE
سمت راست VB ( قسمتي كه title اون Project-project1 هست ) بر روي صفحه كليك راست كنيد و Add>module رو انتخاب كنيد و سپس open.
در پنجره اي كه باز ميشه اين كدها رو قرار بديد.
Option Explicit
Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Declare Function SetWindowPos Lib "user32" (ByVal hWnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Public Const SWP_HIDEWINDOW = &H80
Public Const SWP_SHOWWINDOW = &H40
Declare Function ShowCursor& Lib "user32" (ByVal bShow As Long)
سپس form1 رو كليك كنيد ، بر روي صفحه form ، دوبار كليك كنيد تا محيط كد باز بشه و كدهاي زير رو وارد كنيد
Option Explicit
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Private Declare Function ShowWindow Lib "user32" (ByVal hWnd As Long, ByVal nCmdShow As Long) As Long
Private Declare Function SystemParametersInfo Lib "user32" Alias "SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long, lpvParam As Any, ByVal fuWinIni As Long) As Long
Private Const SPI_SCREENSAVERRUNNING = 97
Private Sub Form_Load()
Dim hWnd As Long
hWnd = FindWindowEx(0&, 0&, "Progman", vbNullString)
ShowWindow hWnd, 0
End Sub
چون مي خوايم پنجره اين برنامه قابل رويت نباشه در قسمت Properties-form1 در منوي Alphabetic گزينه visible رو پيدا كنيد و مقدار اون رو از true به false تغيير بديد.
F5 رو بزنيد تا برنامه اجرا بشه !
كليه برنامه ها رو Minimize كنيد و دسكتاپ خالي رو ببينيد و لذت ببريد !!!
عجله نكنيد ! برنامه رو با هر اسمي كه دوست داريد save كنيد و بعد به فكر چاره باشيد.
اگر هم بخواهيد مي تونيد فايل exe برنامه رو جدا save كنيد. File>make project1.exe ، برنامه رو با هرنامي كه مي خواهيد ذخيره كنيد !
نكته : در قسمت properties-form1 ، Icon رو پيدا كنيد و Icon مناسب ( آيكوني كه حس كنجكاوي طرف مقابل رو براي اجراي اين برنامه برمي انگيزه ) انتخاب كنيد.
اين آيكوني هست كه برنامه با اون نشون داده ميشه ،بهتر هست فايل exe رو روي desktop ، ذخيره كنيد تا هر كس كه اومد سراغ سيستم شما و اين برنامه رو ديد و اجرا كرد اذيت بشه !!!!!
حتي مي تونيد اين برنامه رو به طرق مختلف براي دوستانتون ارسال كنيد و .... بقيه اش با خودتون !
تا آزار و اذيت بعدي فعلا ![]()
موفق باشيد
Finds the difference between two times.
double difftime( time_t timer1, time_t timer0 );
|
Routine |
Required Header |
Compatibility |
|
difftime |
|
ANSI, Win 95, Win NT |
For additional compatibility information, see Compatibility in the Introduction.
Libraries
|
LIBC.LIB |
Single thread static library, retail version |
|
LIBCMT.LIB |
Multithread static library, retail version |
|
MSVCRT.LIB |
Import library for MSVCRT.DLL, retail version |
Return Value
difftime returns the elapsed time in seconds, from timer0 to timer1. The value returned is a double-precision floating-point number.
Parameters
timer1
Ending time
timer0
Beginning time
Remarks
The difftime function computes the difference between the two supplied time values timer0 and timer1.
Example
/* DIFFTIME.C: This program calculates the amount of time
* needed to do a floating-point multiply 10 million times.
*/
#include
#include
#include
void main( void )
{
time_t start, finish;
long loop;
double result, elapsed_time;
printf( "Multiplying 2 floating point numbers 10 million times...\n" );
time( &start );
for( loop = 0; loop < 10000000; loop++ )
result = 3.63 * 5.27;
time( &finish );
elapsed_time = difftime( finish, start );
printf( "\nProgram takes %6.0f seconds.\n", elapsed_time );
}
Output
Multiplying 2 floats 10 million times...
Program takes 2 seconds.
مرجع : MSDN Library
1 – چاپ پرچم جمهوری اسلامی ایران و حرکت کلمه مبارک الله در بالا و پایین پرچم.
paint macro nrow,frow,fcol,erow,ecol,attribute
mov ah,6h
mov al,nrow
mov ch,frow
mov cl,fcol
mov dh,erow
mov dl,ecol
mov bh,attribute
int 10h
endm
;-------------------------------------------------
xy macro row,col
mov ah,2h
mov dh,row
mov dl,col
mov bh,0
int 10h
endm
;-------------------------------------------------
print macro msg
mov ah,9
lea dx,msg
int 21h
endm
;-------------------------------------------------
finish macro
mov ax,4c00h
int 21h
endm
;-------------------------------------------------
.model small
.data
;-------------------------------------------------
msg db 'A',70h,'l',70h,'l',70h,'a',70h,'h',70h,' ',70h
last db ?
;-------------------------------------------------
msg1 db ' w $'
msg2 db '((|))$'
msg3 db ' ^ $'
;-------------------------------------------------
.code
main proc
mov ax,@data
mov ds,ax
;*******clear
paint 25,0,0,24,79,00h
;*******green
paint 5,5,20,5,58,20h
;*******White
paint 5,10,20,10,58,70h
;*******red
paint 5,15,20,15,58,40h
xy 11,37
print msg1
xy 12,37
print msg2
xy 13,37
print msg3
mov ax,0b800h
mov es,ax
mov cx,2000
lea si,msg
mov di,1640
up: mov ax,[si]
mov [es:di],ax
mov [es:di+640],ax
mov ah,1
int 16h
jnz fin
add si,2
add di,2
cmp si,offset last
jne down1
mov si,offset msg
down1: cmp di,1718
jb up
mov di,1640
jmp up
fin: xy 25,0
paint 25,0,0,24,79,00h
finish
main endp
end main
2 – جمع , ضرب و تفریق 2 عدد ماکزیمم 40 رقمی.
clear macro
mov ah,6h
mov al,25
mov ch,0
mov cl,0
mov dh,24
mov dl,79
mov bh,80h
int 10h
endm
;--------------------------------------------------------------------
xy macro x, y
mov dh, x
mov dl, y
mov bh, 0
mov ah, 2h
int 10h
endm
;--------------------------------------------------------------------
print macro str
lea dx,str
mov ah,9h
int 21h
endm
;--------------------------------------------------------------------
gets macro str
mov ah,0ah
lea dx,str
int 21h
endm
;--------------------------------------------------------------------
Change macro int1,int2,int1t,int2t
local up_1,up_2,up_3,up_4
clc
mov di,0
mov si,79
mov cl,len1
sub cl,1
mov ch,0
up_1: inc di
loop up_1
mov cl,len1
mov ch,0
up_2: mov al,int1[di]
mov int1t[si],al
dec si
dec di
loop up_2 ;print newl ;print int1t
clc
mov di,0
mov si,79
mov cl,len2
sub cl,1
mov ch,0
up_3: inc di
loop up_3
mov cl,len2
mov ch,0
up_4: mov al,int2[di]
mov int2t[si],al
dec si
dec di
loop up_4 ;print newl ;print int2t
endm
;--------------------------------------------------------------------
sumn macro int1t,int2t
local up_1,up_2,up_3,up_4,up_5,up_6,up_7
comp int1t,s
cmp flag,0
jz up_4
jnz up_5
up_5: comp int2t,s
cmp flag,0
jz up_4
jnz up_6
up_6: mov flagm,1
jmp up_7
up_4: mov flagm,0
mov cl,79
mov x,cl
mov max1t,79
mov max2t,79
mov max3,79
mov dl,0
mov dh,0
push dx
up_1: mov bh,0
mov bl,max1t
mov ah,0
mov al,int1t[bx]
push ax
dec max1t
mov bh,0
mov bl,max2t
mov bh,0
mov bl,int2t[bx]
push bx
dec max2t
pop bx
pop ax
sub al,30h
sub bl,30h
add ax,bx
pop dx
add ax,dx
mov cl,10
div cl
mov dh,0
mov dl,al
push dx
or ax,3030h
mov bl,max3
mov bh,0
mov int1t[bx],ah
dec max3
dec x
jnz up_2
jz up_3
up_2: jmp up_1
up_3: pop dx
or dx,3030h
mov bl,max3
mov bh,0
mov int1t[bx],dl
up_7: endm
;--------------------------------------------------------------------
fix macro int1t
local up_4,up_5,up_6,up_7
mov y,0
push si
mov si,0
push ax
up_6: mov ah,0
mov al,int1t[si]
cmp ax,'0'
jz up_4
jnz up_5
up_4: mov int1t[si],0
inc y
inc si
jmp up_6
pop ax
pop si
up_5: mov ah,0
mov al,79
sub al,y
mov si,79
sub si,ax
mov di,0
up_7: mov ah,0
mov al,int1t[si]
mov int1t[di],al
mov int1t[si],0
inc si
inc di
cmp si,80
jnz up_7
endm
;--------------------------------------------------------------------
complat macro int_1t
local up_1
clc
mov si,79
mov al,0
inc al
up_1: mov ah,0
add al,int3[si]
sub al,int_1t[si]
add al,30h
mov subn[si],al
dec si
mov al,0
cmp si,0
jnz up_1
endm
;--------------------------------------------------------------------
subn1 macro int_1t,int_2t
local up_1,up_2,up_3,up_4,up_5,up_6
comp int_1t,s
cmp flag,0
jz up_3
jnz up_4
up_4: comp int_2t,s
cmp flag,0
jz up_3
jnz up_5
up_5: mov flagm,1
jmp up_2
up_3: comp int_1t,int_2t
cmp flag,0
jz up_6
jnz up_5
up_6: mov flagm,0
complat int_2t
sumn subn,int_1t
cmp subn[0],'0'
je up_1
jmp up_2
up_1: complat subn
up_2: endm
;--------------------------------------------------------------------
sign macro
local up_1,up_2,up_3,up_4
cmp subn[0],'0'
je up_1
jmp up_2
up_1: print signn
jmp up_4
up_2: print signp
jmp up_3
up_3: mov subn[0],'0'
up_4: fix subn
endm
;--------------------------------------------------------------------
multip macro int_1t,int_2t
local up_1,up_2,up_3,up_4,up_5,up_6
comp int_1t,s
cmp flag,0
jz up_4
jnz up_6
up_4: comp int_2t,s
cmp flag,0
jz up_5
jnz up_6
up_6: mov flagm,1
jmp up_2
up_5: mov mulm_t[79],'1'
up_3: sumn count,mulm_t
sumn mulm,int_1t
comp count,int_2t
cmp flag,0
jz up_1
jnz up_2
up_1: jmp up_3
up_2: endm
;--------------------------------------------------------------------
comp macro count,int_2t
local up_1,up_2,up_3,up_4
mov si,79
up_2: mov ah,0
mov al,count[si]
cmp al,int_2t[si]
jz up_1
jnz up_3
up_1: dec si
jnz up_2
mov flag,1
jmp up_4
up_3: mov flag,0
up_4: endm
;--------------------------------------------------------------------
.model small
.data
max1 db 40
len1 db ?
int1 db 40 dup('0'),'$'
;--------------------------------------------------------------------
max1t db 80
len1t db ?
int1t db 80 dup('0'),'$'
;--------------------------------------------------------------------
max2 db 40
len2 db ?
int2 db 40 dup('0'),'$'
;--------------------------------------------------------------------
max2t db 80
len2t db ?
int2t db 80 dup('0'),'$'
;--------------------------------------------------------------------
int_1t db 80 dup('0'),'$'
int_2t db 80 dup('0'),'$'
;--------------------------------------------------------------------
max3 db 80
len3 db ?
int3 db 80 dup('9'),'$'
;--------------------------------------------------------------------
maxn db 80
lenn db ?
subn db 80 dup('0'),'$'
;--------------------------------------------------------------------
maxm db 80
lenm db ?
mulm db 80 dup('0'),'$'
;--------------------------------------------------------------------
mulm_t db 80 dup('0'),'$'
count db 80 dup('0'),'$'
;--------------------------------------------------------------------
maxs db 80
lens db ?
s db 80 dup('0'),'$'
;--------------------------------------------------------------------
msg1 db 'Enter the first number: $'
msg2 db 'Enter the second number: $'
;--------------------------------------------------------------------
zero db '0$'
msg3 db 'X + Y = $'
msg4 db 'X - Y = $'
msg5 db 'X * Y = $'
newl db 10,13,'$'
x db ?
y db ?
z db ?
signp db '+','$'
signn db '-','$'
flag db ?
flagm db ?
;--------------------------------------------------------------------
.code
main proc
mov ax, @data
mov ds, ax
clear
xy 2,4
print msg1
gets max1
xy 4,4
print msg2
gets max2
change int1,int2,int1t,int2t
sumn int_1t,int1t
sumn int_2t,int2t
xy 7,4
print msg3
sumn int1t,int2t
cmp flagm,1
jz up_3
jnz up_4
up_3: print zero
jmp su
up_4: fix int1t
print int1t
jmp su
su: xy 10,4
print msg4
subn1 int_1t,int_2t
cmp flagm,1
jz up_5
jnz up_6
up_5: print zero
jmp mu
up_6: sign
print subn
jmp mu
mu: xy 13,4
print msg5
multip int_1t,int_2t
cmp flagm,1
jz up_1
jnz up_2
up_1: print zero
jmp en
up_2: fix mulm
print mulm
jmp en
en: mov ax,4c00h
int 21h
;--------------------------------------------------------------------
main endp
end main
3 – دریافت نام و نمره 12 دانشجو و مرتب سازی اسامی بر حسب نمره و نمایش نمره و اسامی مرتب شده در آخر.
;********************** Clear Function *************************
clear macro
mov ah,6h
mov al,50
mov ch,0
mov cl,0
mov dh,24
mov dl,79
mov bh,80h
int 10h
endm
;********************** Xy Function ****************************
xy macro row,col
mov ah,2h
mov dh,row
mov dl,col
mov bh, 0
int 10h
endm
;****************** Print string Function **********************
print macro buff
lea dx,buff
mov ah,9h
int 21h
endm
;**************** Print List of Students Struct ****************
printls macro sta
print sta.nam
print space
print sta.num
print newline
endm
;*********************** Read Function *************************
read macro max
mov ah,10
lea dx,max
int 21h
endm
;************************* Read Struct *************************
reads macro maxn,maxm
read maxn
print newline
read maxm
print newline
print msg1
endm
;******************* Read Struct And Replace *******************
readsr macro maxn,maxm,lenn,lenm,numm,name,stu
local up_1,up_2
reads maxn,maxm
mov bl,0
up_1: mov bh,0
mov dh,0
mov dl,name[bx]
mov stu.nam[bx],dl
inc bl
cmp bl,lenn
jb up_1
mov bl,0
up_2: mov bh,0
mov ch,0
mov cl,numm[bx]
mov stu.num[bx],cl
inc bl
cmp bl,lenm
jb up_2
endm
;************************* Compare st1,st2 *********************
compare macro st1,st2
local up_1,up_2,up_3,up_4,up_5,up_6,up_7
mov counts1,0
mov counts2,0
mov bl,0
up_4: mov bh,0
cmp st1.num[bx],0
je up_6
inc counts1
up_6: inc bl
cmp bl,4
jne up_4
mov bl,0
up_5: mov bh,0
cmp st2.num[bx],0
je up_7
inc counts2
up_7: inc bl
cmp bl,4
jne up_5
mov flag,0
comp st1.num,st2.num,counts1,counts2
add flag,30h
cmp flag,'1'
je up_2
jne up_1
up_1: jmp up_3
up_2: change st1,st2
up_3: endm
;************************* Comp Function ************************
Comp macro num1,num2,len1,len2
local up_1,up_2,up_3
mov bl,len1
mov bh,0
mov cl,len2
mov ch,0
cmp bl,cl
ja up_2
jb up_3
mov bl,0
up_1: mov bh,0
mov dl,num1[bx]
sub dl,30h
mov dh,num2[bx]
sub dh,30h
cmp dl,dh
ja up_2
jb up_3
inc bl
cmp bl,len1
jb up_1
up_2: mov flag,1
up_3: endm
;*********************** Sum marks Function *********************
summs macro stun
local up_1,up_2,up_3,up_4,up_5,up_6,up_7,up_8
mov cdigit,0
mov bl,0
up_5: mov bh,0
cmp stun.num[bx],0
je up_4
inc cdigit
up_4: inc bl
cmp bl,4
jne up_5
mov maxa,3
up_6: mov bl,maxa
mov bh,0
push bx
mov bx,cdigit
mov ah,0
mov al,stun.num[bx-1]
pop bx
mov strnum[bx],al
dec maxa
dec cdigit
cmp cdigit,0
ja up_6
mov cx,0
mov dl,maxa
mov dh,0
mov cx,cdigit
sub dx,cx
mov bx,0
up_7: mov strnum[bx],'0'
inc bx
cmp bx,dx
jbe up_7
mov lenn,4
mov maxa,3
mov maxb,3
mov maxc,3
mov dx,0
push dx
up_1: mov bh,0
mov bl,maxb
mov ah,0
mov al,summ[bx]
push ax
dec maxb
mov bh,0
mov bl,maxa
mov bh,0
mov bl,strnum[bx]
push bx
dec maxa
pop bx
pop ax
sub al,30h
sub bl,30h
add ax,bx
pop dx
add ax,dx
mov cl,10
div cl
mov dh,0
mov dl,al
push dx
or ax,3030h
mov bl,maxc
mov bh,0
mov summ[bx],ah
dec maxc
dec lenn
cmp lenn,1
jne up_2
je up_3
up_2: jmp up_1
up_3: pop dx
or dx,3030h
mov bl,maxc
mov bh,0
cmp dx,0
jbe up_8
mov summ[bx],dl
up_8: endm
;************************* Change struct ************************
change macro sta,stb
local up_1,up_2
mov bl,4
up_1: mov bh,0
mov ch,sta.num[bx]
mov cl,stb.num[bx]
mov sta.num[bx],cl
mov cl,ch
mov ch,0
mov stb.num[bx],cl
dec bl
cmp bl,0
jge up_1
mov bl,20
up_2: mov bh,0
mov ch,sta.nam[bx]
mov cl,stb.nam[bx]
mov sta.nam[bx],cl
mov cl,ch
mov ch,0
mov stb.nam[bx],cl
dec bl
cmp bl,0
jge up_2
endm
;************************* Avrage Function **********************
avragem macro summ
local up_1,up_2,up_3
mov ax,0
lea bx,summ
mov cx,4
mov si,10
up_1: mul si
mov dl,[bx]
and dl,15
xor dh,dh
add ax,dx
inc bx
loop up_1
mov bh,0
mov bl,12
div bl
mov si,2
up_2: mov bl,10
mov ah,0
div bl
add ah,30h
mov avrage[si],ah
dec si
cmp al,0
jne up_2
je up_3
up_3: endm
;****************************************************************
.model small
stu struc
nam db 20 dup(?),'$'
num db 4 dup(?),'$'
stu ends
.Data
msg1 db 'Please Enter your name & your mark :',10,13,"$"
msg2 db ' Total of Marks = ',"$"
msg3 db ' Avrage of Marks = ',"$"
msg4 db 'Name Mark',"$"
msg5 db '===============================',"$"
newline db 10,13,'$'
space db ' ',"$"
max1 db 20
len1 db ?
name1 db 20 dup(?)
max11 db 4
len11 db ?
num1 db 4 dup(?)
st1 stu <>
d1 db '$'
st2 stu <>
d2 db '$'
st3 stu <>
d3 db '$'
st4 stu <>
d4 db '$'
st5 stu <>
d5 db '$'
st6 stu <>
d6 db '$'
st7 stu <>
d7 db '$'
st8 stu <>
d8 db '$'
st9 stu <>
d9 db '$'
st10 stu <>
d10 db '$'
st11 stu <>
d11 db '$'
st12 stu <>
d12 db '$'
count db ?
summ db 4 dup('0'),'$'
avrage db 3 dup('0'),'$'
flag db ?,'$'
counts1 db ?
counts2 db ?
cdigit dw 0,'$'
strnum db 4 dup('0')
lenn db ?
maxa db ?
maxc db ?
maxb db ?
;*****************************************************************
.code
main proc
mov ax,@data
mov ds,ax
clear
xy 0,0
print msg1
readsr max1,max11,len1,len11,num1,name1,st1
readsr max1,max11,len1,len11,num1,name1,st2
readsr max1,max11,len1,len11,num1,name1,st3
readsr max1,max11,len1,len11,num1,name1,st4
readsr max1,max11,len1,len11,num1,name1,st5
readsr max1,max11,len1,len11,num1,name1,st6
readsr max1,max11,len1,len11,num1,name1,st7
readsr max1,max11,len1,len11,num1,name1,st8
readsr max1,max11,len1,len11,num1,name1,st9
readsr max1,max11,len1,len11,num1,name1,st10
readsr max1,max11,len1,len11,num1,name1,st11
readsr max1,max11,len1,len11,num1,name1,st12
mov count,0
up_1: compare st1,st2
compare st2,st3
compare st3,st4
compare st4,st5
compare st5,st6
compare st6,st7
compare st7,st8
compare st8,st9
compare st9,st10
compare st10,st11
compare st11,st12
inc count
cmp count,12
je up_3
jne up_2
up_2: jmp up_1
up_3: clear
xy 0,0
print msg4
print newline
print msg5
print newline
printls st12
printls st11
printls st10
printls st9
printls st8
printls st7
printls st6
printls st5
printls st4
printls st3
printls st2
printls st1
summs st1
summs st2
summs st3
summs st4
summs st5
summs st6
summs st7
summs st8
summs st9
summs st10
summs st11
summs st12
print newline
print msg2
print summ
avragem summ
print newline
print msg3
print avrage
print newline
mov ax,4c00h
int 21h
main endp
end main
4 – برنامه ای که با استفاده از چاپ پیکسل خطوط مورب را به گونه چاپ می کند که گوشه سمت چپ ( بالای مانیتور ) به سمت راست ( پایین مانیتور ) وصل می شود و این خطوط با اختلاف 3 پیکسل تا جایی ادامه دارد که آخرین خط سمت راست ( بالا ) را به سمت چپ ( پایین ) وصل می کند.
_dx macro x1,x2
mov ax,x1
mov cx,x2
sub cx,ax
mov dx,cx
endm
;***************************************
_dy macro y1,y2
mov ax,y1
mov cx,y2
sub cx,ax
mov di,cx
endm
;***************************************
set macro a,b,c,d
mov ax,a
mov bx,b
mov cx,c
mov si,d
endm
;***************************************
setxy macro a,b,c,d
mov x1,a
mov y1,b
mov x2,c
mov y2,d
endm
;***************************************
pixel macro x,y
mov cx,x
mov dx,y
mov al,71h
mov ah,12
int 10h
endm
;***************************************
.model small
.data
x1 dw ?
y1 dw ?
x2 dw ?
y2 dw ?
.code
start: mov ax,@data
mov ds,ax
mov ah,0
mov al,19
int 10h
setxy 0,0,319,199
first: _dx x1,x2
_dy y1,y2
set y1,0,x2,x1
up: add bx,di
cmp bx,dx
jb down
inc ax
sub bx,dx
down: push cx
push dx
push ax
pixel si,ax
pop ax
pop dx
pop cx
inc si
cmp si,cx
jne up
je ripit
ripit: add x1,3
mov y1,0
sub x2,3
mov y2,199
cmp x1,58
jl first
;***************************************
setxy 0,199,319,0
first1: _dx x1,x2
_dy y2,y1
set y1,0,x2,x1
up1: add bx,di
cmp bx,dx
jb down1
dec ax
sub bx,dx
down1: push cx
push dx
push ax
pixel si,ax
pop ax
pop dx
pop cx
inc si
cmp si,cx
jne up1
je ripit1
ripit1: add x1,3
mov y1,199
sub x2,3
mov y2,0
cmp x1,58
jl first1
;***************************************
setxy 59,0,258,200
first2: _dx x1,x2
_dy y1,y2
set x1,60,y2,y1
up2: add bx,dx
cmp bx,di
jbe down2
inc ax
sub bx,di
down2: push cx
push dx
push ax
pixel ax,si
pop ax
pop dx
pop cx
inc si
cmp si,cx
jne up2
je ripit2
ripit2: add x1,3
mov y1,0
sub x2,3
mov y2,200
cmp x1,157
jl first2
;***************************************
setxy 58,200,258,-1
first3: _dx x1,x2
_dy y2,y1
set x1,60,y2,y1
up3: add bx,dx
cmp bx,di
jb down3
inc ax
sub bx,di
down3: push cx
push dx
push ax
pixel ax,si
pop ax
pop dx
pop cx
dec si
cmp si,cx
jne up3
je ripit3
ripit3: add x1,3
mov y1,200
sub x2,3
mov y2,-1
cmp x1,157
jl first3
;***************************************
mov cx,200
mov si,0
upm: push cx
pixel 158,si
inc si
pop cx
loop upm
;***************************************
mov ax,4c00h
int 21h
end start
5 – کپی کردن محتویات یک فلاپی بر روی فلاپی دوم.
.MODEL SMALL
SECTORSIZE EQU 512
MAXTRACK EQU 79
NUMSIDES EQU 2
SECTOR_PER_TRACK EQU 18
.DATA
BUF DB SECTORSIZE*SECTOR_PER_TRACK DUP (0)
SIDE DB 0
TRACK DB 0
HANDLE DW 0
FILENAME DB 'C:\TEMP.DAT',00h
MSG1 DB 13,10,'Insert Your Disk InTo Drive A & Then Press A Key To Continue',13,10,'$'
MSG2 DB 13,10,'Insert A New Disk InTo Drive A & Then Press A Key To Continue',13,10,'$'
.286
.CODE
MAIN PROC
MOV AX,@DATA
MOV DS,AX
MOV AH,9
LEA DX,MSG1
INT 21H
CALL WAITT
MOV AH,3CH ;CREAT A FILE
LEA DX,FILENAME
MOV CX,0
INT 21H
MOV SIDE,0
MOV HANDLE,AX
MOV TRACK,1
CALL READTRACK
COPY:
MOV TRACK,0
COPYTRACK:
CALL READTRACK
CALL WRITEFILE
INC TRACK
CMP TRACK,80
JNZ COPYTRACK
INC SIDE
CMP SIDE,1
JZ COPY
CALL CLOSEFILE
MOV AH,09H
LEA DX,MSG2
INT 21H
CALL WAITT
MOV SIDE,0
LEA DX,FILENAME
MOV AH,3DH
MOV AL,0
INT 21H
MOV HANDLE,AX
MOV TRACK,1
MOV SIDE,0
CALL WRITETRACK
WRITE:
MOV TRACK,0
WRITE_ON_TRACK:
CALL READFILE
CALL WRITETRACK
INC TRACK
CMP TRACK,80
JNZ WRITE_ON_TRACK
INC SIDE
CMP SIDE,1
JZ WRITE
CALL CLOSEFILE
LEA DX,FILENAME ;DELETE THE TEMPORARY FILE
MOV AH,3AH
INT 21H
MOV AX,4c00h
INT 21H
MAIN ENDP
;=================================================
READTRACK PROC ;READ A TRACK
PUSH ES
MOV AX,DS
MOV ES,AX
LEA BX,BUF
MOV AH,2
MOV DL,0
MOV DH,SIDE
MOV CH,TRACK
MOV CL,1
MOV AL,SECTOR_PER_TRACK
INT 13H
POP ES
RET
READTRACK ENDP
;=================================================
WRITETRACK PROC ;WRITE A TRACK
LEA BX,BUF
PUSH ES
MOV AX,DS
MOV ES,AX
MOV AH,03
MOV AL,SECTOR_PER_TRACK
MOV CH,TRACK
MOV CL,1
MOV DH,SIDE
MOV DL,0
INT 13H
POP ES
RET
WRITETRACK ENDP
;=================================================
READFILE PROC ;READ A COMPLATE TRACK OF FILE AND PUT IT IN BUF (18*512 B)
MOV BX,HANDLE
MOV CX,SECTORSIZE*SECTOR_PER_TRACK
LEA DX,BUF
MOV AH,3FH
INT 21H
RET
READFILE ENDP
;=================================================
WRITEFILE PROC ;WRITE A COMPLATE TRACK OF BUF AND PUT IT IN DISK (18*512 B)
MOV BX,HANDLE
MOV CX,SECTORSIZE*SECTOR_PER_TRACK
LEA DX,BUF
MOV AH,40H
INT 21H
RET
WRITEFILE ENDP
;=================================================
WAITT PROC ;WAITING FOR PRESS A KEY
MOV AH,0
INT 16H
RET
WAITT ENDP
;=================================================
CLOSEFILE PROC ;CLOSE THE FILE & THE HANDLE OF IT
MOV AH,3EH
MOV BX,HANDLE
INT 21H
RET
CLOSEFILE ENDP
;=================================================
END MAIN
در صورت نیاز به برنامه خاص و یا پرسش هر سوالی می توانید با ارسال میل به آدرس Qom_Computer_Software@yahoo.com ما را مطلع گردانید تا شما را یاری رسانیم.
برج هانوی , معمایی است که از سه میله و N دیسک با اندازه های متفاوت . فرض شود که اگر دیسکی روی یک میله باشد , فقط دیسکی که قطر آن کوچکتر است می تواند بالای آن قرار گیرد مسئله چنین است که هر بار فقط یک دیسک انتقال یابد .
را حل : این مسئله با استفاده از یک الگوریتم باز گشتی حل می شود .
-اگر فقط یک دیسک باشد آنگاه آن را به میله مورد نظر انتقال می دهیم .
-اگر n > 1 باشد ; برای این کار n-1 دیسک بالای میله 1 را به میله 2 انتقال می دهیم . حالا دیسک پایینی میله 1 را ثابت باقی می ماند . حال دیسک باقیمانده در در میله 1 را به میله 3 منتقل میکنیم . سرانجام بار دیگر بصورت بازگشتی الگوریتم را فرا خانده تا n - 1 دیسک میله دو را به 3 منتقل کند .
اکنون موفق شدیم n دیسک را از میله 1 به 3 منقل کنیم .
این مسئله در درسهایی مانند ساختمان گسسته و ساختمان داده مورد بحث وبررسی قرار می گیرد .
/*
Algorithmic solution is as follows
1) if TopN==1, move the single disc from A to C and stop.
2) Move the top n-1 discs from A to B, using C as Inter.
3) Move the remaining disc from A to C.
4) Move the n-1 discs from B to C, using A as destination(dest).
*/
#include
#include
void tower(int,char,char,char); /*prototype*/
int main()
{
int ndisk;
clrscr();
printf("\n Enter number of disks <<<::: ");
scanf("%d",&ndisk);
tower(ndisk,'A','B','C'); /*Calling Function*/
getch();
return 0;
} /* End of program */
/********************************************/
// src = Source | aux = Auxiliry | dest = Destination
void tower(int topN, char src,char aux,char dest)
{
if(topN == 1)
{
printf("\n Disk 1 from %c to %c ",src,dest);
}
else
{
tower(topN-1,src,dest,aux); //src to aux
printf("\n Disk %d from %c to %c ",topN,src,dest);
tower(topN-1,aux,src,dest); //aux to dest
}
}
دوستان عزیز سلام
همون طوری که قول داده بودم و حتی زودتر از زمانی که فکر می کردم آموزش HTML رو طی 8 بخش آماده کردم و در وبلاگ قرار دادم. امیدوارم استفاده کنید.
( البته کلیه آموزش ها در یک فایل ورد در وبلاگ قرار داده شده )
سلام به شما دوست عزیز
قصد دارم مختصر و مفید و جامع آموزش کدنویسی HTML را به شما بدم.
فعلا 4 درس آماده هست و باقی مطالب را طی 1 یا 2 هفته دیگر براتون جمعبندی می کنم.
امیدوارم مفید واقع بشه. اگر سوالی داشتید و کمکی از من ساخته بود خوشحال می شم که بپرسید.![]()
E-mail : Dooste_gharibe_shoma@yahoo.com
|
||
|
|
|


الگویتم ژنتیک برای حل مساله n- وزیر
ادامه مطلب








