ماشین حساب مهندسی

مهربان2000

عضو جدید
سلام دوستان
من یه پروژه برنامه نویسی ماشین حساب مهندسی دارم که میخوام به عنوان پروژه به استادم تحویل بدم
اما میخوام بدونم دقیقا هرخط برنامه برام چیکار میکنه
باتشکر از همه دوستان


#include <mega16.h>
#include <delay.h>
#include <lcd.h>
#include <stdlib.h>
#include <math.h>

#asm
.equ __lcd_port=0x18
#endasm
//#############################################
int key(void);
float _Main(void);
void Mohandes(void);
void Mohasebe(void);
void Alamat(int,int);
float Emoji(int);
//#############################################
float a = 0 , b = 0 , c = 0 , q , t;
int i ;
char y=0 , lcd[25] , z ;
//#############################################
void main(void){

DDRB=0x0F;
DDRC=0x07;
DDRD=0x0F;

lcd_init(16);
while (1){
_Main();
}
}
//#############################################################
float _Main(void){
int Loop = 1 ;
y = key();
if( y == 15 ){a = 0 ;b = 0 ;c = 0 ;lcd_clear();return 0 ;}
if( y < 10 ){
a = (a*10)+y ;
itoa(y , lcd);
lcd_puts(lcd);
delay_ms(50);
}



if( y > 9 && y < 16 ){
if( y == 15 ){a = 0 ;b = 0 ;c = 0 ;lcd_clear();return 0 ;}
z = y ;
Alamat(y,1);
while(Loop){
y = key();
if( y == 15 ){a = 0 ;b = 0 ;c = 0 ;lcd_clear();return 0 ;}
if( y < 10 ){
b = (b*10)+y ;
itoa(y , lcd);
lcd_puts(lcd);
delay_ms(50);
}else if(y == 14){
lcd_putchar('=');
Mohasebe();
y = 0 ;
Loop = 0 ;
}
}
}
if( y > 15 ){
lcd_clear();
a= 0 ; b = 0 ; c = 0;
Alamat(y , 2);
z = y ;
Loop = 1 ;
while(Loop){
y = key();
if( y == 15 ){a = 0 ;b = 0 ;c = 0 ;lcd_clear();return 0 ;}
if(y < 10){
a = (a*10) + y ;
itoa(y , lcd);
lcd_puts(lcd);
delay_ms(50);
}else if ( y == 14){
lcd_putchar('=');
Mohandes();
}
Loop = 1 ;
}
}
return 0;
}
//##########################################################
void Mohasebe(void){
if(z == 10)c = a / b ;
if(z == 11)c = a * b ;
if(z == 12)c = a - b ;
if(z == 13)c = a + b ;
ftoa(c , 3 , lcd);
lcd_puts(lcd);
delay_ms(100);
}
//#########################################################
float Emoji(int rr){
q=1;
for(i=0;i<rr;i++)q = q * 2.71728 ;
return q;
}
//#########################################################
void Mohandes(void){
t = (3.1415926535897932384626433832795/180)*a ;
if(z == 16)c = sin(t) ;
if(z == 17)c = cos(t) ;
if(z == 18)c = tan(t) ;
if(z == 19)c = 1/tan(t) ;
if(z == 20)c = asin(t) ;
if(z == 21)c = acos(t) ;
if(z == 22)c = log(a) ;
if(z == 23)c = sqrt(a) ;
if(z == 24)c = Emoji(a) ;
ftoa(c , 3 , lcd);
lcd_puts(lcd);
delay_ms(100);
}
//#########################################################
void Alamat(int Moji,int Halat){
if(Halat == 1){
if(Moji == 10)lcd_putchar('/') ;
if(Moji == 11)lcd_putchar('*') ;
if(Moji == 12)lcd_putchar('-') ;
if(Moji == 13)lcd_putchar('+') ;
delay_ms(100);
}
if(Halat == 2){
if(Moji == 16)lcd_putsf("Sin ") ;
if(Moji == 17)lcd_putsf("Cos ") ;
if(Moji == 18)lcd_putsf("Tan ") ;
if(Moji == 19)lcd_putsf("Cot ") ;
if(Moji == 20)lcd_putsf("aSin") ;
if(Moji == 21)lcd_putsf("aCos") ;
if(Moji == 22)lcd_putsf("Log ") ;
if(Moji == 23)lcd_putsf("Sqrt ") ;
if(Moji == 24)lcd_putsf("exp ") ;
delay_ms(100);

}
}
//#########################################################
int key(void){
char KEY = 1 ;
while(KEY){

PORTD.0 = 1 ;
PORTD.1 = 0 ;
PORTD.2 = 0 ;
PORTD.3 = 0 ;
if(PIND.4 == 1){return 7 ; KEY = 0;delay_ms(50);}
if(PIND.5 == 1){return 8 ; KEY = 0;delay_ms(50);}
if(PIND.6 == 1){return 9 ; KEY = 0;delay_ms(50);}
if(PIND.7 == 1){return 10; KEY = 0;delay_ms(50);}
//==========================================
PORTD.0 = 0 ;
PORTD.1 = 1 ;
PORTD.2 = 0 ;
PORTD.3 = 0 ;
if(PIND.4 == 1){return 4 ; KEY = 0;}
if(PIND.5 == 1){return 5 ; KEY = 0;}
if(PIND.6 == 1){return 6 ; KEY = 0;}
if(PIND.7 == 1){return 11; KEY = 0;}
//==========================================
PORTD.0 = 0 ;
PORTD.1 = 0 ;
PORTD.2 = 1 ;
PORTD.3 = 0 ;
if(PIND.4 == 1){return 1 ; KEY = 0;}
if(PIND.5 == 1){return 2 ; KEY = 0;}
if(PIND.6 == 1){return 3 ; KEY = 0;}
if(PIND.7 == 1){return 12; KEY = 0;}
//==========================================
PORTD.0 = 0 ;
PORTD.1 = 0 ;
PORTD.2 = 0 ;
PORTD.3 = 1 ;
if(PIND.4 == 1){return 15; KEY = 0;}
if(PIND.5 == 1){return 0 ; KEY = 0;}
if(PIND.6 == 1){return 14; KEY = 0;}
if(PIND.7 == 1){return 13; KEY = 0;}

//=============================================================================
PORTC.0 = 1 ;
PORTC.1 = 0 ;
PORTC.2 = 0 ;
if(PINC.5 == 1){return 16 ; KEY=0;}
if(PINC.6 == 1){return 17; KEY=0;}
if(PINC.7 == 1){return 18 ; KEY=0;}
//=====================================================
PORTC.0 = 0 ;
PORTC.1 = 1 ;
PORTC.2 = 0 ;
if(PINC.5 == 1){return 19 ; KEY=0;}
if(PINC.6 == 1){return 20 ; KEY=0;}
if(PINC.7 == 1){return 21 ; KEY=0;}
//=====================================================
PORTC.0 = 0 ;
PORTC.1 = 0 ;
PORTC.2 = 1 ;
if(PINC.5 == 1){return 22 ; KEY=0;}
if(PINC.6 == 1){return 23 ; KEY=0;}
if(PINC.7 == 1){return 24 ; KEY=0;}

KEY = 1 ;
}
}
//############################################################

اینم ضمیمه کدویژن
http://s3.picofile.com/file/7589871498/mashin_hesab.c.html

و پرتئوس

http://s3.picofile.com/file/7589873331/Mashin_Hesab.dsn.html
 

سعید گروسی

عضو جدید
کاربر ممتاز
1. #include <mega16.h>
2. #include <delay.h>
3. #include <lcd.h>
4. #include <stdlib.h>
5. #include <math.h>
خط 1تا5 تعریف هدرفایل های برنامه که شامل معرفی آی سی وتاخیروال سی دی وتوابع خاص عین ftoaوهدرفایل محاسبات عینsin,cos,…..
6. #asm
7. .equ __lcd_port = 0x18
8. #endasm
خط 6تاتعریف ال سی دی به زبان اسمبلی.بادستورخط6 شروع وباخط8تموم میشه خط7 خوددستور.
9. / / ==================================================================
برای توضیحات از//استفاده میکنیم.توضیحات کامپایل نمیشوند.برای وضوح برنامه مخصوصاطولانی است.
10.
11. int key(void);
12. float _Main(void);
13. Void Mohandes(void);
14. void Mohasebe(void);
15. void Alamat(int,int);
16. float Emoji(int);
خط11 تا16تعریف توابع برنامه.
برای ساده سازی ووضوح برنامه ازتوابع استفاده میشودماکارهاروتوسط توابع تقسیم میکنیم.
یک تابع شامل ورودی خروجی ونام مخصوص به خودمیباشد.نام تابع بهتراست متناسب باکاری باشدکه تابع نوشته شده انجام میدهد.مثلاتوی اینجاتابع keyکه مربوط به کی پدمیباشد.
فرم کلی یک تابع:مقدارخروجی یابرگشتی نام تابع (مقدارورودی)
مثال خط 15.توابعی به نام علامت هستش.ورودی voidیعنی هیچی،ببی مقدار،مقادیرورودی دوتامتغییرازنوع اینتیجریاعددصحیح.
یک تابع میتوان ورودی داشته باشدخروجی نداشته باشدمثل تابع علامت دراین برنامه یابرعکسش خروجی داشته باشه ورودی نداشته باشه.یاکه کلانه ورودی نه خروجی داشته باشه.میتونه هم ورودی داشته باشه هم خروجی.
کارکردن تابع به این صورت که تابع یه روتین مخصوص به خودشوداره که باآکولادبازوبسته مشخص میشه
یه تابع کارخاصی روانجام میده مثلاتوی اینجایه تابع کی پدهستش وصفحه کلید رورفرش میکنه
یه تابع بایدcallبشه تااجرابشه وقتی هم اجراشدبه جایی که callشده بودبرمیگرده.خب اینم ازاین دیگه اینکه یه تابع بایدقبل ازتابع main تعریف بشه تاکامپایلرتشخیص بده توی برنامه تابع هستش.بعدروتین اون بعدازآکولادآخربرنامه ی اصلی یانوشته میشه
توی یک تابع میشه یه تابع دیگه روهم call کردمحدودیت نداره.خب بریم سراغ بقیه ی برنامه.

17. / / ==================================================================
18. float a = 0 , b = 0 , c = 0 , q , t;
19. int i ;
20. char y=0 , lcd[25] , z ;
این قسمت تعریف متغییرهاست برای تعریف ابتدانوع آن سپس اسم.مستونیم متغییرروهم مقدارگذاری کنیم اگه هم نکنیم به صورت پیش فرض صفرخواهدبود اینجالازم به نوشتن 0 نبودن ولی خب به هرحال....
21. / / ==================================================================

22.
23. void main(void){
شروع تابع اصلی برنامه این تابع بایدهمیشه نوشته بشه.برنامه ی اصلی اینجاقرارمیگیره.
24. DDRB=0x0F;
25. DDRC=0x07;
26. DDRD=0x0F;
جهت یابی پورت ها اینکه ورودی یاخروجی باشن برای کی پد.
27. lcd_init(16);
28. دستورlcd
29. while (1){
30. حلقه ی ابد:برنامه ای که اینجانوشته بشه همیشه اجراخواهدشدمعروفه به وایل یک
31. _Main();
32. اجرای اولین تابع به نام main.برای callکردن تابع کافی است به طریق خط31عمل کنیم
33. }خب حالابریم برای تحلیل برنامه:الان فقط تابع main اجراشدخب میریم سراغ تابع main
34. }
دراینجابرنامه تموم میشه دراصل.یعنی کامپایلربرکیگرده بازبالاازاول کامپایل.
35. / / ==================================================================
این قسمت توابع نوشه شده انداین قسمت تاcallنوشداجراوکامپایل نمیشود.
36. خب اومدیم سراغ این تابع:ورودی نداردخروجی یه مقداراعشارمیدهدیعنی flodt
37. float _Main(void){
38.
39. int Loop = 1 ;
40. یک متغییرمحلی اینجابه نام loop تعریف شده که فقط مختص به این تابع هست وجایی دیگه نمیتونه استفاده بشه به همین خاطربهش میگن محلی.مقداراولیه اون 1 هستش.
41. y = key();
42. تابع کی پداجرامیشه یعنی توی یه تابع یه تابع دیگه روcall کردیم.تابع کی پددرکل کارش تشخیص فشرده شدن کلیدهست یه هرکلید یه عدد انتصاب میده تابشه ازش توبرنامه استفاده کردوتشخیصش داد.برنامه کی پدتوضیح داده خواهدشد درپائین.
43. if( y == 15 ){a = 0 ;b = 0 ;c = 0 ;lcd_clear();return 0 ;}
44. این قسمت یعنی پاک کن ماشین حساب میگه اعدادی که ازتابع کی پدبرگشت میدی اگه 15 بودکلاهمه روپاک کن یعنی متغییرهاروکه مقدارگرفتن 0 کن
45. if( y < 10 ){
46. اگه هم عددبرگشت 0تا9 بودیعنی دستورات زیررواجراکن تاخط 54 که شرط تموم میشه.
47. a = (a*10)+y ;
48. itoa(y , lcd);
49. این یک تابع هستش که هدرفایل آن دربالاstdlib هستش که مقدارعددی روبه رشته تبدیل میکنه مقادیربرای نمایش روی ال سی دی بایدرشته باشدعددی که تابع کی پدبرگشت میده عددهستش.
50. lcd_puts(lcd);
51. بااین دستورروی ال سی دی مینویسیم
52. delay_ms(50);
53. تاخیردربرنامه
54. }



55. if( y > 9 && y < 16 ){
56. اگه اددبرگشتی ازتابع کی پدبین 9تا16 بوددستورات زیرانجام بشه .
57. if( y == 15 ){a = 0 ;b = 0 ;c = 0 ;lcd_clear();return 0 ;}
58. z = y ;
59. Alamat(y,1);
60. توی اینجاتابع علامت اجرامیشه یعنی تااینجاعدداول واردشده حالابایدعلامت مشخص بشه یعنی ضرب تقسیم و.....
61. برنامه تابع علامت پائین توصیح داده میشه.
62. while(Loop){
63. مقدارمتغیییرloopدربالا1 بودپس تا1 باشداین حلقه اجرامیشود.این حلقه عدددوم رومیگیره وتوی یه متغغیربه نام b ذخیره میکنه
64. عدداول توی متغیییرقرارگرفت.
65. y = key();
66. بازمراحل بالابرای گرفتن عددانجام میشه
67. if( y == 15 ){a = 0 ;b = 0 ;c = 0 ;lcd_clear();return 0 ;}
68. if( y < 10 ){
69. b = (b*10)+y ;
70. itoa(y , lcd);
71. lcd_puts(lcd);
72. delay_ms(50);
73. توی این خط چون عدددوم واردشده دیگه بایدبازدن مساوی نتیجه مشخص بشه این قسمت مساوی درخط74هستش.
74. }else if(y == 14){
75. عددی که به کلیدمساوی انتصاب داده شده 14 میباشدکه ازمقدارخروجی تابع کی پدگرفته میشود.
76. lcd_putchar('=');
77. علامت مساوی روی ال سی دی نمایشش داده میشه
78. Mohasebe();
79. حالاعدداول گرفته شدذخیره شدعلامت واردشدسپس عدددوممم واردوذخیره شدوهمه ی این هاروی ال سی دی نمایش داده شدحالابایدمحاسبه بشه الان تابع محاسبه call میشود.پائین تابعش توضیح داده خواهدشد.
80. y = 0 ;
81. Loop = 0 ;
82. }
83. بعداین دستورات این حلقه به پایان میرسه چون متغییرloopصفرمیشه یعنی شرط حلقه که true هستش false میشه پس خارج میشه وبرنامه ازخط 86بازشروع میشه.
84. }
85. }
86. if( y > 15 ){
87. lcd_clear();
88. a= 0 ; b = 0 ; c = 0;
89. این خط های بالاهم بازپاک کن هستندچون احتمال داردکلیدمربوطه فشارداده شودپس درهرمرحله دستورات پاک کن تکرارمیشه.دستورپا کن ال سی دی راپاک میکندومتغییرهای ذخیره اعدادد.یعنی بایدازمراحل آغازشود.
90. Alamat(y , 2);
91. بازتابع علامت فراخوانی میشه بااین تفاوت که وروردی دوم عددش 2 میباشدولی درقبلی که فراخوانی شدعدد1 بوداین 1 و2 درتابع علامت معنادارد.بایک واردعلامت های اصلی میشه مثل جمع و...باعدد2 واردعلامت های مهندسی میشه مثلsin,cos,…..
92. z = y ;
93. برای اجرای عملیات مهندسی بایدمراحل قبلی کلاتکرارشودیعنی تابع کی پدو......دیگه بالاتوضیح داده شد
94. Loop = 1 ;
95. while(Loop){
96. y = key();
97. if( y == 15 ){a = 0 ;b = 0 ;c = 0 ;lcd_clear();return 0 ;}
98. if(y < 10){
99. a = (a*10) + y ;
100. itoa(y , lcd);
101. lcd_puts(lcd);
102. delay_ms(50);
103. }else if ( y == 14){
104. lcd_putchar('=');
105. این جاباقبلی فرقش اینه که درآخرمحاسبه ی مهندسی فراخوانی میشه که یه تابع جداگانه است.درحالت قبلی تابع محاسبه بودودراین جاتابع مهندس .تابه مهندس درپایئن توضیح داده خواهدشد.
106. Mohandes();
107. }
108. Loop = 1 ;
109. }
110. }
111. return 0;
این دستورریترن صفربه تابع برمیگرددتاازاول اجراشود
112. }
113. / /
114. دراینجاتابع _mainبه پایان رسید.تابع _main یک تابع بودکه درروتین اصلی برنامه فراخوانی شد.
115. دراین تابع چندین تابع فراخوانی شدکه هرکدوم کارمخصوص به خودشون روانجام میدادن.
==================================================================
116.
117. void Mohasebe(void){
118. if(z == 10)c = a / b ;
119. if(z == 11)c = a * b ;
120. if(z == 12)c = a - b ;
121. if(z == 13)c = a + b ;
122. ftoa(c , 3 , lcd);
123. lcd_puts(lcd);
124. delay_ms(100);
125. همان طورکه گفتیم عدداول که تشخیص داده شدمقدارش درaدومی توی bونتیجه درمتغییرcریخته شداین تابع عملیات که تشخیصش ازطریق z توی تابع main بودصورت میگیرد.
126. بعدمحاسبه تبدیل به رشته وروی ال سی دی نمایش داده میشود.
127. }
128. / / ==================================================================
129.
130. float Emoji(int rr){
131. q=1;
132. for(i=0;i<rr;i++)q = q * 2.71728 ;
133. return q;
134. }
135. این تابع هم مقدارخروجی اش برای تشخیص علامت ازخروجی کی پدهست.
136.
137. / / ==================================================================
138.
139. void Mohandes(void){
140. t = (3.1415926535897932384626433832795/180)*a ;
141. if(z == 16)c = sin(t) ;
142. if(z == 17)c = cos(t) ;
143. if(z == 18)c = tan(t) ;
144. if(z == 19)c = 1/tan(t) ;
145. if(z == 20)c = asin(t) ;
146. if(z == 21)c = acos(t) ;
147. if(z == 22)c = log(a) ;
148. if(z == 23)c = sqrt(a) ;
149. if(z == 24)c = Emoji(a) ;
150. ftoa(c , 3 , lcd);
151. lcd_puts(lcd);
152. delay_ms(100);
153. }
154. این تابع هم به همون طریق عملیات رواجراونمایش میدهدمقدارyخروجی تابع کی پدبودکه توی تابع mainتوی متغییرzریخته شده.هرعددم انتصاب به یه کلیدهستش همان طورکه قبلاگفتیم مثلااگرzمساوی22باشه میشه log.
155. خط138 هم تبدیلات رادیان ودرجه این طورچیزاست3.14/180
156. / / ==================================================================
157.
158. void Alamat(int Moji,int Halat){
159. if(Halat == 1){
160. if(Moji == 10)lcd_putchar('/') ;
161. if(Moji == 11)lcd_putchar('*') ;
162. if(Moji == 12)lcd_putchar('-') ;
163. if(Moji == 13)lcd_putchar('+') ;
164. delay_ms(100);
165. }
166. if(Halat == 2){
167. if(Moji == 16)lcd_putsf("Sin ") ;
168. if(Moji == 17)lcd_putsf("Cos ") ;
169. if(Moji == 18)lcd_putsf("Tan ") ;
170. if(Moji == 19)lcd_putsf("Cot ") ;
171. if(Moji == 20)lcd_putsf("aSin") ;
172. if(Moji == 21)lcd_putsf("aCos") ;
173. if(Moji == 22)lcd_putsf("Log ") ;
174. if(Moji == 23)lcd_putsf("Sqrt ") ;
175. if(Moji == 24)lcd_putsf("exp ") ;
176. delay_ms(100);
این تابع هم براساس خروجی تابع emojiنوع عملیات روفق برای نمایش مشخص میکنه که دودسته هست همسن طورکه دربالاتوضیح داده شدحالت 1 که علامت اصلی وحالت دوعملیات مهندسی که هرکدوم جداگانه فراخوانی شد.چیزی خاصی دیگه نداره توضیح بدیم.
177. }
178. }
179. / / ==================================================================
180.
181. int key(void){
182. char KEY = 1 ;
183. while(KEY){

184. PORTD.0 = 1 ;
185. PORTD.1 = 0 ;
186. PORTD.2 = 0 ;
187. PORTD.3 = 0 ;
188. if(PIND.4 == 1){return 7 ; KEY = 0;delay_ms(50);}
189. if(PIND.5 == 1){return 8 ; KEY = 0;delay_ms(50);}
190. if(PIND.6 == 1){return 9 ; KEY = 0;delay_ms(50);}
191. if(PIND.7 == 1){return 10; KEY = 0;delay_ms(50);}
192. / / ==================================================================
193.
194. PORTD.0 = 0 ;
195. PORTD.1 = 1 ;
196. PORTD.2 = 0 ;
197. PORTD.3 = 0 ;
198. if(PIND.4 == 1){return 4 ; KEY = 0;}
199. if(PIND.5 == 1){return 5 ; KEY = 0;}
200. if(PIND.6 == 1){return 6 ; KEY = 0;}
201. if(PIND.7 == 1){return 11; KEY = 0;}
202. / / ==================================================================
203.
204. PORTD.0 = 0 ;
205. PORTD.1 = 0 ;
206. PORTD.2 = 1 ;
207. PORTD.3 = 0 ;
208. if(PIND.4 == 1){return 1 ; KEY = 0;}
209. if(PIND.5 == 1){return 2 ; KEY = 0;}
210. if(PIND.6 == 1){return 3 ; KEY = 0;}
211. if(PIND.7 == 1){return 12; KEY = 0;}
212. / / ==================================================================
213.
214. PORTD.0 = 0 ;
215. PORTD.1 = 0 ;
216. PORTD.2 = 0 ;
217. PORTD.3 = 1 ;
218. if(PIND.4 == 1){return 15; KEY = 0;}
219. if(PIND.5 == 1){return 0 ; KEY = 0;}
220. if(PIND.6 == 1){return 14; KEY = 0;}
221. if(PIND.7 == 1){return 13; KEY = 0;}

222. / / ==================================================================

223.
224. PORTC.0 = 1 ;
225. PORTC.1 = 0 ;
226. PORTC.2 = 0 ;
227. if(PINC.5 == 1){return 16 ; KEY=0;}
228. if(PINC.6 == 1){return 17; KEY=0;}
229. if(PINC.7 == 1){return 18 ; KEY=0;}
230. / / ==================================================================
231.
232. PORTC.0 = 0 ;
233. PORTC.1 = 1 ;
234. PORTC.2 = 0 ;
235. if(PINC.5 == 1){return 19 ; KEY=0;}
236. if(PINC.6 == 1){return 20 ; KEY=0;}
237. if(PINC.7 == 1){return 21 ; KEY=0;}
238. / / ==================================================================
239.
240. PORTC.0 = 0 ;
241. PORTC.1 = 0 ;
242. PORTC.2 = 1 ;
243. if(PINC.5 == 1){return 22 ; KEY=0;}
244. if(PINC.6 == 1){return 23 ; KEY=0;}
245. if(PINC.7 == 1){return 24 ; KEY=0;}

246. KEY = 1 ;
247. }
248. }
249. اینم تابع آخربرنامه یعنی کی پداین تابع هم برای تشخیص کلیدفشرده شده هست وبرگشت یک عددبه بیرون برای انجام بقیه کارها.همان طورکه دیداین خروجی درتوابع دیگه مرواستفاده قرارگرفت.
250. خب حالاچطورتشخیص میده چندپایه روبرای enable قرارمیدیم وبقیه روبرای دریافت دیتا.مثلاسطرهاروپایه ی فعال سازی قرارمیدهیم وستون هابرای دریافت یامثلاارسال دیتا.خب یه سطریاستون روفعال کردیم بایدبایدبقیه پایه های مربوط به این فعال سازی مرتب چک کنیم تابافشارداده شدن کلیدتشخیص داده شود.درخط184 تا187 دقت کنیدفقط یه پورت 1 شده بقیه 0 هستش این یعنی فعال سازیه یه ستون مثلاوقتی این کاروکردیم توی خط 188تا192سطرهاروچک کردیم که اگه هرپین یک شدیعنی فشرده شدیه عددروبرگشت بده باهمین عددمیتونیم مراحل بعدی روبرای بقیه توابع استفاده کنیم.خب خط194تا197دقت کنین پایه بعدی یک شدوبازهمون مراحل بامقداربرگشتی متفاوتی تکرارشده.
251.
252. / / ==================================================================
253. موفق باشین.
 
آخرین ویرایش:

eb@d

کاربر حرفه ای
کاربر ممتاز
 
بالا