CORVO-AI commited on
Commit
d2a178c
ยท
verified ยท
1 Parent(s): 6e3d57b

Upload 15 files

Browse files
cards.json ADDED
@@ -0,0 +1 @@
 
 
1
+ {}
chat_history_db.json ADDED
@@ -0,0 +1,122 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "ุณูŠู__islamic": {
3
+ "username": "ุณูŠู",
4
+ "subject_id": "islamic",
5
+ "messages": [
6
+ {
7
+ "role": "user",
8
+ "content": "ู…ุง ู‡ูŠ ุงู„ู…ูˆุงุถูŠุน ุงู„ู…ุชุงุญุฉุŸ",
9
+ "timestamp": "2026-04-09T20:05:55.369551+00:00"
10
+ },
11
+ {
12
+ "role": "assistant",
13
+ "content": "ู…ุฑุญุจุงู‹ ุจูƒ ๐ŸŒท \nุฃู†ุง **ู…ุณุงุนุฏ ุงู„ุชุฑุจูŠุฉ ุงู„ุฅุณู„ุงู…ูŠุฉ ุงู„ุฐูƒูŠ**ุŒ ูˆูŠุณุนุฏู†ูŠ ู…ุณุงุนุฏุชูƒ.\n\nุงู„ู…ูˆุงุถูŠุน ุงู„ู…ุชุงุญุฉ ููŠ ู‡ุฐุง ุงู„ู…ู†ู‡ุฌ ู‡ูŠ:\n\n### ุฃูˆู„ุงู‹: ุงู„ู‚ุฑุขู† ุงู„ูƒุฑูŠู…\n- ุงู„ู†ุต ุงู„ุฃูˆู„: **ุนุงู‚ุจุฉ ุงู„ุธู„ู… (1)**\n- ุงู„ู†ุต ุงู„ุซุงู†ูŠ: **ุนุงู‚ุจุฉ ุงู„ุธู„ู… (2)**\n- ุงู„ู†ุต ุงู„ุซุงู„ุซ: **ุทุบูŠุงู† ุงู„ู…ุงู„**\n- ุงู„ู†ุต ุงู„ุฑุงุจุน: **ุนุงู‚ุจุฉ ุทุบูŠุงู† ุงู„ู…ุงู„**\n- ุงู„ู†ุต ุงู„ุฎุงู…ุณ: **ุนุงู‚ุจุฉ ุงู„ู‚ุชู„ ุงู„ุนู…ุฏ ูˆุงู„ุญุฑุงุจุฉ**\n\n### ุซุงู†ูŠุงู‹: ุงู„ุณู†ุฉ ุงู„ู†ุจูˆูŠุฉ\n- ุงู„ุญุฏูŠุซ ุงู„ุฃูˆู„: **ููŠ ุธู„ ุงู„ุฑุญู…ู†**\n- ุงู„ุญุฏูŠุซ ุงู„ุซุงู†ูŠ: **ุญุฑู…ุฉ ู‡ุฌุฑ ุงู„ู…ุคู…ู†**\n- ุงู„ุญุฏูŠุซ ุงู„ุซุงู„ุซ: **ุนู‚ูˆุจุฉ ุงู„ุฑุดูˆุฉ ูˆู…ุถุงุฑู‡ุง**\n- ุงู„ุญุฏูŠุซ ุงู„ุฑุงุจุน: **ุงุบุชู†ุงู… ู…ุง ู„ุง ูŠู…ูƒู† ุชุนูˆูŠุถู‡**\n- ุงู„ุญุฏูŠุซ ุงู„ุฎุงู…ุณ: **ุนู„ุงู…ุงุช ุงู„ู†ูุงู‚**\n- ุงู„ุญุฏูŠุซ ุงู„ุณุงุฏุณ: **ุณุจุงุจ ุงู„ู…ุคู…ู† ู„ุฃุฎูŠู‡**\n- ุงู„ุญุฏูŠุซ ุงู„ุณุงุจุน: **ุฃุฌุฑ ุงู„ุบุฑุณ ูˆุงู„ุฒุฑุน**\n- ุงู„ุญุฏูŠุซ ุงู„ุซุงู…ู†: **ุงู„ู…ุญุจุฉ ููŠ ุงู„ุฅุณู„ุงู…**\n- ุงู„ุญุฏูŠุซ ุงู„ุชุงุณุน: **ู…ู† ู…ูƒูุฑุงุช ุงู„ุฎุทุงูŠุง**\n- ุงู„ุญุฏูŠุซ ุงู„ุนุงุดุฑ: **ุซูˆุงุจ ุงู„ุตุงู„ุญุฉ ุจูŠู† ุงู„ู…ุณู„ู…ูŠู†**\n\n### ุซุงู„ุซุงู‹: ุงู„ุนู‚ูŠุฏุฉ\n- **ุนุงู„ู…ูŠุฉ ุฑุณุงู„ุฉ ุงู„ุฅุณู„ุงู… ูˆุดู…ูˆู„ูŠุฉ ุฃุญูƒุงู…ู‡ุง**\n- **ุฃุฏู„ุฉ ุนู…ูˆู… ุงู„ุฑุณุงู„ุฉ**\n- **ุดู…ูˆู„ ุฃุญูƒุงู… ุฑุณุงู„ุฉ ุงู„ุฅุณู„ุงู…**\n- **ุฑุณุงู„ุฉ ุงู„ุฅุณู„ุงู… ุฎุงุชู…ุฉ ุงู„ุฑุณุงู„ุงุช ุงู„ุณู…ุงูˆูŠุฉ**\n- **ุฑุณุงู„ุฉ ุงู„ุฅุณู„ุงู… ู†ุงุณุฎุฉ ู„ูƒู„ ุงู„ุดุฑุงุฆุน ุงู„ุณุงุจู‚ุฉ**\n\n### ุฑุงุจุนุงู‹: ุงู„ุนุจุงุฏุงุช\n- **ุงู„ุฒูƒุงุฉ**\n- **ุตุฏู‚ุฉ ุงู„ูุทุฑ**\n- **ุงู„ุญุฌ**\n- **ุงู„ุนู…ุฑุฉ**\n- **ุงู„ุฃุถุญูŠุฉ**\n- **ุงู„ุฐูƒุงุฉ ุงู„ุดุฑุนูŠุฉ**\n\nุฅุฐุง ุฃุฑุฏุชุŒ ุฃุณุชุทูŠุน ุฃูŠุถุงู‹ ุฃู†:\n1. ุฃุดุฑุญ ู„ูƒ **ุฃูŠ ู…ูˆุถูˆุน** ู…ู†ู‡ุง ุจุงุฎุชุตุงุฑ \n2. ุฃุถุน ู„ูƒ **ู…ู„ุฎุตุงู‹ ู„ู„ูู‡ุฑุณ ูƒู„ู‡** \n3. ุฃุณุงุนุฏูƒ ููŠ **ุงุฎุชูŠุงุฑ ุงู„ุฏุฑุณ ุงู„ู…ู†ุงุณุจ ู„ู„ู…ุฑุงุฌุนุฉ** \n\nุงุฎุชุฑ ุฃูŠ ู…ูˆุถูˆุน ุชุฑูŠุฏ ุงู„ุจุฏุก ุจู‡ ๐Ÿ˜Š",
14
+ "timestamp": "2026-04-09T20:06:04.888062+00:00"
15
+ },
16
+ {
17
+ "role": "user",
18
+ "content": "ุงู„ุณู„ุงู… ุนู„ูŠูƒู… ุฃูˆุฏ ุดุฑุญ ุจุณูŠุท ุฌุฏุงู‹ ุฑุงุจุนุงู‹ ุงู„ุนุจุงุฏุงุช ุชุญุฏูŠุฏุงู‹ ุตุฏู‚ุฉ ุงู„ูุทุฑ",
19
+ "timestamp": "2026-04-09T20:07:43.865903+00:00"
20
+ }
21
+ ],
22
+ "full_messages": [
23
+ {
24
+ "role": "user",
25
+ "content": "ู…ุง ู‡ูŠ ุงู„ู…ูˆุงุถูŠุน ุงู„ู…ุชุงุญุฉุŸ",
26
+ "timestamp": "2026-04-09T20:05:55.369551+00:00"
27
+ },
28
+ {
29
+ "role": "assistant",
30
+ "content": "ู…ุฑุญุจุงู‹ ุจูƒ ๐ŸŒท \nุฃู†ุง **ู…ุณุงุนุฏ ุงู„ุชุฑุจูŠุฉ ุงู„ุฅุณู„ุงู…ูŠุฉ ุงู„ุฐูƒูŠ**ุŒ ูˆูŠุณุนุฏู†ูŠ ู…ุณุงุนุฏุชูƒ.\n\nุงู„ู…ูˆุงุถูŠุน ุงู„ู…ุชุงุญุฉ ููŠ ู‡ุฐุง ุงู„ู…ู†ู‡ุฌ ู‡ูŠ:\n\n### ุฃูˆู„ุงู‹: ุงู„ู‚ุฑุขู† ุงู„ูƒุฑูŠู…\n- ุงู„ู†ุต ุงู„ุฃูˆู„: **ุนุงู‚ุจุฉ ุงู„ุธู„ู… (1)**\n- ุงู„ู†ุต ุงู„ุซุงู†ูŠ: **ุนุงู‚ุจุฉ ุงู„ุธู„ู… (2)**\n- ุงู„ู†ุต ุงู„ุซุงู„ุซ: **ุทุบูŠุงู† ุงู„ู…ุงู„**\n- ุงู„ู†ุต ุงู„ุฑุงุจุน: **ุนุงู‚ุจุฉ ุทุบูŠุงู† ุงู„ู…ุงู„**\n- ุงู„ู†ุต ุงู„ุฎุงู…ุณ: **ุนุงู‚ุจุฉ ุงู„ู‚ุชู„ ุงู„ุนู…ุฏ ูˆุงู„ุญุฑุงุจุฉ**\n\n### ุซุงู†ูŠุงู‹: ุงู„ุณู†ุฉ ุงู„ู†ุจูˆูŠุฉ\n- ุงู„ุญุฏูŠุซ ุงู„ุฃูˆู„: **ููŠ ุธู„ ุงู„ุฑุญู…ู†**\n- ุงู„ุญุฏูŠุซ ุงู„ุซุงู†ูŠ: **ุญุฑู…ุฉ ู‡ุฌุฑ ุงู„ู…ุคู…ู†**\n- ุงู„ุญุฏูŠุซ ุงู„ุซุงู„ุซ: **ุนู‚ูˆุจุฉ ุงู„ุฑุดูˆุฉ ูˆู…ุถุงุฑู‡ุง**\n- ุงู„ุญุฏูŠุซ ุงู„ุฑุงุจุน: **ุงุบุชู†ุงู… ู…ุง ู„ุง ูŠู…ูƒู† ุชุนูˆูŠุถู‡**\n- ุงู„ุญุฏูŠุซ ุงู„ุฎุงู…ุณ: **ุนู„ุงู…ุงุช ุงู„ู†ูุงู‚**\n- ุงู„ุญุฏูŠุซ ุงู„ุณุงุฏุณ: **ุณุจุงุจ ุงู„ู…ุคู…ู† ู„ุฃุฎูŠู‡**\n- ุงู„ุญุฏูŠุซ ุงู„ุณุงุจุน: **ุฃุฌุฑ ุงู„ุบุฑุณ ูˆุงู„ุฒุฑุน**\n- ุงู„ุญุฏูŠุซ ุงู„ุซุงู…ู†: **ุงู„ู…ุญุจุฉ ููŠ ุงู„ุฅุณู„ุงู…**\n- ุงู„ุญุฏูŠุซ ุงู„ุชุงุณุน: **ู…ู† ู…ูƒูุฑุงุช ุงู„ุฎุทุงูŠุง**\n- ุงู„ุญุฏูŠุซ ุงู„ุนุงุดุฑ: **ุซูˆุงุจ ุงู„ุตุงู„ุญุฉ ุจูŠู† ุงู„ู…ุณู„ู…ูŠู†**\n\n### ุซุงู„ุซุงู‹: ุงู„ุนู‚ูŠุฏุฉ\n- **ุนุงู„ู…ูŠุฉ ุฑุณุงู„ุฉ ุงู„ุฅุณู„ุงู… ูˆุดู…ูˆู„ูŠุฉ ุฃุญูƒุงู…ู‡ุง**\n- **ุฃุฏู„ุฉ ุนู…ูˆู… ุงู„ุฑุณุงู„ุฉ**\n- **ุดู…ูˆู„ ุฃุญูƒุงู… ุฑุณุงู„ุฉ ุงู„ุฅุณู„ุงู…**\n- **ุฑุณุงู„ุฉ ุงู„ุฅุณู„ุงู… ุฎุงุชู…ุฉ ุงู„ุฑุณุงู„ุงุช ุงู„ุณู…ุงูˆูŠุฉ**\n- **ุฑุณุงู„ุฉ ุงู„ุฅุณู„ุงู… ู†ุงุณุฎุฉ ู„ูƒู„ ุงู„ุดุฑุงุฆุน ุงู„ุณุงุจู‚ุฉ**\n\n### ุฑุงุจุนุงู‹: ุงู„ุนุจุงุฏุงุช\n- **ุงู„ุฒูƒุงุฉ**\n- **ุตุฏู‚ุฉ ุงู„ูุทุฑ**\n- **ุงู„ุญุฌ**\n- **ุงู„ุนู…ุฑุฉ**\n- **ุงู„ุฃุถุญูŠุฉ**\n- **ุงู„ุฐูƒุงุฉ ุงู„ุดุฑุนูŠุฉ**\n\nุฅุฐุง ุฃุฑุฏุชุŒ ุฃุณุชุทูŠุน ุฃูŠุถุงู‹ ุฃู†:\n1. ุฃุดุฑุญ ู„ูƒ **ุฃูŠ ู…ูˆุถูˆุน** ู…ู†ู‡ุง ุจุงุฎุชุตุงุฑ \n2. ุฃุถุน ู„ูƒ **ู…ู„ุฎุตุงู‹ ู„ู„ูู‡ุฑุณ ูƒู„ู‡** \n3. ุฃุณุงุนุฏูƒ ููŠ **ุงุฎุชูŠุงุฑ ุงู„ุฏุฑุณ ุงู„ู…ู†ุงุณุจ ู„ู„ู…ุฑุงุฌุนุฉ** \n\nุงุฎุชุฑ ุฃูŠ ู…ูˆุถูˆุน ุชุฑูŠุฏ ุงู„ุจุฏุก ุจู‡ ๐Ÿ˜Š",
31
+ "timestamp": "2026-04-09T20:06:04.888062+00:00"
32
+ },
33
+ {
34
+ "role": "user",
35
+ "content": "ุงู„ุณู„ุงู… ุนู„ูŠูƒู… ุฃูˆุฏ ุดุฑุญ ุจุณูŠุท ุฌุฏุงู‹ ุฑุงุจุนุงู‹ ุงู„ุนุจุงุฏุงุช ุชุญุฏูŠุฏุงู‹ ุตุฏู‚ุฉ ุงู„ูุทุฑ",
36
+ "timestamp": "2026-04-09T20:07:43.865903+00:00"
37
+ }
38
+ ],
39
+ "summary": "",
40
+ "message_count": 3,
41
+ "last_file": "p4.txt",
42
+ "subject": "islamic",
43
+ "saved_at": "2026-04-09T23:08:44.443531"
44
+ },
45
+ "ุณูŠู__biology": {
46
+ "username": "ุณูŠู",
47
+ "subject_id": "biology",
48
+ "messages": [
49
+ {
50
+ "role": "user",
51
+ "content": "ู…ุฑุญุจุงุŒ ุนุฑูู†ูŠ ุจู†ูุณูƒ",
52
+ "timestamp": "2026-04-10T12:37:45.932980+00:00"
53
+ },
54
+ {
55
+ "role": "assistant",
56
+ "content": "ุนุฐุฑุงู‹ุŒ ุญุฏุซ ุฎุทุฃ ููŠ ุงู„ู†ุธุงู…. ุญุงูˆู„ ู…ุฑุฉ ุฃุฎุฑู‰.",
57
+ "timestamp": "2026-04-10T12:37:45.935461+00:00"
58
+ }
59
+ ],
60
+ "full_messages": [
61
+ {
62
+ "role": "user",
63
+ "content": "ู…ุฑุญุจุงุŒ ุนุฑูู†ูŠ ุจู†ูุณูƒ",
64
+ "timestamp": "2026-04-10T12:37:45.932980+00:00"
65
+ },
66
+ {
67
+ "role": "assistant",
68
+ "content": "ุนุฐุฑุงู‹ุŒ ุญุฏุซ ุฎุทุฃ ููŠ ุงู„ู†ุธุงู…. ุญุงูˆู„ ู…ุฑุฉ ุฃุฎุฑู‰.",
69
+ "timestamp": "2026-04-10T12:37:45.935461+00:00"
70
+ }
71
+ ],
72
+ "summary": "",
73
+ "message_count": 2,
74
+ "last_file": "main.txt",
75
+ "subject": "biology",
76
+ "saved_at": "2026-04-10T15:37:45.948257"
77
+ },
78
+ "ุณูŠู__physics_mechanic": {
79
+ "username": "ุณูŠู",
80
+ "subject_id": "physics_mechanic",
81
+ "messages": [],
82
+ "full_messages": [],
83
+ "summary": "",
84
+ "message_count": 0,
85
+ "last_file": null,
86
+ "subject": "physics_mechanic",
87
+ "saved_at": "2026-04-10T15:51:04.726846"
88
+ },
89
+ "ุณูŠู__it": {
90
+ "username": "ุณูŠู",
91
+ "subject_id": "it",
92
+ "messages": [
93
+ {
94
+ "role": "user",
95
+ "content": "ู…ุง ู‡ูŠ ุงู„ู…ูˆุงุถูŠุน ุงู„ู…ุชุงุญุฉุŸ",
96
+ "timestamp": "2026-04-17T18:08:14.770895+00:00"
97
+ },
98
+ {
99
+ "role": "assistant",
100
+ "content": "ุนุฐุฑุงู‹ุŒ ุญุฏุซ ุฎุทุฃ ููŠ ุงู„ู†ุธุงู…. ุญุงูˆู„ ู…ุฑุฉ ุฃุฎุฑู‰.",
101
+ "timestamp": "2026-04-17T18:08:14.772719+00:00"
102
+ }
103
+ ],
104
+ "full_messages": [
105
+ {
106
+ "role": "user",
107
+ "content": "ู…ุง ู‡ูŠ ุงู„ู…ูˆุงุถูŠุน ุงู„ู…ุชุงุญุฉุŸ",
108
+ "timestamp": "2026-04-17T18:08:14.770895+00:00"
109
+ },
110
+ {
111
+ "role": "assistant",
112
+ "content": "ุนุฐุฑุงู‹ุŒ ุญุฏุซ ุฎุทุฃ ููŠ ุงู„ู†ุธุงู…. ุญุงูˆู„ ู…ุฑุฉ ุฃุฎุฑู‰.",
113
+ "timestamp": "2026-04-17T18:08:14.772719+00:00"
114
+ }
115
+ ],
116
+ "summary": "",
117
+ "message_count": 2,
118
+ "last_file": "main.txt",
119
+ "subject": "it",
120
+ "saved_at": "2026-04-17T21:08:14.783119"
121
+ }
122
+ }
config.py ADDED
@@ -0,0 +1,59 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ Global configuration and constants.
3
+ All settings in one place.
4
+ """
5
+
6
+ import os
7
+ import secrets
8
+
9
+ # โ”€โ”€โ”€ Flask โ”€โ”€โ”€
10
+ SECRET_KEY = os.environ.get("SECRET_KEY", secrets.token_hex(16))
11
+ DEBUG = os.environ.get("DEBUG", "true").lower() == "true"
12
+ HOST = os.environ.get("HOST", "0.0.0.0")
13
+ PORT = int(os.environ.get("PORT", 5000))
14
+
15
+ # โ”€โ”€โ”€ Database files โ”€โ”€โ”€
16
+ USERS_DB_FILE = "users.json"
17
+ TELEGRAM_DB_FILE = "users_db.json"
18
+ CARDS_DB_FILE = "cards.json"
19
+ CHAT_HISTORY_DB_FILE = "chat_history_db.json"
20
+
21
+ # โ”€โ”€โ”€ AI endpoints โ”€โ”€โ”€
22
+ GPT_URL = "https://corvo-ai-gpt-5-4.hf.space/chat"
23
+ TTS_URL = "https://corvo-ai-tts.hf.space"
24
+ TRANSCRIPT_URL = "https://corvo-ai-transcript.hf.space"
25
+
26
+ # โ”€โ”€โ”€ Cloudinary โ”€โ”€โ”€
27
+ CLOUDINARY_URL = "https://api.cloudinary.com/v1_1/dwsoob1wh/image/upload"
28
+ CLOUDINARY_PRESET = "Cloud-storage"
29
+
30
+ # โ”€โ”€โ”€ Icons8 โ”€โ”€โ”€
31
+ ICONS8_SEARCH_URL = (
32
+ "https://search-app.icons8.com/api/iconsets/v7/search"
33
+ "?isAnimated=false&language=en&analytics=true"
34
+ "&spellcheck=false&saveAnalytics=true"
35
+ "&amount=10&isOuch=true"
36
+ "&replaceNameWithSynonyms=true"
37
+ "&offset=0&term={term}"
38
+ )
39
+ ICONS8_IMAGE_URL = "https://img.icons8.com/?size=100&id={icon_id}&format=png"
40
+
41
+ # โ”€โ”€โ”€ Audio โ”€โ”€โ”€
42
+ AUDIO_OUTPUT_DIR = "static/audio"
43
+ MAX_AUDIO_FILES = 200
44
+
45
+ # โ”€โ”€โ”€ Chat history โ”€โ”€โ”€
46
+ SUMMARY_TRIGGER_COUNT = 10
47
+ MAX_CHAT_HISTORY = 20
48
+
49
+ # โ”€โ”€โ”€ Directories to create on startup โ”€โ”€โ”€
50
+ REQUIRED_DIRS = [
51
+ "static/audio",
52
+ "templates",
53
+ "FINAL",
54
+ ]
55
+
56
+ # โ”€โ”€โ”€ Mistral cookie (for streaming) โ”€โ”€โ”€
57
+ MISTRAL_COOKIE = os.environ.get("MISTRAL_COOKIE", (
58
+ '''__cf_bm=JrqUGrlLa1VNznB_gcRKdDY.AyPLIvyRVUuKMV0avmc-1771531995-1.0.1.1-gJPuKUhLOcJ6hccPtwfCq6jJOAkQ8xABZJi_RwovhSQrsUTbUv1MCh1IPLvZ3ldPzqHLrPmcWUwLE_q_iVrP.W9PCYLnRq4HMMbVeyuDwlE; _cfuvid=oL4ochUsTJrLY6FlPpKTfocKdvOyum8GRuUBbqS9l8U-1771531995497-0.0.1.1-604800000; csrf_token_1d61ec8f0158ec4868343239ec73dbe1bfebad9908ad860e62f470c767573d0d=6ybeYU0W24tff63a5O/h0wbG6pYuc4w4iKv6SOKnYFc=; ory_session_coolcurranf83m3srkfl=MTc3MTUzMjA2OXxZU1dnRmd5SzNZM3o5VERSMGN5OFBWaHZ4bmdzd2RLOXNTUHNqMVVQbUdqUVFyZXpFN1ZCa0stYmJOR1lmbFNHVWphdWE4UWZ4S2FESjVROVJVYkw3a0MxN01TVVRZSUFGcWdZRHBCSjA2WEFJcFowcERmTWdrTmxuZ01zLWtubWxtd3lELVBBSVhOSzRkS1RRTWlxUHo1WmJwRWZzNlBXOFZWbUQyY2xkRVlOdXczb19kMlA4enc2ZGdVbkhaOUtXNDhEcEtxTVVBUTFYVk5YUXUtbDhjNVBOaG04WDRncmVNeXV4WWZXNC05TTlZRml3Y2hmR1F3QUR4Wk1aS0wwVUFfWGFyb2YxUlUtZXJkMGVhc3B8ITaivuTKOyk2pkoOhT6SPvP7zk-_NWF074pMm1HUl-k=; intercom-device-id-xel0jpx9=16cbae05-b305-4216-9967-e1622600c85c; csrftoken=KevqOi51yhx99LPY2i96wpMb2BxPlbpA; __cflb=0H28vBt3Asif1pksrBB47e5ijRcsvN4rdm4JmqYW3k8; intercom-session-xel0jpx9=K0lUK3E1QkhQemZuN256UXRtUVIxQWRoTVNQVXA2OVhXbDd1UHlGb3hxVmFVN0tJTG5LdFEvelpJck5aR0FjV3VWY0NjR1piMUxUdkZUc09kLzVDMTIrRGZiU3BtRElIQ0FvZUVZdHZyNU5sZU9EU0E3cHFCK1FzdE9kUTFKaG5PclZJTGRxN1c2WUt1NEVLNXBqZUwySStMQ2JHWHo3Z3Vyc2xLSWh2YkVDbWJBOWJWeHpHNFJIUzltZWUvQXVXLS1jdGVHOFVGRTJNS3I2Qm1tWlk3UEVBPT0=--d3764aa89dd7c5400eb27bf4e34ad8c85402eb72'''
59
+ ))
data_structure/main.txt ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ "ุฃู†ุช ู…ุฏุฑุณ ูˆุฏูˆุฏ ูˆู…ุญุชุฑู ููŠ ู…ุงุฏุฉ ุชุฑุงูƒูŠุจ ุจูŠุงู†ุงุช. ุงุณู…ูƒ "ู…ุณุงุนุฏ ุชุฑุงูƒูŠุจ ุจูŠุงู†ุงุช ุงู„ุฐูƒูŠ".
2
+ **ุชุนู„ูŠู…ุงุช:**
3
+ - ุฑุญุจ ุจุงู„ุทู„ุงุจ ุจุญุฑุงุฑุฉ ุฅุฐุง ูƒุงู†ุช ุฃูˆู„ ุฑุณุงู„ุฉ
4
+ - ุฃุฌุจ ุนู„ู‰ ุงู„ุฃุณุฆู„ุฉ ุงู„ุนุงู…ุฉ ุจุดูƒู„ ู…ููŠุฏ
5
+ - ูˆุฌู‡ ุงู„ุทู„ุงุจ ู„ุทุฑุญ ุฃุณุฆู„ุฉ ู…ุญุฏุฏุฉ ุนู† ุงู„ูุตูˆู„ ุนู†ุฏ ุงู„ุญุงุฌุฉ
6
+ - ุงุณุชุฎุฏู… ุงู„ู„ุบุฉ ุงู„ุนุฑุจูŠุฉ
7
+ - ูƒู† ู…ุดุฌุนุงู‹ ูˆู…ุญูุฒุงู‹
8
+ - ุฑุงุนู ุณูŠุงู‚ ุงู„ู…ุญุงุฏุซุฉ ุงู„ุณุงุจู‚ุฉ
9
+ - ุฅุฐุง ูƒุงู† ู‡ู†ุงูƒ ู…ู„ุฎุต ุณุงุจู‚ุŒ ุงุณุชุฎุฏู…ู‡ ู„ูู‡ู… ู…ุณุชูˆู‰ ุงู„ุทุงู„ุจ
10
+ === ู…ุนู„ูˆู…ุงุช ุนุงู…ุฉ ุนู† ุงู„ู…ุงุฏุฉ ===
11
+
12
+ ุงู„ู†ู‡ุฌ ุงู„ุฐูŠ ูŠุฌุจ ุชุฏุฑูŠุณู‡
13
+
14
+ C & Data Structures
15
+
16
+ Chapter 1: Address, Pointers, Arrays, and Structures
17
+ Chapter 2: Address, Pointers, Arrays, and Structures (part 2)
18
+ Chapter 3: function & recursion
19
+ Chapter 4: stack
20
+ Chapter 5: stack (part 2)
21
+ Chapter 6: Queue
data_structure/p1.txt ADDED
@@ -0,0 +1,823 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ================================================================================
2
+ SUBJECT: Lecture1_20260417_202347
3
+ TOTAL PAGES: 24
4
+ EXTRACTED ON: 2026-04-17 19:28:58
5
+ ================================================================================
6
+
7
+ "ุฃู†ุช ู…ุฏุฑุณ ุฎุจูŠุฑ ูˆู…ุญุชุฑู ููŠ ู…ุงุฏุฉ ุชุฑุงูƒูŠุจ ุจูŠุงู†ุงุช. ุฃู†ุช ุชุฏุฑู‘ุณ ุทุงู„ุจุงู‹ ูˆุชุณุงุนุฏู‡ ุนู„ู‰ ุงู„ูู‡ู….
8
+
9
+ === ู…ุญุชูˆู‰ ุงู„ูุตู„ (ุงู„ู…ุฑุฌุน ุงู„ุนู„ู…ูŠ) ===
10
+
11
+ === ู†ู‡ุงูŠุฉ ุงู„ุณูŠุงู‚ ===
12
+
13
+ **ุชุนู„ูŠู…ุงุช ู…ู‡ู…ุฉ:**
14
+ - ุงุณุชุฎุฏู… ุงู„ู…ุญุชูˆู‰ ุงู„ุนู„ู…ูŠ ุฃุนู„ุงู‡ ูƒู…ุฑุฌุน ุฃุณุงุณูŠ ู„ู„ุฅุฌุงุจุฉ
15
+ - ุฑุงุนู ุณูŠุงู‚ ุงู„ู…ุญุงุฏุซุฉ ุงู„ุณุงุจู‚ุฉ ูˆุงู„ู…ุณุชูˆู‰ ุงู„ุชุนู„ูŠู…ูŠ ู„ู„ุทุงู„ุจ
16
+ - ุฃุฌุจ ุจุดูƒู„ ูˆุงุถุญ ูˆู…ูุตู„ ุจุงู„ู„ุบุฉ ุงู„ุนุฑุจูŠุฉ
17
+ - ุงุณุชุฎุฏู… ุงู„ุฃู…ุซู„ุฉ ูˆุงู„ุชูˆุถูŠุญุงุช ุนู†ุฏ ุงู„ุญุงุฌุฉ
18
+ - ุฅุฐุง ุณุฃู„ ุงู„ุทุงู„ุจ ุนู† ุดูŠุก ุฎุงุฑุฌ ุงู„ู…ุญุชูˆู‰ ุงู„ู…ุชูˆูุฑุŒ ุฃุฎุจุฑู‡ ุจุฐู„ูƒ ุจู„ุทู
19
+
20
+ ================================================================================
21
+ PAGE 1 - page_0001.png
22
+ ================================================================================
23
+
24
+ ------------TEXT EXTRACTED------------
25
+ C & Data Structures
26
+
27
+ Chapter 1: Address, Pointers, Arrays, and Structures
28
+
29
+ Dr. Amna Ali A Mohamed
30
+
31
+ Faculty of information technology
32
+
33
+ ------------PAGE TALK ABOUT------------
34
+ ู‡ุฐู‡ ุงู„ุตูุญุฉ ู‡ูŠ ุบู„ุงู ุฃูˆ ู…ู‚ุฏู…ุฉ ู„ู…ุงุฏุฉ **C & Data Structures**ุŒ ูˆุชุญุฏูŠุฏู‹ุง **ุงู„ูุตู„ ุงู„ุฃูˆู„** ุงู„ุฐูŠ ูŠุชู†ุงูˆู„: ุงู„ุนู†ุงูˆูŠู† ููŠ ุงู„ุฐุงูƒุฑุฉุŒ ุงู„ู…ุคุดุฑุงุชุŒ ุงู„ู…ุตููˆูุงุชุŒ ูˆุงู„ุชุฑุงูƒูŠุจ ููŠ ู„ุบุฉ C.
35
+ ูƒู…ุง ูŠุธู‡ุฑ ุงุณู… ุงู„ุฏูƒุชูˆุฑุฉ **Amna Ali A Mohamed** ูˆุงู†ุชู…ุงุคู‡ุง ุฅู„ู‰ **Faculty of information technology**.
36
+ ูŠูˆุฌุฏ ุนู„ู‰ ูŠู…ูŠู† ุงู„ุตูุญุฉ ุฑุณู… ู„ุดุฌุฑุฉ ุจูŠุงู†ุงุช (Tree) ุจุนูู‚ุฏ ู…ุฑู‚ู…ุฉ ู…ุซู„ 60 ูˆ53 ูˆ3 ูˆุบูŠุฑู‡ุงุŒ ู…ุน ุฃุณู‡ู… ุชูˆุถุญ ุงู„ุนู„ุงู‚ุงุช ุจูŠู† ุงู„ุนู‚ุฏุŒ ุจุงู„ุฅุถุงูุฉ ุฅู„ู‰ ุดูƒู„ ุตุบูŠุฑ ูŠุดูŠุฑ ุฅู„ู‰ ู…ูู‡ูˆู… ุงู„ู…ุคุดุฑ ุฃูˆ ุงู„ุนู†ูˆุงู†.
37
+
38
+
39
+ ================================================================================
40
+ PAGE 2 - page_0002.png
41
+ ================================================================================
42
+
43
+ ------------TEXT EXTRACTED------------
44
+ Introduction
45
+
46
+ What Do We Mean by Data?
47
+
48
+ Data in programming functions like nouns, which are objects that store and represent information.
49
+
50
+ These objects could be numbers, text, or complex structures like lists and databases.
51
+
52
+ Actions on data are the verbs, representing operations that manipulate the data. These include actions like:
53
+
54
+ โ€ข Adding new data (inserting elements into a list or database).
55
+ โ€ข Deleting unnecessary or outdated data.
56
+ โ€ข Reading data from a file or database.
57
+ โ€ข Writing data to a file or memory.
58
+
59
+ ------------PAGE TALK ABOUT------------
60
+ ุชุชุญุฏุซ ุงู„ุตูุญุฉ ุนู† ู…ู‚ุฏู…ุฉ ู„ู…ูู‡ูˆู… ุงู„ุจูŠุงู†ุงุช ููŠ ุงู„ุจุฑู…ุฌุฉุŒ ูˆุชูˆุถุญ ุฃู† ุงู„ุจูŠุงู†ุงุช ุชุดุจู‡ ุงู„ุฃุณู…ุงุก ู„ุฃู†ู‡ุง ุชู…ุซู„ ุฃุดูŠุงุก ุชุฎุฒู† ุงู„ู…ุนู„ูˆู…ุงุช.
61
+ ูƒู…ุง ุชุดุฑุญ ุฃู† ุงู„ุจูŠุงู†ุงุช ู‚ุฏ ุชูƒูˆู† ุฃุฑู‚ุงู…ู‹ุง ุฃูˆ ู†ุตูˆุตู‹ุง ุฃูˆ ุชุฑุงูƒูŠุจ ู…ุนู‚ุฏุฉ ู…ุซู„ ุงู„ู‚ูˆุงุฆู… ูˆู‚ูˆุงุนุฏ ุงู„ุจูŠุงู†ุงุช.
62
+ ูˆุชุนุฑุถ ุฃูŠุถู‹ุง ุฃู† ุงู„ุนู…ู„ูŠุงุช ุนู„ู‰ ุงู„ุจูŠุงู†ุงุช ุชุดุจู‡ ุงู„ุฃูุนุงู„ุŒ ู…ุซู„ ุงู„ุฅุถุงูุฉ ูˆุงู„ุญุฐู ูˆุงู„ู‚ุฑุงุกุฉ ูˆุงู„ูƒุชุงุจุฉ.
63
+ ุงู„ุนู†ุตุฑ ุงู„ุจุตุฑูŠ ุนุจุงุฑุฉ ุนู† ุดุฑูŠุญุฉ ู†ุตูŠุฉ ุชุนู„ูŠู…ูŠุฉ ุจุณูŠุทุฉ ุจุฎู„ููŠุฉ ุจูŠุถุงุก ูˆุนู†ุงูˆูŠู† ุจุงุฑุฒุฉ ุจุงู„ุฎุท ุงู„ุนุฑูŠุถ ุฏูˆู† ุตูˆุฑ ุฃูˆ ู…ุฎุทุทุงุช.
64
+
65
+
66
+ ================================================================================
67
+ PAGE 3 - page_0003.png
68
+ ================================================================================
69
+
70
+ ------------TEXT EXTRACTED------------
71
+ Introduction (Cont.)
72
+
73
+ Understanding Data Representation
74
+
75
+ Computers store data as sequences of bits (0s and 1s), but human-
76
+ readable formats are more abstract.
77
+
78
+ For instance:
79
+
80
+ โ€ข A single integer is stored as binary but is represented in decimal for
81
+ human understanding.
82
+
83
+ โ€ข A character is stored using encoding schemes like ASCII or Unicode
84
+ but appears as a readable letter.
85
+
86
+ โ€ข A list (array) is stored in contiguous memory locations but is
87
+ displayed as a structured collection of values.
88
+
89
+ ------------PAGE TALK ABOUT------------
90
+ ุชุชุญุฏุซ ุงู„ุตูุญุฉ ุนู† ุชู…ุซูŠู„ ุงู„ุจูŠุงู†ุงุช ุฏุงุฎู„ ุงู„ุญุงุณูˆุจ ูˆูƒูŠู ุชูุฎุฒู† ูุนู„ูŠู‹ุง ุนู„ู‰ ุดูƒู„ ุจุชุงุช 0 ูˆ1ุŒ ุจูŠู†ู…ุง ุชุธู‡ุฑ ู„ู„ู…ุณุชุฎุฏู… ุจุตูŠุบ ุฃุณู‡ู„ ู„ู„ูู‡ู….
91
+ ุชูˆุถุญ ุฃู…ุซู„ุฉ ุนู„ู‰ ุฐู„ูƒ: ุงู„ุฃุนุฏุงุฏ ุงู„ุตุญูŠุญุฉ ุชูุฎุฒู† ุซู†ุงุฆูŠู‹ุง ูˆุชูุนุฑุถ ุนุดุฑูŠู‹ุงุŒ ูˆุงู„ุญุฑูˆู ุชูุฎุฒู† ุจุชุฑู…ูŠุฒุงุช ู…ุซู„ ASCII ูˆUnicode.
92
+ ูƒู…ุง ุชุดุฑุญ ุฃู† ุงู„ู‚ูˆุงุฆู… ุฃูˆ ุงู„ู…ุตููˆูุงุช ุชูุฎุฒู† ููŠ ู…ูˆุงู‚ุน ู…ุชุฌุงูˆุฑุฉ ููŠ ุงู„ุฐุงูƒุฑุฉ ู„ูƒู†ู‡ุง ุชูุนุฑุถ ูƒู…ุฌู…ูˆุนุฉ ู…ู†ุธู…ุฉ ู…๏ฟฝ๏ฟฝ ุงู„ู‚ูŠู….
93
+ ุงู„ุนู†ุตุฑ ุงู„ุจุตุฑูŠ ุนุจุงุฑุฉ ุนู† ุดุฑูŠุญุฉ ู†ุตูŠุฉ ุชุนู„ูŠู…ูŠุฉ ูู‚ุทุŒ ุจุฏูˆู† ุตูˆุฑ ุฃูˆ ู…ุฎุทุทุงุชุŒ ู…ุน ุนู†ูˆุงู† ูƒุจูŠุฑ ูˆู†ู‚ุงุท ุชุนุฏุงุฏ.
94
+
95
+
96
+ ================================================================================
97
+ PAGE 4 - page_0004.png
98
+ ================================================================================
99
+
100
+ ------------TEXT EXTRACTED------------
101
+ 1. Data Abstraction
102
+
103
+ Data abstraction is the process of separating the physical storage of data from how it is used in a program.
104
+
105
+ It allows programmers to work with high-level data structures (such as arrays, linked lists, and trees) without needing to understand the underlying memory details.
106
+
107
+ ------------PAGE TALK ABOUT------------
108
+ ุชุชุญุฏุซ ุงู„ุตูุญุฉ ุนู† ู…ูู‡ูˆู… **ุชุฌุฑูŠุฏ ุงู„ุจูŠุงู†ุงุช** ููŠ ุงู„ุจุฑู…ุฌุฉุŒ ูˆู‡ูˆ ูุตู„ ุทุฑูŠู‚ุฉ ุชุฎุฒูŠู† ุงู„ุจูŠุงู†ุงุช ูุนู„ูŠู‹ุง ุนู† ุทุฑูŠู‚ุฉ ุงุณุชุฎุฏุงู…ู‡ุง ุฏุงุฎู„ ุงู„ุจุฑู†ุงู…ุฌ.
109
+ ุชูˆุถุญ ุฃู† ู‡ุฐุง ุงู„ู…ูู‡ูˆู… ูŠุณุงุนุฏ ุงู„ู…ุจุฑู…ุฌูŠู† ุนู„ู‰ ุงู„ุชุนุงู…ู„ ู…ุน ู‡ูŠุงูƒู„ ุจูŠุงู†ุงุช ุนุงู„ูŠุฉ ุงู„ู…ุณุชูˆู‰ ู…ุซู„ ุงู„ู…ุตููˆูุงุช ูˆุงู„ู‚ูˆุงุฆู… ุงู„ู…ุฑุชุจุทุฉ ูˆุงู„ุฃุดุฌุงุฑ ุจุณู‡ูˆู„ุฉ.
110
+ ูƒู…ุง ุชุดูŠุฑ ุฅู„ู‰ ุฃู† ุงู„ู…ุจุฑู…ุฌ ู„ุง ูŠุญุชุงุฌ ู„ู…ุนุฑูุฉ ุชูุงุตูŠู„ ุงู„ุฐุงูƒุฑุฉ ุงู„ุฏุงุฎู„ูŠุฉ ุนู†ุฏ ุงุณุชุฎุฏุงู… ู‡ุฐู‡ ุงู„ู‡ูŠุงูƒู„.
111
+ ุงู„ุนู†ุตุฑ ุงู„ุจุตุฑูŠ ููŠ ุงู„ุตูุญุฉ ุนุจุงุฑุฉ ุนู† ุดุฑูŠุญุฉ ุจุณูŠุทุฉ ุจุฎู„ููŠุฉ ุจูŠุถุงุก ูˆู†ุต ุฃุณูˆุฏ ูƒุจูŠุฑ ู…ุน ุนู†ูˆุงู† ุฑุฆูŠุณูŠ ูˆุงุถุญ ููŠ ุงู„ุฃุนู„ู‰.
112
+
113
+
114
+ ================================================================================
115
+ PAGE 5 - page_0005.png
116
+ ================================================================================
117
+
118
+ ------------TEXT EXTRACTED------------
119
+ 1. Data Abstraction (Cont.)
120
+
121
+ Key Benefit of Data Abstraction
122
+
123
+ โ€ข Simplifies programming by allowing a focus on logic rather than implementation details.
124
+
125
+ โ€ข Enables the design of scalable and modular programs.
126
+
127
+ โ€ข Supports the creation of reusable components that can work across different hardware and software platforms.
128
+
129
+ Data Abstraction: Data abstraction hides the physical representation of data and only exposes logical operations.
130
+
131
+ โ€ข Example: An integer is represented differently across computers, yet operations remain the same.
132
+
133
+ ------------PAGE TALK ABOUT------------
134
+ ุชุชุญุฏุซ ุงู„ุตูุญุฉ ุนู† ู…ูู‡ูˆู… **ุชุฌุฑูŠุฏ ุงู„ุจูŠุงู†ุงุช** ูˆููˆุงุฆุฏู‡ ููŠ ุงู„ุจุฑู…ุฌุฉ.
135
+ ุชูˆุถุญ ุฃู†ู‡ ูŠุณุงุนุฏ ุงู„ู…ุจุฑู…ุฌ ุนู„ู‰ ุงู„ุชุฑูƒูŠุฒ ุนู„ู‰ ู…ู†ุทู‚ ุงู„ุจุฑู†ุงู…ุฌ ุจุฏู„ ุชูุงุตูŠู„ ุงู„ุชู†ููŠุฐ ุงู„ุฏุงุฎู„ูŠุฉ.
136
+ ูƒู…ุง ุชุดูŠุฑ ุฅู„ู‰ ุฃู†ู‡ ูŠุฏุนู… ุจู†ุงุก ุจุฑุงู…ุฌ **ู‚ุงุจู„ุฉ ู„ู„ุชูˆุณุน** ูˆ**ู…ู‚ุณู…ุฉ ุฅู„ู‰ ูˆุญุฏุงุช** ู…ุน ู…ูƒูˆู†ุงุช ู‚ุงุจู„ุฉ ู„ุฅุนุงุฏุฉ ุงู„ุงุณุชุฎุฏุงู….
137
+ ูŠูˆุฌุฏ ู…ุซุงู„ ูŠุจูŠู† ุฃู† ุชู…ุซูŠู„ ุงู„ุนุฏุฏ ุงู„ุตุญูŠุญ ู‚ุฏ ูŠุฎุชู„ู ุจูŠู† ุงู„ุฃุฌู‡ุฒุฉุŒ ู„ูƒู† ุงู„ุนู…ู„ูŠุงุช ุนู„ูŠู‡ ุชุจู‚ู‰ ู†ูุณู‡ุง.
138
+
139
+
140
+ ================================================================================
141
+ PAGE 6 - page_0006.png
142
+ ================================================================================
143
+
144
+ ------------TEXT EXTRACTED------------
145
+ 2. Data Structures
146
+
147
+ Definition: A structured way to store and organize data efficiently.
148
+
149
+ Example:
150
+
151
+ A library organizes books logically for easy access.
152
+
153
+ Difference between Abstract Data Type (ADT) and Data Structure:
154
+ โ—‹ ADT defines the logical view.
155
+ โ—‹ Data Structure provides an actual implementation.
156
+
157
+ [Top-right image]
158
+ Leaves of Grass
159
+ Software Engineering in ADA
160
+ Programming in c++
161
+ Biology Today
162
+ C++ Plus
163
+ INTRODUCTION TO CALCULUS
164
+ Gone with the Wind
165
+ HUMAN ANATOMY
166
+ Programming Proverbs
167
+ Adventures in Algebra
168
+ SIMPLY STATISTICS
169
+ Relational Databases
170
+ Romeo and Juliet
171
+ All over the place (Unordered)
172
+
173
+ [Middle-right image]
174
+ Adventures in Algebra
175
+ Biology Today
176
+ Gone with the Wind
177
+ HUMAN ANATOMY
178
+ INTRODUCTION TO CALCULUS
179
+ Leaves of Grass
180
+ Programming Proverbs
181
+ Programming in c++
182
+ Relational Databases
183
+ Romeo and Juliet
184
+ SIMPLY STATISTICS
185
+ Software Engineering in ADA
186
+ Alphabetical order by title
187
+
188
+ [Bottom-right image]
189
+ C++ Plus
190
+ Programming in c++
191
+ Relational Databases
192
+ Software Engineering in ADA
193
+ Programming Proverbs
194
+ SIMPLY STATISTICS
195
+ INTRODUCTION TO CALCULUS
196
+ Adventures in Algebra
197
+ Biology Today
198
+ HUMAN ANATOMY
199
+ Romeo and Juliet
200
+ Leaves of Grass
201
+ Gone with the Wind
202
+ Computer Science
203
+ Math
204
+ Biology
205
+ Literature
206
+ Ordered by subject
207
+
208
+ ------------PAGE TALK ABOUT------------
209
+ ุงู„ุตูุญุฉ ุชุดุฑุญ ู…ูู‡ูˆู… ู‡ูŠุงูƒู„ ุงู„ุจูŠุงู†ุงุช ุจุฃู†ู‡ุง ุทุฑูŠู‚ุฉ ู…ู†ุธู…ุฉ ู„ุชุฎุฒูŠู† ุงู„ุจูŠุงู†ุงุช ูˆุชุฑุชูŠุจู‡ุง ุจูƒูุงุกุฉุŒ ู…ุน ู…ุซุงู„ ุชุดุจูŠู‡ ุงู„ู…ูƒุชุจุฉ ุงู„ุชูŠ ุชุฑุชุจ ุงู„ูƒุชุจ ู„ุชุณู‡ูŠู„ ุงู„ูˆุตูˆู„ ุฅู„ูŠู‡ุง.
210
+ ูƒู…ุง ุชูˆุถุญ ุงู„ูุฑู‚ ุจูŠู† ADT ูˆ Data StructureุŒ ุญูŠุซ ุฅู† ADT ูŠู…ุซู„ ุงู„ูˆุตู ุฃูˆ ุงู„ู…ู†ุธูˆุฑ ุงู„ู…ู†ุทู‚ูŠุŒ ุจูŠู†ู…ุง Data Structure ู‡ูˆ ๏ฟฝ๏ฟฝู„ุชุทุจูŠู‚ ุงู„ูุนู„ูŠ ู„ู‡ุฐุง ุงู„ูˆุตู.
211
+ ุงู„ุฑุณูˆู…ุงุช ุนู„ู‰ ุงู„ูŠู…ูŠู† ุชุนุฑุถ ูƒุชุจู‹ุง ู…ุฑุชุจุฉ ุจุซู„ุงุซ ุญุงู„ุงุช: ุบูŠุฑ ู…ุฑุชุจุฉุŒ ู…ุฑุชุจุฉ ุฃุจุฌุฏูŠู‹ุง ุญุณุจ ุงู„ุนู†ูˆุงู†ุŒ ูˆู…ุฑุชุจุฉ ุญุณุจ ุงู„ู…ูˆุถูˆุน.
212
+ ุงู„ู‡ุฏู ู…ู† ุงู„ุตูˆุฑ ู‡ูˆ ุชูˆุถูŠุญ ูƒูŠู ุฃู† ุงู„ุชู†ุธูŠู… ุงู„ุฌูŠุฏ ูŠุฌุนู„ ุงู„ูˆุตูˆู„ ุฅู„ู‰ ุงู„ุจูŠุงู†ุงุช ุฃุณู‡ู„ ูˆุฃูˆุถุญ.
213
+
214
+
215
+ ================================================================================
216
+ PAGE 7 - page_0007.png
217
+ ================================================================================
218
+
219
+ ------------TEXT EXTRACTED------------
220
+ 3. Overview of Data Structures
221
+
222
+ | Data Structure | Strengths | Weaknesses |
223
+ |---|---|---|
224
+ | Arrays | Fast access | Fixed size |
225
+ | Linked Lists | Dynamic size | Slower access |
226
+ | Stacks | Easy LIFO operations | Limited access |
227
+ | Queues | FIFO processing | Limited access |
228
+ | Trees | Hierarchical organization | Complex implementation |
229
+ | Hash Tables | Fast lookups | Potential collisions |
230
+
231
+ ------------PAGE TALK ABOUT------------
232
+ ุชุชุญุฏุซ ุงู„ุตูุญุฉ ุนู† ู†ุธุฑุฉ ุนุงู…ุฉ ุนู„ู‰ ู‡ูŠุงูƒู„ ุงู„ุจูŠุงู†ุงุช ุงู„ุฃุณุงุณูŠุฉ ูˆู…ู‚ุงุฑู†ุฉ ุณุฑูŠุนุฉ ุจูŠู†ู‡ุง.
233
+ ูŠูˆุฌุฏ ุฌุฏูˆู„ ุจุซู„ุงุซุฉ ุฃุนู…ุฏุฉ: ุงุณู… ู‡ูŠูƒู„ ุงู„ุจูŠุงู†ุงุชุŒ ู†ู‚ุงุท ุงู„ู‚ูˆุฉุŒ ูˆู†ู‚ุงุท ุงู„ุถุนู.
234
+ ูŠุนุฑุถ ุฃู…ุซู„ุฉ ู…ุซู„ Arrays ูˆLinked Lists ูˆStacks ูˆQueues ูˆTrees ูˆHash Tables ู…ุน ู…ูŠุฒุฉ ูˆุนูŠุจ ู„ูƒู„ ู†ูˆุน.
235
+ ุงู„ุชุตู…ูŠู… ุจุตุฑูŠู‹ุง ุนุจุงุฑุฉ ุนู† ุดุฑูŠุญุฉ ุชุนู„ูŠู…ูŠุฉ ุจุณูŠุทุฉ ุชุญุชูˆูŠ ุนู†ูˆุงู†ู‹ุง ูƒุจูŠุฑู‹ุง ููŠ ุงู„ุฃุนู„ู‰ ูˆุฌุฏูˆู„ู‹ุง ู…ู†ุธู…ู‹ุง ููŠ ุงู„ู…ู†ุชุตู ุจุฎู„ููŠุงุช ุฑู…ุงุฏูŠุฉ ู…ุชู†ุงูˆุจุฉ.
236
+
237
+
238
+ ================================================================================
239
+ PAGE 8 - page_0008.png
240
+ ================================================================================
241
+
242
+ ------------TEXT EXTRACTED------------
243
+ C Language
244
+
245
+ 1. Address & Memory Allocation
246
+ Each variable has:
247
+ โ€ข Value (data stored in memory).
248
+ โ€ข Address (location in memory).
249
+
250
+ ```c
251
+ #include <stdio.h>
252
+ int main() {
253
+ int i = 10;
254
+ printf("Address of i: %p\n", &i);
255
+ return 0;
256
+ }
257
+ ```
258
+
259
+ Explanation
260
+ Memory allocations to the variables can be explained using the following variables:
261
+ 1. 100,i 10
262
+ 2. 200, j 20
263
+ 3. 300,k 30
264
+
265
+ ------------PAGE TALK ABOUT------------
266
+ ุชุชุญุฏุซ ุงู„ุตูุญุฉ ุนู† ู…ูู‡ูˆู… ุงู„ุนู†ูˆุงู† ูˆุงู„ุฐุงูƒุฑุฉ ููŠ ู„ุบุฉ CุŒ ูˆุฃู† ูƒู„ ู…ุชุบูŠุฑ ูŠู…ู„ูƒ ู‚ูŠู…ุฉ ู…ุฎุฒู†ุฉ ุฏุงุฎู„ ุงู„ุฐุงูƒุฑุฉ ูˆุนู†ูˆุงู†ู‹ุง ูŠุญุฏุฏ ู…ูƒุงู†ู‡.
267
+ ูŠูˆุฌุฏ ู…ุซุงู„ ุจุฑู…ุฌูŠ ูŠุนุฑู‘ู ุงู„ู…ุชุบูŠุฑ `i` ุจู‚ูŠู…ุฉ 10 ุซู… ูŠุทุจุน ุนู†ูˆุงู†ู‡ ุจุงุณุชุฎุฏุงู… `&i` ูˆ`printf`.
268
+ ูƒู…ุง ุชุนุฑุถ ุงู„ุตูุญุฉ ุดุฑุญู‹ุง ู…ุจุณุทู‹ุง ู„ุชุฎุตูŠุต ุงู„ุฐุงูƒุฑุฉ ุนุจุฑ ุฃู…ุซู„ุฉ ู„ู…ุชุบูŠุฑุงุช ู…ุซู„ `i` ูˆ`j` ูˆ`k` ู…ุน ุนู†ุงูˆูŠู† ูˆู‚ูŠู… ุงูุชุฑุงุถูŠุฉ.
269
+ ุจุตุฑูŠู‹ุงุŒ ุชุญุชูˆูŠ ุงู„ุตูุญุฉ ุนู„ู‰ ุนู†ูˆุงู† ูƒุจูŠุฑ "C Language"ุŒ ูˆู†ู‚ุงุท ุชุนุฏุงุฏุŒ ูˆุตูˆุฑุฉ ู„ูƒูˆุฏ CุŒ ูˆู†ุต ุดุฑุญ ุนู„ู‰ ุงู„ุฌู‡ุฉ ุงู„ูŠู…ู†ู‰.
270
+
271
+
272
+ ================================================================================
273
+ PAGE 9 - page_0009.png
274
+ ================================================================================
275
+
276
+ ------------TEXT EXTRACTED------------
277
+ 1. Address & Memory Allocation
278
+
279
+ Explanation
280
+ Memory allocations to the variables can be explained using the following
281
+ variables:
282
+ 1. 100,i 10
283
+ 2. 200, j 20
284
+ 3. 300,k 30
285
+
286
+ Points to Remember
287
+ โ€ข Each variable has two attributes: address and value.
288
+ โ€ข The address is the location in memory where the value of the variable is stored.
289
+ โ€ข During the lifetime of the variable, the address is not changed but the value may change.
290
+
291
+ ------------PAGE TALK ABOUT------------
292
+ ุชุชุญุฏุซ ุงู„ุตูุญุฉ ุนู† ู…ูู‡ูˆู… ุงู„ุนู†ูˆุงู† ููŠ ุงู„ุฐุงูƒุฑุฉ ูˆุชุฎุตูŠุต ุงู„ุฐุงูƒุฑุฉ ู„ู„ู…ุชุบูŠุฑุงุช ููŠ ุงู„ุจุฑู…ุฌุฉ.
293
+ ุชูˆุถุญ ุฃู† ูƒู„ ู…ุชุบูŠุฑ ู„ู‡ ุฎุงุตูŠุชุงู† ุฃุณุงุณูŠุชุงู†: ุนู†ูˆุงู† ููŠ ุงู„ุฐุงูƒุฑุฉ ูˆู‚ูŠู…ุฉ ู…ุฎุฒู†ุฉ ุฏุงุฎู„ู‡.
294
+ ุชุนุฑุถ ุฃู…ุซู„ุฉ ู„ู…ุชุบูŠุฑุงุช ู…ุซู„ i ูˆ j ูˆ k ู…ุน ุนู†ุงูˆูŠู† ูˆู‚ูŠู… ู…ุฎุชู„ูุฉ ู„ุชูˆุถูŠุญ ุงู„ููƒุฑุฉ.
295
+ ูƒู…ุง ุชุคูƒุฏ ุฃู† ุนู†ูˆุงู† ุงู„ู…ุชุบูŠุฑ ูŠุจู‚ู‰ ุซุงุจุชู‹ุง ุฃุซู†ุงุก ุญูŠุงุชู‡ุŒ ุจูŠู†ู…ุง ูŠู…ูƒู† ุฃู† ุชุชุบูŠุฑ ู‚ูŠู…ุชู‡.
296
+
297
+
298
+ ================================================================================
299
+ PAGE 10 - page_0010.png
300
+ ================================================================================
301
+
302
+ ------------TEXT EXTRACTED------------
303
+ 2. Pointers
304
+
305
+ โ€ข A pointer is a variable whose value is also an address. As described earlier, each variable has two attributes: address and value.
306
+
307
+ โ€ข A variable can take any value specified by its data type.
308
+
309
+ โ€ข For example, if the variable i is of the integer type, it can take any value permitted in the range specified by the integer data type.
310
+
311
+ โ€ข A pointer to an integer is a variable that can store the address of that integer.
312
+
313
+ ------------PAGE TALK ABOUT------------
314
+ ุชุชุญุฏุซ ุงู„ุตูุญุฉ ุนู† ู…ูู‡ูˆู… ุงู„ู…ุคุดุฑุงุช (Pointers) ููŠ ุงู„ุจุฑู…ุฌุฉุŒ ูˆุฃู† ุงู„ู…ุคุดุฑ ู‡ูˆ ู…ุชุบูŠุฑ ูŠุฎุฒู† ุนู†ูˆุงู†ู‹ุง ููŠ ุงู„ุฐุงูƒุฑุฉ ุจุฏู„ู‹ุง ู…ู† ู‚ูŠู…ุฉ ุนุงุฏูŠุฉ ูู‚ุท.
315
+ ูƒู…ุง ุชูˆุถุญ ุฃู† ูƒู„ ู…ุชุบูŠุฑ ู„ู‡ ุฎุงุตูŠุชุงู†: ุงู„ุนู†ูˆุงู† ูˆุงู„ู‚ูŠู…ุฉุŒ ูˆุฃู† ู†ูˆุน ุงู„ุจูŠุงู†ุงุช ูŠุญุฏุฏ ุงู„ู‚ูŠู… ุงู„ู…ู…ูƒู†ุฉ ู„ู„ู…ุชุบูŠุฑ.
316
+ ูˆุชุนุฑุถ ู…ุซุงู„ู‹ุง ุนู„ู‰ ุงู„ู…ุชุบูŠุฑ ุงู„ุตุญูŠุญ integerุŒ ุซู… ุชุดุฑุญ ุฃู† ู…ุคุดุฑ ุงู„ุนุฏุฏ ุงู„ุตุญูŠุญ ูŠู…ูƒู†ู‡ ุชุฎุฒูŠู† ุนู†ูˆุงู† ู‡ุฐุง ุงู„ู…ุชุบูŠุฑ.
317
+ ุงู„ุนู†ุตุฑ ุงู„ุจุตุฑูŠ ุงู„ูˆุญูŠุฏ ู‡ูˆ ุชู†ุณูŠู‚ ุดุฑูŠุญุฉ ุนุฑุถ ุจุนู†ูˆุงู† ูƒุจูŠุฑ ูˆู†ู‚ุงุท ุชุนุฏุงุฏุŒ ูˆู„ุง ุชูˆุฌุฏ ุตูˆุฑ ุฃูˆ ู…ุฎุทุทุงุช.
318
+
319
+
320
+ ================================================================================
321
+ PAGE 11 - page_0011.png
322
+ ================================================================================
323
+
324
+ ------------TEXT EXTRACTED------------
325
+ 2. Pointers (cont.)
326
+
327
+ โ€ข A pointer stores the address of another variable.
328
+
329
+ โ€ข Allows indirect access to a variable's value.
330
+
331
+ ```c
332
+ #include <stdio.h>
333
+
334
+ int main() {
335
+ int i = 10; // Declare integer variable
336
+
337
+ int *ia; // Declare pointer to integer I
338
+
339
+ ia = &i; // Assign address of i to ia
340
+
341
+ printf("The address of i is %p\n", ia); // Print address of Ia
342
+
343
+ printf("The value at that location is %d\n", *ia); // Print value using pointer
344
+
345
+ *ia = 50; // Modify value using pointer
346
+
347
+ printf("The value of i is %d\n", i); // Print updated value of i
348
+
349
+ return 0;
350
+ }
351
+ ```
352
+
353
+ ------------PAGE TALK ABOUT------------
354
+ ุชุชุญุฏุซ ุงู„ุตูุญุฉ ุนู† ู…ูู‡ูˆู… ุงู„ู…ุคุดุฑุงุช (Pointers) ููŠ ู„ุบุฉ CุŒ ูˆุฃู†ู‡ุง ุชุฎุฒู† ุนู†ูˆุงู† ู…ุชุบูŠุฑ ุขุฎุฑ ูˆุชุณู…ุญ ุจุงู„ูˆุตูˆู„ ุบูŠุฑ ุงู„ู…ุจุงุดุฑ ุฅู„ู‰ ู‚ูŠู…ุชู‡.
355
+ ูŠูˆุฌุฏ ู…ุซุงู„ ุจุฑู…ุฌูŠ ูŠุนุฑู‘ู ู…ุชุบูŠุฑู‹ุง ุตุญูŠุญู‹ุง `i` ูˆู…ุคุดุฑู‹ุง `ia` ูŠุดูŠุฑ ุฅู„ูŠู‡ ุจุงุณุชุฎุฏุงู… ุงู„ุนุงู…ู„ `&`.
356
+ ุซู… ูŠูˆุถุญ ูƒูŠููŠุฉ ุทุจุงุนุฉ ุงู„ุนู†ูˆุงู† ุจุงุณุชุฎุฏุงู… `%p`ุŒ ูˆู‚ุฑุงุกุฉ ุงู„ู‚ูŠู…ุฉ ุนุจุฑ ููƒ ุงู„ุฅุดุงุฑุฉ `*ia`ุŒ ุซู… ุชุนุฏูŠู„ ู‚ูŠู…ุฉ `i` ู…ู† ุฎู„ุงู„ ุงู„ู…ุคุดุฑ ุฅู„ู‰ `50`.
357
+ ุงู„ุนู†ุตุฑ ุงู„ุจุตุฑูŠ ุงู„ุฃุณุงุณูŠ ู‡ูˆ ุตู†ุฏูˆู‚ ูƒูˆุฏ ุจุฑู…ุฌูŠ ุฏุงุฎู„ ุดุฑูŠุญุฉ ุนุฑุถ ุชุนู„ูŠู…ูŠุฉ ุจุนู†ูˆุงู† ูƒุจูŠุฑ ูˆู†ู‚ุทุชูŠู† ุชูˆุถูŠุญูŠุชูŠู† ุฃุนู„ู‰ ุงู„ู…ุซุงู„.
358
+
359
+
360
+ ================================================================================
361
+ PAGE 12 - page_0012.png
362
+ ================================================================================
363
+
364
+ ------------TEXT EXTRACTED------------
365
+ 2. Pointers (cont.)
366
+
367
+ Syntax:
368
+
369
+ Declare: int *ptr.
370
+
371
+ Assign address: ptr = &var.
372
+
373
+ Access value: *ptr (dereferencing).
374
+
375
+ ```c
376
+ #include <stdio.h>
377
+
378
+ int main() {
379
+ int i = 10; // Declare integer variable
380
+ int *ia; // Declare pointer to integer I
381
+ a = &i; // Assign address of i to ia
382
+
383
+ printf("The address of i is %p\n", ia); // Print address of I
384
+ printf("The value at that location is %d\n", *ia); // Print value using pointer
385
+
386
+ *ia = 50; // Modify value using pointer
387
+
388
+ printf("The value of i is %d\n", i); // Print updated value of i
389
+
390
+ return 0;
391
+ }
392
+ ```
393
+
394
+ ------------PAGE TALK ABOUT------------
395
+ ุชุดุฑุญ ุงู„ุตูุญุฉ ู…ูู‡ูˆู… ุงู„ู…ุคุดุฑุงุช (Pointers) ููŠ ู„ุบุฉ C ุจุดูƒู„ ู…ุจุณุท.
396
+ ุชูˆุถุญ ุงู„ุตูŠุงุบุฉ ุงู„ุฃุณุงุณูŠุฉ: ุชุนุฑูŠู ู…ุคุดุฑุŒ ุฅุณู†ุงุฏ ุนู†ูˆุงู† ู…ุชุบูŠุฑ ู„ู‡ ุจุงุณุชุฎุฏุงู… `&`ุŒ ุซู… ุงู„ูˆุตูˆู„ ุฅู„ู‰ ุงู„ู‚ูŠู…ุฉ ุจุงุณุชุฎุฏุงู… `*` (ููƒ ุงู„ุฅุดุงุฑุฉ).
397
+ ูŠูˆุฌุฏ ู…ุซุงู„ ุจุฑู…ุฌูŠ ูŠุจูŠู‘ู† ุฅู†ุดุงุก ู…ุชุบูŠุฑ ุตุญูŠุญ `i`ุŒ ุซู… ู…ุคุดุฑ ูŠุดูŠุฑ ุฅู„ูŠู‡ุŒ ูˆุทุจุงุนุฉ ุงู„ุนู†ูˆุงู† ูˆุงู„ู‚ูŠู…ุฉุŒ ูˆุจุนุฏู‡ุง ุชุนุฏูŠู„ ู‚ูŠู…ุฉ `i` ุนุจุฑ ุงู„ู…ุคุดุฑ.
398
+ ุงู„ุนู†ุตุฑ ุงู„ุจุตุฑูŠ ุงู„ุฃุณุงุณูŠ ู‡ูˆ ุดุฑูŠุญุฉ ุชุนู„ูŠู…ูŠุฉ ุชุญุชูˆูŠ ุนู†ูˆุงู†ู‹ุง ูƒุจูŠุฑู‹ุง ููŠ ุงู„ุฃุนู„ู‰ุŒ ูˆู†ุตู‹ุง ุชูˆุถูŠุญูŠู‹ุง ุนู„ู‰ ุงู„ูŠู…ูŠู†ุŒ ูˆู…ุฑุจุนู‹ุง ุฑู…ุงุฏูŠู‹ุง ููŠ ุงู„ุฃุณูู„ ุจุฏุงุฎู„ู‡ ูƒูˆุฏ ู…ู„ูˆู‘ู†.
399
+
400
+
401
+ ================================================================================
402
+ PAGE 13 - page_0013.png
403
+ ================================================================================
404
+
405
+ ------------TEXT EXTRACTED------------
406
+ 3. Arrays
407
+
408
+ โ€ข An array stores multiple values of the same type.
409
+
410
+ โ€ข Elements are accessed using an index (starting from 0).
411
+
412
+ โ€ข Array name is a pointer constant pointing to the first element.
413
+
414
+ ```c
415
+ #include <stdio.h>
416
+
417
+ int main() {
418
+ int a[5]; // Declare an array of size 5
419
+
420
+ for(int i = 0; i < 5; i++) {
421
+ a[i] = i; // Assign values to array elements
422
+ }
423
+
424
+ for(int i = 0; i < 5; i++) {
425
+ printf("value in array %d\n", a[i]); // Print array elements
426
+ }
427
+
428
+ return 0;
429
+ }
430
+ ```
431
+
432
+ ------------PAGE TALK ABOUT------------
433
+ ุชุชุญุฏุซ ุงู„ุตูุญุฉ ุนู† ุงู„ู…ุตููˆูุงุช ููŠ ู„ุบุฉ CุŒ ูˆ๏ฟฝ๏ฟฝู†ู‡ุง ุชูุณุชุฎุฏู… ู„ุชุฎุฒูŠู† ุนุฏุฉ ู‚ูŠู… ู…ู† ู†ูุณ ุงู„ู†ูˆุน.
434
+ ุชูˆุถุญ ุฃู† ุงู„ูˆุตูˆู„ ุฅู„ู‰ ุนู†ุงุตุฑ ุงู„ู…ุตููˆูุฉ ูŠุชู… ุจุงุณุชุฎุฏุงู… ุงู„ูู‡ุฑุณ ูˆูŠุจุฏุฃ ู…ู† 0.
435
+ ูƒู…ุง ุชุดุฑุญ ุฃู† ุงุณู… ุงู„ู…ุตููˆูุฉ ูŠุดูŠุฑ ุฅู„ู‰ ุฃูˆู„ ุนู†ุตุฑ ููŠู‡ุง ูƒู…ุคุดุฑ ุซุงุจุช.
436
+ ูŠูˆุฌุฏ ุฃูŠุถู‹ุง ู…ุซุงู„ ุจุฑู…ุฌูŠ ูŠุนุฑู‘ู ู…ุตููˆูุฉ ู…ู† 5 ุนู†ุงุตุฑุŒ ุซู… ูŠู…ู„ุคู‡ุง ูˆูŠุทุจุน ู‚ูŠู…ู‡ุง ุจุงุณุชุฎุฏุงู… ุญู„ู‚ุชูŠ for.
437
+
438
+
439
+ ================================================================================
440
+ PAGE 14 - page_0014.png
441
+ ================================================================================
442
+
443
+ ------------TEXT EXTRACTED------------
444
+ 3. Arrays
445
+
446
+ Points to Remember
447
+
448
+ 1. An array is a composite data structure in which you can store multiple
449
+ values. Array elements are accessed using subscript.
450
+
451
+ 2. The subscript operator has the highest precedence. Thus if you write
452
+ a[2]++,it increments the value at location 2 in the array.
453
+
454
+ 3. The valid range of subscript is 0 to size โˆ’1.
455
+
456
+ ------------PAGE TALK ABOUT------------
457
+ ุชุชุญุฏุซ ุงู„ุตูุญุฉ ุนู† ุงู„ู…ุตููˆูุงุช (Arrays) ูˆุฃู‡ู… ุงู„ู†ู‚ุงุท ุงู„ุฃุณุงุณูŠุฉ ุงู„ู…ุชุนู„ู‚ุฉ ุจู‡ุง ููŠ ุงู„ุจุฑู…ุฌุฉ.
458
+ ุชูˆุถุญ ุฃู† ุงู„ู…ุตููˆูุฉ ู‡ูŠ ุจู†ูŠุฉ ุจูŠุงู†ุงุช ู…ุฑูƒุจุฉ ุชูุณุชุฎุฏู… ู„ุชุฎุฒูŠู† ุนุฏุฉ ู‚ูŠู…ุŒ ูˆูŠุชู… ุงู„ูˆุตูˆู„ ุฅู„ู‰ ุนู†ุงุตุฑู‡ุง ุจุงุณุชุฎุฏุงู… ุงู„ูู‡ุฑุณ (subscript).
459
+ ูƒู…ุง ุชุดุฑุญ ุฃู† ู…ุนุงู…ู„ ุงู„ูู‡ุฑุณุฉ ู„ู‡ ุฃูˆู„ูˆูŠุฉ ุนุงู„ูŠุฉุŒ ู„ุฐู„ูƒ ุงู„ุชุนุจูŠุฑ a[2]++ ูŠุฒูŠุฏ ู‚ูŠู…ุฉ ุงู„ุนู†ุตุฑ ุงู„ู…ูˆุฌูˆุฏ ููŠ ุงู„ู…ูˆู‚ุน 2.
460
+ ูˆุชุฐูƒุฑ ุฃูŠุถู‹ุง ุฃู† ุงู„ู…ุฌุงู„ ุงู„ุตุญูŠุญ ู„ู„ูู‡ุงุฑุณ ูŠุจุฏุฃ ู…ู† 0 ูˆูŠู†ุชู‡ูŠ ุนู†ุฏ size โˆ’ 1.
461
+ ุงู„ุนู†ุตุฑ ุงู„ุจุตุฑูŠ ุงู„ูˆุญูŠุฏ ู‡ูˆ ุชู†ุณูŠู‚ ู†ุตูŠ ุชุนู„ูŠู…ูŠ ุจุนู†ูˆุงู† ูƒุจูŠุฑ ูˆู‚ุงุฆู…ุฉ ู…ุฑู‚ู…ุฉ ุจุฏูˆู† ุตูˆุฑ ุฃูˆ ู…ุฎุทุทุงุช.
462
+
463
+
464
+ ================================================================================
465
+ PAGE 15 - page_0015.png
466
+ ================================================================================
467
+
468
+ ------------TEXT EXTRACTED------------
469
+ Address of Array Elements
470
+
471
+ โ€ข Each array element has a memory address.
472
+
473
+ โ€ข Elements are stored in consecutive memory locations.
474
+
475
+ #include <stdio.h>
476
+ int main() {
477
+ int a[5];
478
+ for(int i = 0; i < 5; i++) {
479
+ a[i] = i; // Assign values to array
480
+ }
481
+ for(int i = 0; i < 5; i++) {
482
+ printf("value in array %d and address is %p\n", a[i], &a[i]);
483
+ }
484
+ return 0;
485
+ }
486
+
487
+ ------------PAGE TALK ABOUT------------
488
+ ุชุชุญุฏุซ ุงู„ุตูุญุฉ ุนู† ุนู†ุงูˆูŠู† ุนู†ุงุตุฑ ุงู„ู…ุตููˆูุฉ ููŠ ู„ุบุฉ CุŒ ูˆุฃู† ูƒู„ ุนู†ุตุฑ ุฏุงุฎู„ ุงู„ู…ุตููˆูุฉ ู„ู‡ ุนู†ูˆุงู† ููŠ ุงู„ุฐุงูƒุฑุฉ.
489
+ ูƒู…ุง ุชูˆุถู‘ุญ ุฃู† ุนู†ุงุตุฑ ุงู„ู…ุตููˆูุฉ ุชูุฎุฒู‘ูŽู† ููŠ ู…ูˆุงู‚ุน ู…ุชุชุงู„ูŠุฉ ุฏุงุฎู„ ุงู„ุฐุงูƒุฑุฉ.
490
+ ูŠูˆุฌุฏ ู…ุซุงู„ ุจุฑู…ุฌูŠ ูŠุนุฑู‘ู ู…ุตููˆูุฉ ู…ู† 5 ุนู†ุงุตุฑุŒ ุซู… ูŠู…ู„ุคู‡ุง ุจู‚ูŠู…ุŒ ูˆุจุนุฏ ุฐู„ูƒ ูŠุทุจุน ู‚ูŠู…ุฉ ูƒู„ ุนู†ุตุฑ ู…ุน ุนู†ูˆุงู†ู‡ ุจุงุณุชุฎุฏุงู… printf.
491
+ ุงู„ุชุตู…ูŠู… ุนุจุงุฑุฉ ุนู† ุดุฑูŠุญุฉ ุชุนู„ูŠู…ูŠุฉ ุชุญุชูˆูŠ ุนู„ู‰ ุนู†ูˆุงู† ูƒุจูŠุฑ ูˆู†ู‚ุทุชูŠู† ุฑุฆูŠุณูŠุชูŠู† ู…ุน ุตู†ุฏูˆู‚ ูƒูˆุฏ ุจุฑู…ุฌูŠ ููŠ ุงู„ุฃุณูู„.
492
+
493
+
494
+ ================================================================================
495
+ PAGE 16 - page_0016.png
496
+ ================================================================================
497
+
498
+ ------------TEXT EXTRACTED------------
499
+ Accessing Arrays Using Pointers
500
+
501
+ โ€ข Arrays can be accessed using pointers.
502
+ โ€ข Pointer arithmetic moves the pointer to the next element.
503
+
504
+ #include <stdio.h>
505
+
506
+ int main() {
507
+ int a[5] = {10, 20, 30, 40, 50};
508
+
509
+ int *ptr = a; // Assign base address of array to pointer
510
+
511
+ for(int i = 0; i < 5; i++) {
512
+ printf("value in array %d and address is %p\n", *ptr, ptr);
513
+
514
+ ptr=ptr+1; // Move pointer to next element
515
+ }
516
+ }
517
+
518
+ return 0;
519
+
520
+ ------------PAGE TALK ABOUT------------
521
+ ุชุชุญุฏุซ ุงู„ุตูุญุฉ ุนู† ูƒูŠููŠุฉ ุงู„ูˆุตูˆู„ ุฅู„ู‰ ุนู†ุงุตุฑ ุงู„ู…ุตููˆูุฉ ุจุงุณุชุฎุฏุงู… ุงู„ู…ุคุดุฑุงุช ููŠ ู„ุบุฉ C.
522
+ ุชูˆุถุญ ุฃู† ุงุณู… ุงู„ู…ุตููˆูุฉ ูŠู…ูƒู† ุฅุณู†ุงุฏู‡ ุฅู„ู‰ ู…ุคุดุฑ ู„ูŠุดูŠุฑ ุฅู„ู‰ ุฃูˆู„ ุนู†ุตุฑ ููŠู‡ุงุŒ ุซู… ูŠู…ูƒู† ุงู„ุชู†ู‚ู„ ุจูŠู† ุงู„ุนู†ุงุตุฑ ุจุงุณุชุฎุฏุงู… ุงู„ุนู…ู„ูŠุงุช ุงู„ุญุณุงุจูŠุฉ ุนู„ู‰ ุงู„ู…ุคุดุฑ.
523
+ ูŠูˆุฌุฏ ู…ุซุงู„ ุจุฑู…ุฌูŠ ูŠุนุฑู‘ู ู…ุตููˆูุฉ ู…ู† 5 ุฃุนุฏุงุฏุŒ ุซู… ูŠุณุชุฎุฏู… ู…ุคุดุฑู‹ุง ู„ุทุจุงุนุฉ ู‚ูŠู…ุฉ ูƒู„ ุนู†ุตุฑ ูˆุนู†ูˆุงู†ู‡ ููŠ ุงู„ุฐุงูƒุฑุฉ.
524
+ ุงู„ุชุตู…ูŠู… ุนุจุงุฑุฉ ุนู† ุดุฑูŠุญุฉ ุชุนู„ูŠู…ูŠุฉ ุจุนู†ูˆุงู† ูƒุจูŠุฑ ู…ุน ู†ู‚ุทุชูŠู† ุชูˆุถูŠุญูŠุชูŠู†ุŒ ูˆุฃุณูู„ู‡ุง ุตู†ุฏูˆู‚ ูŠุญุชูˆูŠ ุนู„ู‰ ูƒูˆุฏ ุจุฑู…ุฌูŠ ู…ู„ูˆู‘ู†.
525
+
526
+
527
+ ================================================================================
528
+ PAGE 17 - page_0017.png
529
+ ================================================================================
530
+
531
+ ------------TEXT EXTRACTED------------
532
+ Accessing Arrays Using Pointers
533
+
534
+ Points to Remember
535
+
536
+ 1. Array elements can be accessed using pointers.
537
+
538
+ 2. The array name is the pointer constant which can be assigned to any pointer variable.
539
+
540
+ #include <stdio.h>
541
+
542
+ int main() {
543
+
544
+ int a[5] = {10, 20, 30, 40, 50};
545
+
546
+ int *ptr = a; // Assign base address of array to pointer
547
+
548
+ for(int i = 0; i < 5; i++) {
549
+
550
+ printf("value in array %d and address is %p\n", *ptr, ptr);
551
+
552
+ ptr=ptr+1; // Move pointer to next element
553
+
554
+ }
555
+
556
+ return 0;
557
+
558
+ }
559
+
560
+ ------------PAGE TALK ABOUT------------
561
+ ุชุชุญุฏุซ ุงู„ุตูุญุฉ ุนู† ูƒูŠููŠุฉ ุงู„ูˆุตูˆู„ ุฅู„ู‰ ุนู†ุงุตุฑ ุงู„ู…ุตููˆูุฉ ุจุงุณุชุฎุฏุงู… ุงู„ู…ุคุดุฑุงุช ููŠ ู„ุบุฉ C.
562
+ ุชูˆุถุญ ุฃู† ุงุณู… ุงู„ู…ุตููˆูุฉ ูŠู…ุซู„ ุนู†ูˆุงู† ุงู„ุจุฏุงูŠุฉ ูˆูŠู…ูƒู† ุฅุณู†ุงุฏู‡ ุฅู„ู‰ ู…ุชุบูŠุฑ ู…ุคุดุฑ.
563
+ ูŠูˆุฌุฏ ู…ุซุงู„ ุจุฑู…ุฌูŠ ูŠุนุฑู‘ู ู…ุตููˆูุฉ ู…ู† 5 ุนู†ุงุตุฑุŒ ุซู… ูŠุณุชุฎุฏู… ู…ุคุดุฑู‹ุง ู„ุทุจุงุนุฉ ู‚ูŠู…ุฉ ูƒู„ ุนู†ุตุฑ ูˆุนู†ูˆุงู†ู‡.
564
+ ูƒู…ุง ูŠุจูŠู‘ู† ุงู„ู…ุซุงู„ ุชุญุฑูŠูƒ ุงู„ู…ุคุดุฑ ุฅู„ู‰ ุงู„ุนู†ุตุฑ ุงู„ุชุงู„ูŠ ุจุงุณุชุฎุฏุงู… `ptr = ptr + 1`.
565
+
566
+
567
+ ================================================================================
568
+ PAGE 18 - page_0018.png
569
+ ================================================================================
570
+
571
+ ------------TEXT EXTRACTED------------
572
+ Manipulating arrays using pointers
573
+
574
+ โ€ข Pointers can be used to manipulate arrays by incrementing or decrementing the pointer.
575
+ โ€ข Pointer arithmetic automatically adjusts the pointer based on the data type size.
576
+
577
+ ```c
578
+ #include <stdio.h>
579
+ int main() {
580
+ int a[5] = {10, 20, 30, 40, 50};
581
+
582
+ int *ptr = a; // Assign base address of array to pointer
583
+ for(int i = 0; i < 5; i++) {
584
+ printf("value in array %d and address is %p\n", *ptr, ptr);
585
+
586
+ ptr++; // Move pointer to next element
587
+ }
588
+
589
+ return 0;
590
+ }
591
+ ```
592
+
593
+ ------------PAGE TALK ABOUT------------
594
+ ุชุชุญุฏุซ ุงู„ุตูุญุฉ ุนู† ูƒูŠููŠุฉ ุงู„ุชุนุงู…ู„ ู…ุน ุงู„ู…ุตููˆูุงุช ุจุงุณุชุฎุฏุงู… ุงู„ู…ุคุดุฑุงุช ููŠ ู„ุบุฉ CุŒ ู…ู† ุฎู„ุงู„ ุชุญุฑูŠูƒ ุงู„ู…ุคุดุฑ ุจูŠู† ุนู†ุงุตุฑ ุงู„ู…ุตููˆูุฉ.
595
+ ุชูˆุถุญ ุฃู† ุงู„ุนู…ู„ูŠุงุช ุงู„ุญุณุงุจูŠุฉ ุนู„ู‰ ุงู„ู…ุคุดุฑ ู…ุซู„ `ptr++` ุชู†ู‚ู„ู‡ ุชู„ู‚ุงุฆูŠู‹ุง ุญุณุจ ุญุฌู… ู†ูˆุน ุงู„ุจูŠุงู†ุงุชุŒ ูˆู„ูŠุณ ุจู…ู‚ุฏุงุฑ ุจุงูŠุช ูˆุงุญุฏ ูู‚ุท.
596
+ ูŠูˆุฌุฏ ู…ุซุงู„ ุจุฑู…ุฌูŠ ูŠุนุฑู‘ู ู…ุตููˆูุฉ ุฃุนุฏุงุฏ ุตุญูŠุญุฉุŒ ุซู… ูŠุฑุจุท ู…ุคุดุฑู‹ุง ุจุฃูˆู„ ุนู†ุตุฑ ููŠู‡ุง ูˆูŠุทุจุน ุงู„ู‚ูŠู…ุฉ ูˆุงู„ุนู†ูˆุงู† ู„ูƒู„ ุนู†ุตุฑ ุฏุงุฎู„ ุญู„ู‚ุฉ.
597
+ ุงู„ุนู†ุตุฑ ุงู„ุจุตุฑูŠ ุงู„ุฃุณุงุณูŠ ู‡ูˆ ุนู†ูˆุงู† ูƒุจูŠุฑ ููŠ ุงู„ุฃุนู„ู‰ ู…ุน ู†ู‚ุทุชูŠู† ุชูˆุถูŠุญูŠุชูŠู†ุŒ ูˆุฃุณูู„ู‡ุง ุตู†ุฏูˆู‚ ุฑู…ุงุฏูŠ ูŠุญุชูˆูŠ ุนู„ู‰ ุงู„ูƒูˆุฏ ู…ุน ุชู„ูˆูŠู† ู†ุญูˆูŠ ูˆุชุนู„ูŠู‚ ุฃุญู…ุฑ ูŠุดุฑุญ ุงู†ุชู‚ุงู„ ุงู„ู…ุคุดุฑ ู„ู„ุนู†ุตุฑ ุงู„ุชุงู„ูŠ.
598
+
599
+
600
+ ================================================================================
601
+ PAGE 19 - page_0019.png
602
+ ================================================================================
603
+
604
+ ------------TEXT EXTRACTED------------
605
+ Manipulating arrays using pointers
606
+
607
+ Explanation:
608
+
609
+ โ€ข ptr++ moves the pointer to the next element in the array.
610
+ โ€ข The pointer is incremented by the size of the data type (e.g., 2 bytes for int).
611
+
612
+ ```c
613
+ #include <stdio.h>
614
+
615
+ int main() {
616
+ int a[5] = {10, 20, 30, 40, 50};
617
+ int *ptr = a; // Assign base address of array to pointer
618
+ for(int i = 0; i < 5; i++) {
619
+ printf("value in array %d and address is %p\n", *ptr, ptr);
620
+ ptr++; // Move pointer to next element
621
+ }
622
+
623
+ return 0;
624
+ }
625
+ ```
626
+
627
+ ------------PAGE TALK ABOUT------------
628
+ ุชุชุญุฏุซ ุงู„ุตูุญุฉ ุนู† ูƒูŠููŠุฉ ุงู„ุชุนุงู…ู„ ู…ุน ุงู„ู…ุตููˆูุงุช ุจุงุณุชุฎุฏุงู… ุงู„ู…ุคุดุฑุงุช ููŠ ู„ุบุฉ C.
629
+ ุชูˆุถุญ ุฃู† ุงู„ุชุนู„ูŠู…ุฉ `ptr++` ุชู†ู‚ู„ ุงู„ู…ุคุดุฑ ุฅู„ู‰ ุงู„ุนู†ุตุฑ ุงู„ุชุงู„ูŠ ููŠ ุงู„ู…ุตููˆูุฉุŒ ูˆุฃู† ุงู„ุฒูŠุงุฏุฉ ุชุชู… ุญุณุจ ุญุฌู… ู†ูˆุน ุงู„ุจูŠุงู†ุงุช.
630
+ ูŠูˆุฌุฏ ู…ุซุงู„ ุจุฑู…ุฌูŠ ูŠุนุฑู‘ู ู…ุตููˆูุฉ ู…ู† 5 ุนู†ุงุตุฑุŒ ุซู… ูŠุณุชุฎุฏู… ู…ุคุดุฑู‹ุง ู„ู„ุชู†ู‚ู„ ุจูŠู†ู‡ุง ูˆุทุจุงุนุฉ ุงู„ู‚ูŠู…ุฉ ูˆุงู„ุนู†ูˆุงู† ู„ูƒู„ ุนู†ุตุฑ.
631
+ ุงู„ุนู†ุตุฑ ุงู„ุจุตุฑูŠ ุงู„ุฃุณุงุณูŠ ู‡ูˆ ุตู†ุฏูˆู‚ ูŠุญุชูˆูŠ ุนู„ู‰ ูƒูˆุฏ ู…ู„ูˆู‘ู† ู…ุน ุชุนู„ูŠู‚ ูŠุดุฑุญ ุญุฑูƒุฉ ุงู„ู…ุคุดุฑ ุฅู„ู‰ ุงู„ุนู†ุตุฑ ุงู„ุชุงู„ูŠ.
632
+
633
+
634
+ ================================================================================
635
+ PAGE 20 - page_0020.png
636
+ ================================================================================
637
+
638
+ ------------TEXT EXTRACTED------------
639
+ Two-Dimensional Arrays
640
+
641
+ โ€ข A two-dimensional array is an array of arrays.
642
+
643
+ โ€ข It is stored in row-major order (all elements of a row are stored consecutively).
644
+
645
+ โ€ข Elements are accessed using two indices: array[row][column].
646
+
647
+ ```c
648
+ #include <stdio.h>
649
+ int main() {
650
+ int a[3][2] = {{1, 2}, {3, 4}, {5, 6}}; // Declare and initialize 2D array
651
+ for(int i = 0; i < 3; i++) {
652
+ for(int j = 0; j < 2; j++) {
653
+ printf("a[%d][%d] = %d, Address = %p\n", i, j, a[i][j], &a[i][j]);
654
+ }
655
+ }
656
+ return 0;
657
+ }
658
+ ```
659
+
660
+ ------------PAGE TALK ABOUT------------
661
+ ุชุชุญุฏุซ ุงู„ุตูุญุฉ ุนู† ุงู„ู…ุตููˆูุงุช ุซู†ุงุฆูŠุฉ ุงู„ุฃุจุนุงุฏ ููŠ ู„ุบุฉ ุงู„ุจุฑู…ุฌุฉ CุŒ ูˆุชูˆุถุญ ุฃู†ู‡ุง ุนุจุงุฑุฉ ุนู† ู…ุตููˆูุฉ ู…ู† ุงู„ู…ุตููˆูุงุช.
662
+ ูƒู…ุง ุชุดุฑุญ ุฃู† ุชุฎุฒูŠู† ุงู„ุนู†ุงุตุฑ ูŠุชู… ุจุทุฑูŠู‚ุฉ row-major orderุŒ ุฃูŠ ุชูุฎุฒู† ุนู†ุงุตุฑ ูƒู„ ุตู ุจุดูƒู„ ู…ุชุชุงู„ู ููŠ ุงู„ุฐุงูƒุฑุฉ.
663
+ ูˆุชูˆุถุญ ุฃูŠุถู‹ุง ุทุฑูŠู‚ุฉ ุงู„ูˆุตูˆู„ ุฅู„ู‰ ุงู„ุนู†ุงุตุฑ ุจุงุณุชุฎุฏุงู… ูู‡ุฑุณูŠู† ุจุงู„ุดูƒู„ array[row][column].
664
+ ูŠูˆุฌุฏ ููŠ ุงู„ุฃุณูู„ ู…ุซุงู„ ุจุฑู…ุฌูŠ ูŠุนุฑู‘ู ู…ุตููˆูุฉ 3ร—2ุŒ ุซู… ูŠุณุชุฎุฏู… ุญู„ู‚ุชูŠู† ู…ุชุฏุงุฎู„ุชูŠู† ู„ุทุจุงุนุฉ ู‚ูŠู… ุงู„ุนู†ุงุตุฑ ูˆุนู†ุงูˆูŠู†ู‡ุง ููŠ ุงู„ุฐุงูƒุฑุฉ.
665
+
666
+
667
+ ================================================================================
668
+ PAGE 21 - page_0021.png
669
+ ================================================================================
670
+
671
+ ------------TEXT EXTRACTED------------
672
+ Two-Dimensional Arrays
673
+
674
+ Explanation:
675
+
676
+ โ€ข The array a has 3 rows and 2 columns.
677
+
678
+ โ€ข Elements are accessed using a[i][j], where i is the row index and j is the column index.
679
+
680
+ โ€ข The addresses of elements are printed to show the memory layout (row-major order).
681
+
682
+ #include <stdio.h>
683
+
684
+ int main() {
685
+
686
+ int a[3][2] = {{1, 2}, {3, 4}, {5, 6}}; // Declare and initialize 2D array
687
+
688
+ for(int i = 0; i < 3; i++) {
689
+
690
+ for(int j = 0; j < 2; j++) {
691
+
692
+ printf("a[%d][%d] = %d, Address = %p\n", i, j, a[i][j], &a[i][j]);
693
+
694
+ }
695
+
696
+ }
697
+
698
+ return 0;
699
+ }
700
+
701
+ ------------PAGE TALK ABOUT------------
702
+ ุชุชุญุฏุซ ุงู„ุตูุญุฉ ุนู† ุงู„ู…ุตููˆูุงุช ุซู†ุงุฆูŠุฉ ุงู„ุฃุจุนุงุฏ ููŠ ู„ุบุฉ CุŒ ูˆูƒูŠููŠุฉ ุชุนุฑูŠู ู…ุตููˆูุฉ ุจุงุณู… a ุชุญุชูˆูŠ ุนู„ู‰ 3 ุตููˆู ูˆ2 ุฃุนู…ุฏุฉ.
703
+ ุชูˆุถุญ ุฃู† ุงู„ูˆุตูˆู„ ุฅู„ู‰ ุงู„ุนู†ุงุตุฑ ูŠุชู… ุจุงุณุชุฎุฏุงู… ุงู„ุตูŠุบุฉ a[i][j] ุญูŠุซ i ุชู…ุซู„ ุงู„ุตู ูˆj ุชู…ุซู„ ุงู„ุนู…ูˆุฏ.
704
+ ูƒู…ุง ุชุนุฑุถ ู…ุซุงู„ู‹ุง ุจุฑู…ุฌูŠู‹ุง ูŠุทุจุน ู‚ูŠู…ุฉ ูƒู„ ุนู†ุตุฑ ูˆุนู†ูˆุงู†ู‡ ููŠ ุงู„ุฐุงูƒุฑุฉ ู„ุดุฑุญ ุชุฑุชูŠุจ ุงู„ุชุฎุฒูŠู† row-major order.
705
+ ูŠูˆุฌุฏ ุชุตู…ูŠู… ุชุนู„ูŠู…ูŠ ุจุณูŠุท ูŠุชุถู…ู† ุนู†ูˆุงู†ู‹ุง ูƒุจูŠุฑู‹ุงุŒ ู†ู‚ุงุท ุดุฑุญุŒ ูˆู…ุฑุจุนู‹ุง ูŠุญุชูˆูŠ ุนู„ู‰ ูƒูˆุฏ ุจุฑู…ุฌูŠ ู…ู†ุณู‚ ุจุฃู„ูˆุงู† ู…ุฎุชู„ูุฉ.
706
+
707
+
708
+ ================================================================================
709
+ PAGE 22 - page_0022.png
710
+ ================================================================================
711
+
712
+ ------------TEXT EXTRACTED------------
713
+ Two-Dimensional Arrays
714
+
715
+ Explanation:
716
+
717
+ โ€ข The array a has 3 rows and 2 columns.
718
+
719
+ โ€ข Elements are accessed using a[i][j], where i is the row index and j is the column index.
720
+
721
+ โ€ข The addresses of elements are printed to show the memory layout (row-major order).
722
+
723
+ #include <stdio.h>
724
+
725
+ int main() {
726
+
727
+ int a[3][2] = {{1, 2}, {3, 4}, {5, 6}}; // Declare and initialize 2D array
728
+
729
+ for(int i = 0; i < 3; i++) {
730
+
731
+ for(int j = 0; j < 2; j++) {
732
+
733
+ printf("a[%d][%d] = %d, Address = %p\n", i, j, a[i][j], &a[i][j]);
734
+
735
+ }
736
+
737
+ }
738
+
739
+ return 0;
740
+ }
741
+
742
+ ------------PAGE TALK ABOUT------------
743
+ ุชุชุญุฏุซ ุงู„ุตูุญุฉ ุนู† ุงู„ู…ุตููˆูุงุช ุซู†ุงุฆูŠุฉ ุงู„ุฃุจุนุงุฏ ููŠ ู„ุบุฉ CุŒ ูˆูƒูŠููŠุฉ ุชุนุฑูŠู ู…ุตููˆูุฉ ุจุงุณู… a ุชุญุชูˆูŠ ุนู„ู‰ 3 ุตููˆู ูˆ2 ุฃุนู…ุฏุฉ.
744
+ ุชูˆุถุญ ุฃู† ุงู„ูˆุตูˆู„ ุฅู„ู‰ ุงู„ุนู†ุงุตุฑ ูŠุชู… ุจุงุณุชุฎุฏุงู… ุงู„ุตูŠุบุฉ a[i][j] ุญูŠุซ i ุชู…ุซู„ ุงู„ุตู ูˆj ุชู…ุซู„ ุงู„ุนู…ูˆุฏ.
745
+ ูƒู…ุง ุชุนุฑุถ ู…ุซุงู„ู‹ุง ุจุฑู…ุฌูŠู‹ุง ูŠุทุจุน ู‚ูŠู…ุฉ ูƒู„ ุนู†ุตุฑ ู…ุน ุนู†ูˆุงู†ู‡ ููŠ ุงู„ุฐุงูƒุฑุฉ ู„ุดุฑุญ ุชุฑุชูŠุจ ุงู„ุชุฎุฒูŠู† row-major order.
746
+ ูŠูˆุฌุฏ ุนู†ูˆุงู† ูƒุจูŠุฑ ููŠ ุงู„ุฃุนู„ู‰ ูˆู†ู‚ุงุท ุดุฑุญุŒ ูˆุฃุณูู„ู‡ุง ุตู†ุฏูˆู‚ ูŠุญุชูˆูŠ ุนู„ู‰ ูƒูˆุฏ ุจุฑู…ุฌูŠ ู…ู†ุณู‚ ุจุฃู„ูˆุงู† ู…ุฎุชู„ูุฉ.
747
+
748
+
749
+ ================================================================================
750
+ PAGE 23 - page_0023.png
751
+ ================================================================================
752
+
753
+ ------------TEXT EXTRACTED------------
754
+ Multiple Choice Questions
755
+
756
+ 1. What is the output of the following code?
757
+
758
+ ```c
759
+ #include <stdio.h>
760
+ int main() {
761
+ int x = 10;
762
+ printf("Address of x: %p", &x);
763
+ return 0;
764
+ }
765
+ ```
766
+
767
+ a) 10
768
+ b) Address of x
769
+ c) Compilation error
770
+ d) Runtime error
771
+
772
+ 2. What should be filled in the blank to correctly assign the address of x to the pointer ptr?
773
+
774
+ ```c
775
+ #include <stdio.h>
776
+ int main() {
777
+ int x = 10;
778
+ int *ptr; ptr = _____; // Missing part
779
+ printf("Value of x: %d", *ptr);
780
+ return 0;
781
+ }
782
+ ```
783
+
784
+ a) x
785
+ b) &x
786
+ c) *x
787
+ d) %x
788
+
789
+ ------------PAGE TALK ABOUT------------
790
+ ุงู„ุตูุญุฉ ุชุนุฑุถ ุฃุณุฆู„ุฉ ุงุฎุชูŠุงุฑ ู…ู† ู…ุชุนุฏุฏ ููŠ ู„ุบุฉ C ุญูˆู„ ุงู„ู…ุคุดุฑุงุช ูˆุงู„ุนู†ุงูˆูŠู† ููŠ ุงู„ุฐุงูƒุฑุฉ.
791
+ ุงู„ุณ๏ฟฝ๏ฟฝุงู„ ุงู„ุฃูˆู„ ูŠุฎุชุจุฑ ูู‡ู… ุงุณุชุฎุฏุงู… ุงู„ุนุงู…ู„ `&` ู…ุน `printf` ูˆุงู„ุตูŠุบุฉ `%p` ู„ุทุจุงุนุฉ ุนู†ูˆุงู† ุงู„ู…ุชุบูŠุฑ `x`.
792
+ ุงู„ุณุคุงู„ ุงู„ุซุงู†ูŠ ูŠุฎุชุจุฑ ูƒูŠููŠุฉ ุฅุณู†ุงุฏ ุนู†ูˆุงู† ุงู„ู…ุชุบูŠุฑ ุฅู„ู‰ ู…ุคุดุฑ `ptr` ุซู… ููƒ ุงู„ุฅุดุงุฑุฉ ุฅู„ูŠู‡ ุจุงุณุชุฎุฏุงู… `*ptr`.
793
+ ูŠูˆุฌุฏ ุชู†ุณูŠู‚ ุจุตุฑูŠ ุชุนู„ูŠู…ูŠ ูˆุงุถุญ: ุนู†ูˆุงู† ูƒุจูŠุฑ ุฃุนู„ู‰ ุงู„ุตูุญุฉุŒ ูˆู…ุฑุจุนุงุช ูƒูˆุฏ ุจุฎู„ููŠุฉ ูุงุชุญุฉุŒ ู…ุน ุฎูŠุงุฑุงุช ุงู„ุฅุฌุงุจุฉ ู…ุตุทูู‘ุฉ ุจุฌุงู†ุจ ูƒู„ ุณุคุงู„.
794
+
795
+
796
+ ================================================================================
797
+ PAGE 24 - page_0024.png
798
+ ================================================================================
799
+
800
+ ------------TEXT EXTRACTED------------
801
+ Multiple Choice Questions
802
+
803
+ 3. What is the output of the following code?
804
+
805
+ ```c
806
+ #include <stdio.h>
807
+ int main() {
808
+ int a[3] = {10, 20, 30};
809
+ int *ptr = a;
810
+ printf("%d", *(++ptr));
811
+ return 0; }
812
+ ```
813
+
814
+ a) 10
815
+ b) 20
816
+ c) 30
817
+ d) Compilation error
818
+
819
+ ------------PAGE TALK ABOUT------------
820
+ ุงู„ุตูุญุฉ ุชุนุฑุถ ุณุคุงู„ ุงุฎุชูŠุงุฑ ู…ู† ู…ุชุนุฏุฏ ููŠ ู„ุบุฉ C ุญูˆู„ ู†ุงุชุฌ ุชู†ููŠุฐ ูƒูˆุฏ ูŠุณุชุฎุฏู… ุงู„ู…ุตููˆูุงุช ูˆุงู„ู…ุคุดุฑุงุช.
821
+ ุงู„ูƒูˆุฏ ูŠุนุฑู‘ู ู…ุตููˆูุฉ ุชุญุชูˆูŠ ุนู„ู‰ 10 ูˆ20 ูˆ30 ุซู… ูŠุญุฑู‘ูƒ ุงู„ู…ุคุดุฑ ุฅู„ู‰ ุงู„ุนู†ุตุฑ ุงู„ุชุงู„ูŠ ุจุงุณุชุฎุฏุงู… `++ptr` ู‚ุจู„ ุงู„ุทุจุงุนุฉ.
822
+ ูŠูˆุฌุฏ ุนู„ู‰ ุงู„ูŠู…ูŠู† ุฃุฑุจุน ุงุฎุชูŠุงุฑุงุช ู„ู„ุฅุฌุงุจุฉ: 10ุŒ 20ุŒ 30ุŒ ุฃูˆ ุฎุทุฃ ููŠ ุงู„ุชุฑุฌู…ุฉ.
823
+ ุงู„ุชุตู…ูŠู… ุจุณูŠุทุŒ ู…ุน ุนู†ูˆุงู† ูƒุจูŠุฑ ุฃุนู„ู‰ ุงู„ุตูุญุฉ ูˆุตู†ุฏูˆู‚ ุฑู…ุงุฏูŠ ูŠุญุชูˆูŠ ุนู„ู‰ ุงู„ูƒูˆุฏ ุงู„ู…ู„ูˆู‘ู† ุจุตูŠุบุฉ ุจุฑู…ุฌูŠุฉ.
data_structure/p2.txt ADDED
@@ -0,0 +1,637 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ "ุฃู†ุช ู…ุฏุฑุณ ุฎุจูŠุฑ ูˆู…ุญุชุฑู ููŠ ู…ุงุฏุฉ ุชุฑุงูƒูŠุจ ุจูŠุงู†ุงุช. ุฃู†ุช ุชุฏุฑู‘ุณ ุทุงู„ุจุงู‹ ูˆุชุณุงุนุฏู‡ ุนู„ู‰ ุงู„ูู‡ู….
2
+
3
+ === ู…ุญุชูˆู‰ ุงู„ูุตู„ (ุงู„ู…ุฑุฌุน ุงู„ุนู„ู…ูŠ) ===
4
+
5
+ === ู†ู‡ุงูŠุฉ ุงู„ุณูŠุงู‚ ===
6
+
7
+ **ุชุนู„ูŠู…ุงุช ู…ู‡ู…ุฉ:**
8
+ - ุงุณุชุฎุฏู… ุงู„ู…ุญุชูˆู‰ ุงู„ุนู„ู…ูŠ ุฃุนู„ุงู‡ ูƒู…ุฑุฌุน ุฃุณุงุณูŠ ู„ู„ุฅุฌุงุจุฉ
9
+ - ุฑุงุนู ุณูŠุงู‚ ุงู„ู…ุญุงุฏุซุฉ ุงู„ุณุงุจู‚ุฉ ูˆุงู„ู…ุณุชูˆู‰ ุงู„ุชุนู„ูŠู…ูŠ ู„ู„ุทุงู„ุจ
10
+ - ุฃุฌุจ ุจุดูƒู„ ูˆุงุถุญ ูˆู…ูุตู„ ุจุงู„ู„ุบุฉ ุงู„ุนุฑุจูŠุฉ
11
+ - ุงุณุชุฎุฏู… ุงู„ุฃู…ุซู„ุฉ ูˆุงู„ุชูˆุถูŠุญุงุช ุนู†ุฏ ุงู„ุญุงุฌุฉ
12
+ - ุฅุฐุง ุณุฃู„ ุงู„ุทุงู„ุจ ุนู† ุดูŠุก ุฎุงุฑุฌ ุงู„ู…ุญุชูˆู‰ ุงู„ู…ุชูˆูุฑุŒ ุฃุฎุจุฑู‡ ุจุฐู„ูƒ ุจู„ุทู
13
+
14
+
15
+ ================================================================================
16
+ SUBJECT: Lecture2_20260417_203147
17
+ TOTAL PAGES: 17
18
+ EXTRACTED ON: 2026-04-17 19:44:28
19
+ ================================================================================
20
+
21
+
22
+ ================================================================================
23
+ PAGE 1 - page_0001.png
24
+ ================================================================================
25
+
26
+ ------------TEXT EXTRACTED------------
27
+ C & Data Structures
28
+
29
+ Chapter 1: Address, Pointers, Arrays, and Structures
30
+
31
+ Dr. Amna Ali A Mohamed
32
+
33
+ Faculty of Information Technology
34
+
35
+ 60
36
+ 53
37
+ 3
38
+ 49
39
+ 46
40
+ 1
41
+ 2
42
+ 48
43
+ 16
44
+ 25
45
+ 40
46
+
47
+ ------------PAGE TALK ABOUT------------
48
+ ู‡ุฐู‡ ุงู„ุตูุญุฉ ู‡ูŠ ุบู„ุงู ุฃูˆ ู…ู‚ุฏู…ุฉ ู„ู…ุญุงุถุฑุฉ ููŠ ู…ุงุฏุฉ **C & Data Structures**ุŒ ูˆุชุญุฏูŠุฏู‹ุง **ุงู„ูุตู„ ุงู„ุฃูˆู„** ุงู„ุฐูŠ ูŠุชู†ุงูˆู„: ุงู„ุนู†ุงูˆูŠู† (Address)ุŒ ุงู„ู…ุคุดุฑุงุช (Pointers)ุŒ ุงู„ู…ุตููˆูุงุช (Arrays)ุŒ ูˆุงู„ู‡ูŠุงูƒู„ (Structures).
49
+ ุชุธู‡ุฑ ุฃูŠุถู‹ุง ุจูŠุงู†ุงุช ุงู„ู…ุญุงุถูุฑุฉ: **Dr. Amna Ali A Mohamed** ู…ู† **Faculty of Information Technology**.
50
+ ูŠูˆุฌุฏ ุนู„ู‰ ูŠู…ูŠู† ุงู„ุตูุญุฉ ุฑุณู…ูŒ ู„ุดุฌุฑุฉ ุจูŠุงู†ุงุช (Tree) ุจุนูู‚ุฏ ู…ุฑู‚ู…ุฉ ู…ุซู„ 60 ูˆ53 ูˆ3 ูˆุบูŠุฑู‡ุงุŒ ู…ุน ุฃุณู‡ู… ุชูˆุถู‘ุญ ุงู„ุนู„ุงู‚ุงุช ุจูŠู† ุงู„ุนู‚ุฏุŒ ูƒู…ุง ูŠุธู‡ุฑ ู…ุณุชุทูŠู„ ุตุบูŠุฑ ูŠุดูŠุฑ ุฅู„ู‰ ุงู„ุนู‚ุฏุฉ 60 ู„ุชู…ุซูŠู„ ููƒุฑุฉ ุงู„ู…ุคุดุฑ ุฃูˆ ุงู„ู…ุฑุฌุน.
51
+
52
+
53
+ ================================================================================
54
+ PAGE 2 - page_0002.png
55
+ ================================================================================
56
+
57
+ ------------TEXT EXTRACTED------------
58
+ Introduction to Structures
59
+
60
+ โ€ขWhat is a Structure?
61
+
62
+ โ€ข A structure is a user-defined data type in C that allows grouping variables of different
63
+
64
+ data types under a single name.
65
+
66
+ โ€ข Useful for representing real-world entities (e.g., student, employee, book).
67
+
68
+ โ€ขWhy Use Structures?
69
+
70
+ โ€ข Organize related data into a single unit.
71
+
72
+ โ€ข Simplify complex data handling.
73
+
74
+ ------------PAGE TALK ABOUT------------
75
+ ุชุชุญุฏุซ ุงู„ุตูุญุฉ ุนู† ู…ู‚ุฏู…ุฉ ู„ู‡ูŠุงูƒู„ ุงู„ุจูŠุงู†ุงุช (Structures) ููŠ ู„ุบุฉ C.
76
+ ุชูˆุถุญ ุฃู† ุงู„ู€ Structure ู‡ูˆ ู†ูˆุน ุจูŠุงู†ุงุช ูŠุนุฑู‘ูู‡ ุงู„ู…ุณุชุฎุฏู… ู„ุชุฌู…ูŠุน ู…ุชุบูŠุฑุงุช ู…ู† ุฃู†ูˆุงุน ู…ุฎุชู„ูุฉ ุชุญุช ุงุณู… ูˆุงุญุฏ.
77
+ ูƒู…ุง ุชุดุฑุญ ูุงุฆุฏุชู‡ ููŠ ุชู…ุซูŠู„ ูƒูŠุงู†ุงุช ู…ู† ุงู„ุนุงู„ู… ุงู„ุญู‚ูŠู‚ูŠ ู…ุซู„ ุงู„ุทุงู„ุจ ุฃูˆ ุงู„ู…ูˆุธู ุฃูˆ ุงู„ูƒุชุงุจ.
78
+ ูˆุชุนุฑุถ ุฃุณุจุงุจ ุงุณุชุฎุฏุงู…ู‡ุŒ ู…ุซู„ ุชู†ุธูŠู… ุงู„ุจูŠุงู†ุงุช ุงู„ู…ุฑุชุจุทุฉ ููŠ ูˆุญุฏุฉ ูˆุงุญุฏุฉ ูˆุชุจุณูŠุท ุงู„ุชุนุงู…ู„ ู…ุน ุงู„ุจูŠุงู†ุงุช ุงู„ู…ุนู‚ุฏุฉ.
79
+
80
+
81
+ ================================================================================
82
+ PAGE 3 - page_0003.png
83
+ ================================================================================
84
+
85
+ ------------TEXT EXTRACTED------------
86
+ Defining a Structure
87
+
88
+ Syntax:
89
+
90
+ struct structure_name {
91
+ data_type member1;
92
+ data_type member2;
93
+ // ...
94
+ };
95
+
96
+ struct student {
97
+ char name[30]; // Member 1: Name of the student
98
+ float marks; // Member 2: Marks of the student
99
+ };
100
+
101
+ Example:
102
+
103
+ struct Student {
104
+ char name[50];
105
+ int rollNo;
106
+ float marks;
107
+ };
108
+
109
+ โ€ข Explanation:
110
+ โ€ข struct Student defines a structure with three members: name, rollNo, and marks.
111
+
112
+ ------------PAGE TALK ABOUT------------
113
+ ุชุชุญุฏุซ ุงู„ุตูุญุฉ ุนู† ูƒูŠููŠุฉ ุชุนุฑูŠู Structure ููŠ ู„ุบุฉ C/C++ ุจุงุณุชุฎุฏุงู… ุงู„ูƒู„ู…ุฉ ุงู„ู…ูุชุงุญูŠุฉ `struct`.
114
+ ุชูˆุถุญ ุฃูˆู„ุงู‹ ุงู„ุตูŠุบุฉ ุงู„ุนุงู…ุฉ ู„ุชุนุฑูŠู ุงู„ู‡ูŠูƒู„ุŒ ุซู… ุชุนุฑุถ ู…ุซุงู„ู‹ุง ุจุณูŠุทู‹ุง ู„ู‡ูŠูƒู„ `student` ูŠุญุชูˆูŠ ุนู„ู‰ ุงู„ุงุณู… ูˆุงู„ุฏุฑุฌุงุช.
115
+ ุจุนุฏ ุฐู„ูƒ ุชู‚ุฏู… ู…ุซุงู„ู‹ุง ุฃุดู…ู„ ู„ู‡ูŠูƒู„ `Student` ูŠุถู… `name` ูˆ`rollNo` ูˆ`marks`.
116
+ ุงู„ุนู†ุงุตุฑ ุงู„ุจุตุฑูŠุฉ ุนุจุงุฑุฉ ุนู† ู…ุฑุจุนุงุช ุฑู…ุงุฏูŠุฉ ุชุญุชูˆูŠ ุนู„ู‰ ุฃูƒูˆุงุฏ ุจุฑู…ุฌูŠุฉ ู…ุน ุชู„ูˆูŠู† ู†ุญูˆูŠ ู„ุชู…ูŠูŠุฒ ุงู„ูƒู„ู…ุงุช ูˆุงู„ุฃู†ูˆุงุน ูˆุงู„ุฃู‚ูˆุงุณ.
117
+
118
+
119
+ ================================================================================
120
+ PAGE 4 - page_0004.png
121
+ ================================================================================
122
+
123
+ ------------TEXT EXTRACTED------------
124
+ Declaring Structure Variables
125
+
126
+ Two Ways to Declare:
127
+
128
+ 1. During Definition:
129
+
130
+ struct student {
131
+ char name[30];
132
+ float marks;
133
+ } student1, student2; // Declares variables student1 and student2
134
+
135
+ 2. After Definition:
136
+
137
+ struct student {
138
+ char name[30];
139
+ float marks;
140
+ };
141
+
142
+ struct student student3; // Declares a variable student3
143
+
144
+ ------------PAGE TALK ABOUT------------
145
+ ุชุดุฑุญ ุงู„ุตูุญุฉ ุทุฑูŠู‚ุชูŠู† ู„ุชุนุฑูŠู ู…ุชุบูŠุฑุงุช ู…ู† ู†ูˆุน structure ููŠ ู„ุบุฉ C.
146
+ ุงู„ุทุฑูŠู‚ุฉ ุงู„ุฃูˆู„ู‰ ุชูƒูˆู† ุฃุซู†ุงุก ุชุนุฑูŠู ุงู„ู€ struct ู†ูุณู‡ุŒ ุญูŠุซ ูŠุชู… ุฅู†ุดุงุก student1 ูˆ student2 ู…ุจุงุดุฑุฉ.
147
+ ุงู„ุทุฑูŠู‚ุฉ ุงู„ุซุงู†ูŠุฉ ุชูƒูˆู† ุจุนุฏ ุงู„ุงู†ุชู‡ุงุก ู…ู† ุชุนุฑูŠู ุงู„ู€ structุŒ ุซู… ุฅุนู„ุงู† ู…ุชุบูŠุฑ ุฌุฏูŠุฏ ู…ุซู„ student3 ุจุดูƒู„ ู…ู†ูุตู„.
148
+ ูŠูˆุฌุฏ ุชู†ุณูŠู‚ ุจุตุฑูŠ ุจุณูŠุท ุนู„ู‰ ุดูƒู„ ุนู†ูˆุงู† ูƒุจูŠุฑ ูˆุตู†ุฏูˆู‚ูŠู† ุฑู…ุงุฏูŠูŠู† ูŠุญุชูˆูŠุงู† ุนู„ู‰ ุฃู…ุซู„ุฉ ุงู„ูƒูˆุฏ ุงู„ุจุฑู…ุฌูŠ.
149
+
150
+
151
+ ================================================================================
152
+ PAGE 5 - page_0005.png
153
+ ================================================================================
154
+
155
+ ------------TEXT EXTRACTED------------
156
+ Accessing Structure Members
157
+
158
+ Dot Operator (.):
159
+ โ€ขUsed to access members of a structure variable.
160
+
161
+ โ€ขExample:
162
+
163
+ struct student student1;
164
+ strcpy(student1.name, " Ali Mohamed ");
165
+ student1.marks = 95.5;
166
+
167
+ Example Program:
168
+
169
+ #include <stdio.h>
170
+ #include <string.h>
171
+
172
+ struct student {
173
+ char name[30];
174
+ float marks;
175
+ };
176
+
177
+ int main() {
178
+ struct student student1;
179
+ strcpy(student1.name, " Ali Mohamed ");
180
+ student1.marks = 95.5;
181
+ printf("Name: %s\n", student1.name);
182
+ printf("Marks: %.2f\n", student1.marks);
183
+ return 0;
184
+ }
185
+
186
+ ------------PAGE TALK ABOUT------------
187
+ ุชุชุญุฏุซ ุงู„ุตูุญุฉ ุนู† ูƒูŠููŠุฉ ุงู„ูˆุตูˆู„ ุฅู„ู‰ ุฃุนุถุงุก ุงู„ู€ structure ููŠ ู„ุบุฉ C ุจุงุณุชุฎุฏุงู… ุนุงู…ู„ ุงู„ู†ู‚ุทุฉ (.).
188
+ ุชูˆุถุญ ุฃู† ู‡ุฐุง ุงู„ุนุงู…ู„ ูŠูุณุชุฎุฏู… ู„ู„ูˆุตูˆู„ ุฅู„ู‰ ุงู„ู…ุชุบูŠุฑุงุช ุงู„ุฏุงุฎู„ูŠุฉ ุฏุงุฎู„ ู‡ูŠูƒู„ ุงู„ุจูŠุงู†ุงุช ู…ุซู„ name ูˆ marks.
189
+ ูŠูˆุฌุฏ ู…ุซุงู„ ุจุฑู…ุฌูŠ ูŠุนุฑู‘ู struct ุจุงุณู… student ุซู… ูŠูู†ุดุฆ ู…ุชุบูŠุฑู‹ุง student1 ูˆูŠูุณู†ุฏ ู„ู‡ ุงู„ุงุณู… ูˆุงู„ุฏุฑุฌุงุช.
190
+ ูƒู…ุง ูŠุนุฑุถ ุงู„ุจุฑู†ุงู…ุฌ ุทุจุงุนุฉ ุงู„ุงุณู… ูˆุงู„ุฏุฑุฌุฉุŒ ู…ุน ูˆุฌูˆุฏ ุชู†ุณูŠู‚ ุจุตุฑูŠ ูŠุดู…ู„ ุนู†ูˆุงู† ูƒุจูŠุฑ ูˆุตู†ุฏูˆู‚ูŠู† ูŠุญุชูˆูŠุงู† ุนู„ู‰ ุฃู…ุซู„ุฉ ูƒูˆุฏ.
191
+
192
+
193
+ ================================================================================
194
+ PAGE 6 - page_0006.png
195
+ ================================================================================
196
+
197
+ ------------TEXT EXTRACTED------------
198
+ Pointers to Structures
199
+
200
+ โ€ขWhat is a Structure Pointer?
201
+ โ€ข A pointer that stores the address of a structure variable.
202
+ โ€ข Used to access structure members dynamically.
203
+
204
+ โ€ข Syntax:
205
+ struct structure_name *pointer_name;
206
+
207
+ โ€ข Example:
208
+ struct student *ptr;
209
+
210
+ #include <stdio.h>
211
+ #include <string.h>
212
+
213
+ struct student {
214
+ char name[30];
215
+ float marks;
216
+ };
217
+
218
+ int main() {
219
+ struct student student1;
220
+ struct student *ptr;
221
+
222
+ return 0;
223
+ }
224
+
225
+ ------------PAGE TALK ABOUT------------
226
+ ุชุชุญุฏุซ ุงู„ุตูุญุฉ ุนู† ุงู„ู…ุคุดุฑุงุช ุฅู„ู‰ ุงู„ู‡ูŠุงูƒู„ (Pointers to Structures) ููŠ ู„ุบุฉ CุŒ ูˆุชูˆุถุญ ุฃู†ู‡ุง ู…ุชุบูŠุฑุงุช ุชุฎุฒู† ุนู†ูˆุงู† ู…ุชุบูŠุฑ ู…ู† ู†ูˆุน struct.
227
+ ุชุดุฑุญ ุงู„ุตูŠุบุฉ ุงู„ุนุงู…ุฉ ู„ุชุนุฑูŠู ู…ุคุดุฑ ุฅู„ู‰ ู‡ูŠูƒู„ ู…ุซู„: `struct structure_name *pointer_name;` ู…ุน ู…ุซุงู„ ุนู„ู‰ `struct student *ptr;`.
228
+ ูŠูˆุฌุฏ ุฃูŠุถู‹ุง ู…ุซุงู„ ุจุฑู…ุฌูŠ ูŠุนุฑู‘ู ู‡ูŠูƒู„ `student` ูŠุญุชูˆูŠ ุนู„ู‰ `name` ูˆ`marks`ุŒ ุซู… ูŠุนุฑู‘ู ู…ุชุบูŠุฑู‹ุง ู…ู† ู‡ุฐุง ุงู„ู†ูˆุน ูˆู…ุคุดุฑู‹ุง ุฅู„ูŠู‡ ุฏุงุฎู„ `main`.
229
+ ุงู„ุนู†ุงุตุฑ ุงู„ุจุตุฑูŠุฉ ุนุจุงุฑุฉ ุนู† ุดุฑูŠุญุฉ ุชุนู„ูŠู…ูŠุฉ ุจุชู†ุณูŠู‚ ุนุฑุถ ุชู‚ุฏูŠู…ูŠุŒ ููŠู‡ุง ุนู†ูˆุงู† ูƒุจูŠุฑ ูˆู†ุตูˆุต ู†ู‚ุทูŠุฉ ูˆู…ุฑุจุนุงุช ุฑู…ุงุฏูŠุฉ ุชุญุชูˆูŠ ุนู„ู‰ ุฃู…ุซู„ุฉ ุงู„ูƒูˆุฏ.
230
+
231
+
232
+ ================================================================================
233
+ PAGE 7 - page_0007.png
234
+ ================================================================================
235
+
236
+ ------------TEXT EXTRACTED------------
237
+ Accessing Members Using Structure Pointers
238
+
239
+ Arrow Operator (->):
240
+
241
+ โ€ข Used to access members of a structure using a pointer.
242
+
243
+ โ€ข Example:
244
+
245
+ ptr->name = " Ali Mohamed ";
246
+ ptr->marks = 88.5;
247
+
248
+ Example Program:
249
+
250
+ #include <stdio.h>
251
+ #include <string.h>
252
+
253
+ struct student {
254
+ char name[30];
255
+ float marks;
256
+ };
257
+
258
+ int main() {
259
+ struct student student1;
260
+ struct student *ptr;
261
+
262
+ ptr = &student1; // Point to the structure variable
263
+ strcpy(ptr->name, โ€œAli Mohamedโ€);
264
+ ptr->marks = 88.5;
265
+
266
+ printf("Name: %s\n", ptr->name);
267
+ printf("Marks: %.2f\n", ptr->marks);
268
+
269
+ return 0;
270
+ }
271
+
272
+ ------------PAGE TALK ABOUT------------
273
+ ุงู„ุตูุญุฉ ุชุดุฑุญ ูƒูŠููŠุฉ ุงู„ูˆุตูˆู„ ุฅู„ู‰ ุฃุนุถุงุก ุงู„ู€ structure ููŠ ู„ุบุฉ C ุจุงุณุชุฎุฏุงู… ุงู„ู…ุคุดุฑ ุนุจุฑ ุงู„ุนุงู…ู„ ุงู„ุณู‡ู…ูŠ (->).
274
+ ุชูˆุถุญ ุฃู† ู‡ุฐุง ุงู„ุนุงู…ู„ ูŠูุณุชุฎุฏู… ุจุฏู„ ุงู„ู†ู‚ุทุฉ (.) ุนู†ุฏู…ุง ู†ุชุนุงู…ู„ ู…ุน ู…ุคุดุฑ ูŠุดูŠุฑ ุฅู„ู‰ struct.
275
+ ูŠูˆุฌุฏ ู…ุซุงู„ ุจุณูŠุท ูŠุนูŠู‘ู† ุงู„ุงุณู… ูˆุงู„ุฏุฑุฌุงุช ู„ู„ุทุงู„ุจ ุจุงุณุชุฎุฏุงู… ptr->name ูˆ ptr->marks.
276
+ ูƒู…ุง ุชุนุฑุถ ุจุฑู†ุงู…ุฌู‹ุง ูƒุงู…ู„ู‹ุง ูŠุนุฑู‘ู struct student ุซู… ูŠุฑุจุท ู…ุคุดุฑู‹ุง ุจู‡ ูˆูŠุทุจุน ุงู„ู‚ูŠู….
277
+ ุจุตุฑูŠู‹ุงุŒ ุงู„ุตูุญุฉ ุชุญุชูˆูŠ ุนู†ูˆุงู†ู‹ุง ูƒุจูŠุฑู‹ุงุŒ ู†ู‚ุงุทู‹ุง ุชูˆุถูŠุญูŠุฉ ุนู„ู‰ ุงู„ูŠุณุงุฑุŒ ูˆู…ุฑุจุน ูƒูˆุฏ ุจุฑู…ุฌูŠ ู…ู†ุณู‚ ุนู„ู‰ ุงู„ูŠู…ูŠู†.
278
+
279
+
280
+ ================================================================================
281
+ PAGE 8 - page_0008.png
282
+ ================================================================================
283
+
284
+ ------------TEXT EXTRACTED------------
285
+ Dynamic Memory Allocation for Structures
286
+
287
+ โ€ขWhy Use Dynamic Memory?
288
+ โ€ข Allocate memory at runtime for structures.
289
+ โ€ข Useful when the number of structures is not known in advance.
290
+
291
+ โ€ข Using malloc():
292
+
293
+ struct student *ptr;
294
+ ptr = (struct student *)malloc(sizeof(struct student));
295
+
296
+ ------------PAGE TALK ABOUT------------
297
+ ุชุชุญุฏุซ ุงู„ุตูุญุฉ ุนู† ุงู„ุชุฎุตูŠุต ุงู„ุฏูŠู†ุงู…ูŠูƒูŠ ู„ู„ุฐุงูƒุฑุฉ ู„ู„ู‡ูŠุงูƒู„ (Structures) ููŠ ู„ุบุฉ C.
298
+ ุชูˆุถุญ ุฃู† ุงุณุชุฎุฏุงู… ุงู„ุฐุงูƒุฑุฉ ุงู„ุฏูŠู†ุงู…ูŠูƒูŠุฉ ู…ููŠุฏ ุนู†ุฏ ุงู„ุญุงุฌุฉ ุฅู„ู‰ ุญุฌุฒ ุงู„ุฐุงูƒุฑุฉ ุฃุซู†ุงุก ุงู„ุชุดุบูŠู„ุŒ ุฎุงุตุฉ ุฅุฐุง ูƒุงู† ุนุฏุฏ ุงู„ุนู†ุงุตุฑ ุบูŠุฑ ู…ุนุฑูˆู ู…ุณุจู‚ู‹ุง.
299
+ ูƒู…ุง ุชุนุฑุถ ู…ุซุงู„ู‹ุง ุจุงุณุชุฎุฏุงู… ุงู„ุฏุงู„ุฉ malloc() ู„ุฅู†ุดุงุก ู…ุคุดุฑ ุฅู„ู‰ struct student ูˆุญุฌุฒ ู…ุณุงุญุฉ ู…ู†ุงุณุจุฉ ู„ู‡.
300
+ ูŠูˆุฌุฏ ุนู†ุตุฑ ุจุตุฑูŠ ุจุณูŠุท ุนุจุงุฑุฉ ุนู† ู…ุฑุจุน/ุฎู„ููŠุฉ ูุงุชุญุฉ ู„ุชู…ูŠูŠุฒ ู…ู‚ุทุน ุงู„ูƒูˆุฏ ุนู† ุจุงู‚ูŠ ุงู„ู†ุต.
301
+
302
+
303
+ ================================================================================
304
+ PAGE 9 - page_0009.png
305
+ ================================================================================
306
+
307
+ ------------TEXT EXTRACTED------------
308
+ Dynamic Memory Allocation for Structure's example
309
+
310
+ ```c
311
+ #include <stdio.h>
312
+ #include <stdlib.h>
313
+ #include <string.h>
314
+
315
+ struct student {
316
+ char name[30];
317
+ float marks;
318
+ };
319
+
320
+ int main() {
321
+ struct student *ptr;
322
+
323
+ ptr = (struct student *)malloc(sizeof(struct student));
324
+ if (ptr == NULL) {
325
+ printf("Memory allocation failed!\n");
326
+ return 1;
327
+ }
328
+
329
+ strcpy(ptr->name, "Amna Ali");
330
+ ptr->marks = 92.0;
331
+ printf("Name: %s\n", ptr->name);
332
+ printf("Marks: %.2f\n", ptr->marks);
333
+ free(ptr); // Free allocated memory
334
+
335
+ return 0;
336
+ }
337
+ ```
338
+
339
+ ------------PAGE TALK ABOUT------------
340
+ ุชุดุฑุญ ุงู„ุตูุญุฉ ู…ุซุงู„ู‹ุง ููŠ ู„ุบุฉ C ุนู† ุงู„ุชุฎุตูŠุต ุงู„ุฏูŠู†ุงู…ูŠูƒูŠ ู„ู„ุฐุงูƒุฑุฉ ุจุงุณุชุฎุฏุงู… `malloc` ู…ุน ู‡ูŠูƒู„ `struct student`.
341
+ ูŠุชู… ุฅู†ุดุงุก ู…ุคุดุฑ ุฅู„ู‰ ุงู„ู‡ูŠูƒู„ุŒ ุซู… ุญุฌุฒ ุฐุงูƒุฑุฉ ู„ู‡ุŒ ูˆุงู„ุชุญู‚ู‚ ู…ู† ู†ุฌุงุญ ุงู„ุญุฌุฒ ุจุงุณุชุฎุฏุงู… `NULL`.
342
+ ุจุนุฏ ุฐู„ูƒ ูŠุชู… ุชุฎุฒูŠู† ุงู„ุงุณู… ูˆุงู„ุฏุฑุฌุงุช ุฏุงุฎู„ ุงู„ู‡ูŠูƒู„ ุจุงุณุชุฎุฏุงู… ุงู„ุนุงู…ู„ `->` ุซู… ุทุจุงุนุชู‡ุง.
343
+ ููŠ ุงู„ู†ู‡ุงูŠุฉ ูŠุชู… ุชุญุฑูŠุฑ ุงู„ุฐุงูƒุฑุฉ ุจุงุณุชุฎุฏุงู… `free`ุŒ ูˆูŠุธู‡ุฑ ุงู„ู…ุญุชูˆู‰ ุฏุงุฎู„ ุตู†ุฏูˆู‚ูŠู† ู†ุตูŠูŠู† ู…ู†ุณู‚ูŠู† ู„ุนุฑุถ ุงู„ูƒูˆุฏ.
344
+
345
+
346
+ ================================================================================
347
+ PAGE 10 - page_0010.png
348
+ ================================================================================
349
+
350
+ ------------TEXT EXTRACTED------------
351
+ Passing Structures to Functions
352
+
353
+ 1. Pass by Value:
354
+ โ€ขA copy of the structure is passed to the function.
355
+ โ€ขExample:
356
+
357
+ void printStudent(struct student s) {
358
+ printf("Name: %s\n", s.name);
359
+ printf("Marks: %.2f\n", s.marks);
360
+ }
361
+
362
+ 2. Pass by Reference (Using Pointers):
363
+ โ€ขThe address of the structure is passed to the function.
364
+ โ€ขExample:
365
+
366
+ void printStudent(struct student *s) {
367
+ printf("Name: %s\n", s->name);
368
+ printf("Marks: %.2f\n", s->marks);
369
+ }
370
+
371
+ Key Points to Remember
372
+
373
+ 1. Structures group variables of different data types.
374
+
375
+ 2. Use the dot operator (.) to access members of a structure variable.
376
+
377
+ 3. Use the arrow operator (->) to access members of a structure using a pointer.
378
+
379
+ 4. Dynamic memory allocation allows creating structures at runtime.
380
+
381
+ 5. Structures can be passed to functions by value or by reference.
382
+
383
+ ------------PAGE TALK ABOUT------------
384
+ ุชุชุญุฏุซ ุงู„ุตูุญุฉ ุนู† ูƒูŠููŠุฉ ุชู…ุฑูŠุฑ ุงู„ู€ structures ุฅู„ู‰ ุงู„ุฏูˆุงู„ ููŠ ู„ุบุฉ C ุจุทุฑูŠู‚ุชูŠู†: ุจุงู„ู†ุณุฎ ุงู„ู…ุจุงุดุฑ (Pass by Value) ุฃูˆ ุจุงุณุชุฎุฏุงู… ุงู„ู…ุคุดุฑุงุช (Pass by Reference).
385
+ ุชูˆุถุญ ุฃู† ุงู„ุชู…ุฑูŠุฑ ุจุงู„ู‚ูŠู…ุฉ ูŠุฑุณู„ ู†ุณุฎุฉ ู…ู† ุงู„ู€ structureุŒ ุจูŠู†ู…ุง ุงู„ุชู…ุฑูŠุฑ ุจุงู„ู…ุฑุฌุน ูŠุฑุณู„ ุนู†ูˆุงู†ู‡ ููŠ ุงู„ุฐุงูƒุฑุฉ.
386
+ ูƒู…ุง ุชุนุฑุถ ุฃู…ุซู„ุฉ ุจุฑู…ุฌูŠุฉ ุชุจูŠู† ุงุณุชุฎุฏุงู… ุงู„ุนุงู…ู„ (.) ู„ู„ูˆุตูˆู„ ุฅู„ู‰ ุงู„ุฃุนุถุงุก ู…ุจุงุดุฑุฉุŒ ูˆุงู„ุนุงู…ู„ (->) ุนู†ุฏ ุงุณุชุฎุฏุงู… ุงู„ู…ุคุดุฑุงุช.
387
+ ูŠูˆุฌุฏ ุชู†ุณูŠู‚ ุชุนู„ูŠู…ูŠ ุจุณูŠุท ู…ุน ุนู†ูˆุงู† ูƒุจูŠุฑุŒ ู‚ุณู…ูŠู† ู„ู„ู…ู‚ุงุฑู†ุฉุŒ ูˆู…ุฑุจุนุงุช ุฑู…ุงุฏูŠุฉ ุชุญุชูˆูŠ ุนู„ู‰ ุฃู…ุซู„ุฉ ุงู„ูƒูˆุฏ.
388
+
389
+
390
+ ================================================================================
391
+ PAGE 11 - page_0011.png
392
+ ================================================================================
393
+
394
+ ------------TEXT EXTRACTED------------
395
+ Array of Structures
396
+
397
+ โ€ข What is an Array of Structures?
398
+
399
+ โ€ข An array of structures is a collection of multiple structure variables stored in contiguous memory
400
+ locations.
401
+ โ€ข Useful for managing multiple records of the same type (e.g., students, employees, books).
402
+
403
+ โ€ข Why Use an Array of Structures?
404
+
405
+ โ€ข Simplifies handling of multiple entities with the same attributes.
406
+ โ€ข Enables efficient storage and retrieval of structured data.
407
+
408
+ โ€ข Declaring an Array of Structures
409
+
410
+ Syntax: struct structure_name array_name[size];
411
+
412
+ ------------PAGE TALK ABOUT------------
413
+ ุชุชุญุฏุซ ุงู„ุตูุญุฉ ุนู† ู…ูู‡ูˆู… Array of Structures ููŠ ุงู„ุจุฑู…ุฌุฉุŒ ูˆู‡ูˆ ุงุณุชุฎุฏุงู… ู…ุตููˆูุฉ ู„ุชุฎุฒูŠู† ุนุฏุฉ ู…ุชุบูŠุฑุงุช ู…ู† ู†ูˆุน struct ุจุดูƒู„ ู…ุชุฌุงูˆุฑ ููŠ ุงู„ุฐุงูƒุฑุฉ.
414
+ ุชูˆุถุญ ูุงุฆุฏุชู‡ ููŠ ุฅุฏุงุฑุฉ ุณุฌู„ุงุช ู…ุชุนุฏุฏุฉ ู…ู† ู†ูุณ ุงู„ู†ูˆุน ู…ุซู„ ุงู„ุทู„ุงุจ ุฃูˆ ุงู„ู…ูˆุธููŠู†ุŒ ู…ุน ุชุณู‡ูŠู„ ุงู„ุชุนุงู…ู„ ู…ุน ุงู„ุจูŠุงู†ุงุช ุงู„ู…ู†ุธู…ุฉ.
415
+ ูƒู…ุง ุชุนุฑุถ ุณุจุจ ุงุณุชุฎุฏุงู…ู‡ ู…ู† ุญูŠุซ ุงู„ูƒูุงุกุฉ ููŠ ุงู„ุชุฎุฒูŠู† ูˆุงู„ุงุณุชุฑุฌุงุนุŒ ูˆุชู‚ุฏู… ุตูŠุบุฉ ุงู„ุชุตุฑูŠุญ ุงู„ุฃุณุงุณูŠุฉ: `struct structure_name array_name[size];`
416
+ ุงู„ุนู†ุตุฑ ุงู„ุจุตุฑูŠ ุงู„ุฃุณุงุณูŠ ู‡ูˆ ุดุฑูŠุญุฉ ุชุนู„ูŠู…ูŠุฉ ู†ุตูŠุฉ ุชุญุชูˆูŠ ุนู„ู‰ ุนู†ูˆุงู† ูƒุจูŠุฑ ูˆู†ู‚ุงุท ุชุนุฏุงุฏุŒ ู…ุน ุตู†ุฏูˆู‚ ุณูู„ูŠ ู…ู…ูŠุฒ ู„ุนุฑุถ ุตูŠุบุฉ ุงู„ู€ Syntax.
417
+
418
+
419
+ ================================================================================
420
+ PAGE 12 - page_0012.png
421
+ ================================================================================
422
+
423
+ ------------TEXT EXTRACTED------------
424
+ Array of Structures
425
+
426
+ โ€ข Example:
427
+
428
+ struct Student {
429
+ char name[50];
430
+ int rollNo;
431
+ float marks;
432
+ };
433
+ struct Student students[10]; // Array of 10 students
434
+
435
+ โ€ข Accessing Elements in an Array of Structures
436
+
437
+ Dot Operator (.):
438
+ โ€ข Used to access members of a structure in the array.
439
+
440
+ โ€ข Example:
441
+
442
+ students[0].rollNo = 101; // Access the first student's roll number
443
+
444
+ ------------PAGE TALK ABOUT------------
445
+ ุชุชุญุฏุซ ุงู„ุตูุญุฉ ุนู† ู…ูู‡ูˆู… **ู…ุตููˆูุฉ ู…ู† ุงู„ู‡ูŠุงูƒู„ (Array of Structures)** ููŠ ู„ุบุฉ C.
446
+ ุชูˆุถุญ ู…ุซุงู„ู‹ุง ุนู„ู‰ ู‡ูŠูƒู„ ุจุงุณู… **Student** ูŠุญุชูˆูŠ ุนู„ู‰ ุงู„ุงุณู… ูˆุฑู‚ู… ุงู„ุฌู„ูˆุณ ูˆุงู„ุฏุฑุฌุงุชุŒ ุซู… ุฅู†ุดุงุก ู…ุตููˆูุฉ ู…ู† 10 ุทู„ุงุจ.
447
+ ูƒู…ุง ุชุดุฑุญ ูƒูŠููŠุฉ ุงู„ูˆุตูˆู„ ุฅู„ู‰ ุนู†ุงุตุฑ ุงู„ู…ุตููˆูุฉ ุจุงุณุชุฎุฏุงู… **ุงู„ู…ุนุงู…ู„ ุงู„ู†ู‚ุทูŠ (.)** ู„ู„ูˆุตูˆู„ ุฅู„ู‰ ุฃุนุถุงุก ูƒู„ ู‡ูŠูƒู„.
448
+ ูŠูˆุฌุฏ ุชู†ุณูŠู‚ ุจุตุฑูŠ ุนู„ู‰ ุดูƒู„ ุดุฑูŠุญุฉ ุชุนู„ูŠู…ูŠุฉ ู…ุน ู…ุฑุจุนุงุช ุฑู…ุงุฏูŠุฉ ู„ุนุฑุถ ุฃู…ุซู„ุฉ ุงู„ุดูŠูุฑุฉ ุงู„ุจุฑู…ุฌูŠุฉ.
449
+
450
+
451
+ ================================================================================
452
+ PAGE 13 - page_0013.png
453
+ ================================================================================
454
+
455
+ ------------TEXT EXTRACTED------------
456
+ #include <stdio.h>
457
+ #include <string.h>
458
+
459
+ struct Student {
460
+ char name[50];
461
+ int rollNo;
462
+ float marks;
463
+ };
464
+
465
+ int main() {
466
+ struct Student students[3]; // Array of 3 students
467
+
468
+ // Input student details
469
+ for (int i = 0; i < 3; i++) {
470
+ printf("Enter details for student %d:\n", i + 1);
471
+ printf("Name: ");
472
+ scanf("%s", students[i].name);
473
+ printf("Roll No: ");
474
+ scanf("%d", &students[i].rollNo);
475
+ printf("Marks: ");
476
+ scanf("%f", &students[i].marks);
477
+ }
478
+
479
+ // Display student details
480
+ printf("\nStudent Details:\n");
481
+
482
+ for (int i = 0; i < 3; i++) {
483
+ printf("\nStudent %d:\n", i + 1);
484
+ printf("Name: %s\n", students[i].name);
485
+ printf("Roll No: %d\n", students[i].rollNo);
486
+ printf("Marks: %.2f\n", students[i].marks);
487
+ }
488
+
489
+ return 0;
490
+ }
491
+
492
+ ------------PAGE TALK ABOUT------------
493
+ ุงู„ุตูุญุฉ ุชุนุฑุถ ู…ุซุงู„ู‹ุง ุจู„ุบุฉ C ู„ุงุณุชุฎุฏุงู… `struct` ู„ุชุนุฑูŠู ุจูŠุงู†ุงุช ุงู„ุทุงู„ุจ ู…ุซู„ ุงู„ุงุณู… ูˆุฑู‚ู… ุงู„ุฌู„ูˆุณ ูˆุงู„ุฏุฑุฌุงุช.
494
+ ูƒู…ุง ุชูˆุถุญ ุฅู†ุดุงุก ู…ุตููˆูุฉ ู…ู† 3 ุทู„ุงุจ ุซู… ุงุณุชุฎุฏุงู… ุญู„ู‚ุฉ `for` ู„ุฅุฏุฎุงู„ ุงู„ุจูŠุงู†ุงุช ู„ูƒู„ ุทุงู„ุจ ุนุจุฑ `scanf`.
495
+ ุจุนุฏ ุฐู„ูƒ ูŠุชู… ุนุฑุถ ุจูŠุงู†ุงุช ุงู„ุทู„ุงุจ ุจุงุณุชุฎุฏุงู… `printf` ุฏุงุฎู„ ุญู„ู‚ุฉ ุฃุฎุฑู‰.
496
+ ุงู„ุนู†ุตุฑ ุงู„ุจุตุฑูŠ ุงู„ุฃุณุงุณูŠ ู‡ูˆ ูƒูˆุฏ ุจุฑู…ุฌูŠ ู…ู†ุณู‚ ุจุงู„ุฃู„ูˆุงู† ูˆู…ู‚ุณูˆู… ุฅู„ู‰ ุฌุฒุฃูŠู† ุฏุงุฎู„ ุงู„ุตูุญุฉ.
497
+
498
+
499
+ ================================================================================
500
+ PAGE 14 - page_0014.png
501
+ ================================================================================
502
+
503
+ ------------TEXT EXTRACTED------------
504
+ Dynamic Memory Allocation for an Array of Structures
505
+
506
+ โ€ข Why Use Dynamic Memory?
507
+
508
+ โ€ข Allocate memory at runtime for an array of structures.
509
+
510
+ โ€ข Useful when the number of structures is not known at compile time.
511
+
512
+ โ€ข Using malloc():
513
+
514
+ struct Student *students;
515
+ students = (struct Student *)malloc(n * sizeof(struct Student));
516
+
517
+ โ€ข Example Program:
518
+
519
+ ------------PAGE TALK ABOUT------------
520
+ ุชุชุญุฏุซ ุงู„ุตูุญุฉ ุนู† ุงู„ุชุฎุตูŠุต ุงู„ุฏูŠู†ุงู…ูŠูƒูŠ ู„ู„ุฐุงูƒุฑุฉ ู„ู…ุตููˆูุฉ ู…ู† ุงู„ู‡ูŠุงูƒู„ (Structures) ููŠ ู„ุบุฉ C.
521
+ ุชูˆุถุญ ู„ู…ุงุฐุง ู†ุณุชุฎุฏู… ุงู„ุฐุงูƒุฑุฉ ุงู„ุฏูŠู†ุงู…ูŠูƒูŠุฉุŒ ุฎุงุตุฉ ุนู†ุฏู…ุง ูŠูƒูˆู† ุนุฏุฏ ุงู„ุนู†ุงุตุฑ ุบูŠุฑ ู…ุนุฑูˆู ุฃุซู†ุงุก ุงู„ุชุฑุฌู…ุฉ.
522
+ ูƒู…ุง ุชุนุฑุถ ู…ุซุงู„ู‹ุง ุจุงุณุชุฎุฏุงู… ุงู„ุฏุงู„ุฉ malloc() ู„ุญุฌุฒ ู…ุณุงุญุฉ ู„ุนุฏุฏ n ู…ู† ุงู„ุนู†ุงุตุฑ ู…ู† ุงู„ู†ูˆุน Student.
523
+ ูŠูˆุฌุฏ ุนู†ุตุฑ ุจุตุฑูŠ ุนุจุงุฑุฉ ุนู† ู…ุฑุจุน ุฑู…ุงุฏูŠ ูŠุญุชูˆูŠ ุนู„ู‰ ู…ู‚ุทุน ุงู„ูƒูˆุฏ ุงู„ุจุฑู…ุฌูŠ ู„ุชูˆุถูŠุญ ุทุฑูŠู‚ุฉ ุงู„ุญุฌุฒ.
524
+
525
+
526
+ ================================================================================
527
+ PAGE 15 - page_0015.png
528
+ ================================================================================
529
+
530
+ ------------TEXT EXTRACTED------------
531
+ #include <stdio.h>
532
+ #include <stdlib.h>
533
+ #include <string.h>
534
+ struct Student {
535
+ char name[50];
536
+ int rollNo;
537
+ float marks;
538
+ };
539
+ int main() {
540
+ int n;
541
+ struct Student *students;
542
+
543
+ // Input the number of students
544
+ printf("Enter the number of students: ");
545
+ scanf("%d", &n);
546
+
547
+ // Dynamically allocate memory for an array of structures
548
+ students = (struct Student *)malloc(n * sizeof(struct Student));
549
+ if (students == NULL) {
550
+ printf("Memory allocation failed!\n");
551
+ return 1;
552
+ }
553
+
554
+ // Input student details
555
+ for (int i = 0; i < n; i++) {
556
+ printf("\nEnter details for student %d:\n", i + 1);
557
+ printf("Name: ");
558
+ scanf("%s", students[i].name);
559
+ printf("Roll No: ");
560
+ scanf("%d", &students[i].rollNo);
561
+ printf("Marks: ");
562
+ scanf("%f", &students[i].marks);
563
+ }
564
+
565
+ // Display student details
566
+ printf("\nStudent Details:\n");
567
+ for (int i = 0; i < n; i++) {
568
+ printf("\nStudent %d:\n", i + 1);
569
+ printf("Name: %s\n", students[i].name);
570
+ printf("Roll No: %d\n", students[i].rollNo);
571
+ printf("Marks: %.2f\n", students[i].marks);
572
+ }
573
+
574
+ // Free allocated memory
575
+ free(students);
576
+ return 0;
577
+ }
578
+
579
+ ------------PAGE TALK ABOUT------------
580
+ ุงู„ุตูุญุฉ ุชุนุฑุถ ู…ุซุงู„ู‹ุง ุจุฑู…ุฌูŠู‹ุง ุจู„ุบุฉ C ูŠุดุฑุญ ุงุณุชุฎุฏุงู… `struct` ู„ุชุฎุฒูŠู† ุจูŠุงู†ุงุช ุงู„ุทู„ุงุจ ู…ุซู„ ุงู„ุงุณู… ูˆุฑู‚ู… ุงู„ุฌู„ูˆุณ ูˆุงู„ุฏุฑุฌุงุช.
581
+ ูƒู…ุง ุชูˆุถุญ ูƒูŠููŠุฉ ุญุฌุฒ ุงู„ุฐุงูƒุฑุฉ ุฏูŠู†ุงู…ูŠูƒูŠู‹ุง ุจุงุณุชุฎุฏุงู… `malloc` ู„ู…ุตููˆูุฉ ู…ู† ุงู„ู‡ูŠุงูƒู„ ุญุณุจ ุนุฏุฏ ุงู„ุทู„ุงุจ ุงู„ุฐูŠ ูŠุฏุฎู„ู‡ ุงู„ู…ุณุชุฎุฏู….
582
+ ุงู„ุจุฑู†ุงู…ุฌ ูŠู‚ุฑุฃ ุจูŠุงู†ุงุช ูƒู„ ุทุงู„ุจ ุจุงุณุชุฎุฏุงู… `scanf` ุซู… ูŠุทุจุนู‡ุง ุจุงุณุชุฎุฏุงู… `printf` ุฏุงุฎู„ ุญู„ู‚ุงุช `for`.
583
+ ูˆููŠ ุงู„ู†ู‡ุงูŠุฉ ูŠุญุฑุฑ ุงู„ุฐุงูƒุฑุฉ ุงู„ู…ุญุฌูˆุฒุฉ ุจุงุณุชุฎุฏุงู… `free`.
584
+ ุงู„ุนู†ุตุฑ ุงู„ุจุตุฑูŠ ุงู„ูˆุญูŠุฏ ู‡ูˆ ุชู†ุณูŠู‚ ุงู„ูƒูˆุฏ ุจุฃู„ูˆุงู† ู…ุฎุชู„ูุฉ ู„ุชู…ูŠูŠุฒ ุงู„ูƒู„ู…ุงุช ุงู„ู…ูุชุงุญูŠุฉ ูˆุงู„ุฏูˆุงู„ ูˆุงู„ู…ุชุบูŠุฑุงุช.
585
+
586
+
587
+ ================================================================================
588
+ PAGE 16 - page_0016.png
589
+ ================================================================================
590
+
591
+ ------------TEXT EXTRACTED------------
592
+ Key Points to Remember
593
+
594
+ 1. Structures group variables of different data types.
595
+
596
+ 2. Use the dot operator (.) to access members of a structure variable.
597
+
598
+ 3. Use the arrow operator (->) to access members of a structure using a pointer.
599
+
600
+ 4. Dynamic memory allocation allows creating structures at runtime.
601
+
602
+ 5. Structures can be passed to functions by value or by reference.
603
+
604
+ ------------PAGE TALK ABOUT------------
605
+ ุชุชุญุฏุซ ุงู„ุตูุญุฉ ุนู† ุฃู‡ู… ุงู„ู†ู‚ุงุท ุงู„ุฃุณุงุณูŠุฉ ุงู„ู…ุชุนู„ู‚ุฉ ุจู€ Structures ููŠ ุงู„ุจุฑู…ุฌุฉ.
606
+ ุชูˆุถุญ ุฃู† ุงู„ู€ structure ุชูุณุชุฎุฏู… ู„ุชุฌู…ูŠุน ู…ุชุบูŠุฑุงุช ู…ู† ุฃู†ูˆุงุน ุจูŠุงู†ุงุช ู…ุฎุชู„ูุฉ ุฏุงุฎู„ ูƒูŠุงู† ูˆุงุญุฏ.
607
+ ูƒู…ุง ุชุดุฑุญ ุทุฑูŠู‚ุชูŠู† ู„ู„ูˆุตูˆู„ ุฅู„ู‰ ุงู„ุฃุนุถุงุก: ุจุงุณุชุฎุฏุงู… ุงู„ู†ู‚ุทุฉ (.) ุฃูˆ ุงู„ุณู‡ู… (->) ุนู†ุฏ ุงู„ุชุนุงู…ู„ ู…ุน ุงู„ู…ุคุดุฑุงุช.
608
+ ูˆุชุดูŠุฑ ุฃูŠุถู‹ุง ุฅู„ู‰ ุฅู…ูƒุงู†ูŠุฉ ุฅู†ุดุงุก structures ุฏูŠู†ุงู…ูŠูƒูŠู‹ุง ูˆู‚ุช ุงู„ุชุดุบูŠู„ ูˆุชู…ุฑูŠุฑู‡ุง ุฅู„ู‰ ุงู„ุฏูˆุงู„ ุจุงู„ู‚ูŠู…ุฉ ุฃูˆ ุจุงู„ู…ุฑุฌุน.
609
+ ุชุญุชูˆูŠ ุงู„ุตูุญุฉ ุนู„ู‰ ุชุตู…ูŠู… ุจุณูŠุท ุฌุฏู‹ุง ุนุจุงุฑุฉ ุนู† ุนู†ูˆุงู† ูƒุจูŠุฑ ูˆู‚ุงุฆู…ุฉ ู…ุฑู‚ู…ุฉ ุจุฏูˆู† ุตูˆุฑ ุฃูˆ ู…ุฎุทุทุงุช.
610
+
611
+
612
+ ================================================================================
613
+ PAGE 17 - page_0017.png
614
+ ================================================================================
615
+
616
+ ------------TEXT EXTRACTED------------
617
+ Practice Questions
618
+
619
+ Question 1: Define a Structure Employee
620
+
621
+ Problem Statement:
622
+ Define a structure Employee with members id, name, and salary. Write a program to input and display employee details.
623
+
624
+ Question 2: Use a Structure Pointer
625
+
626
+ Problem Statement:
627
+ Modify the above program to use a structure pointer.
628
+
629
+ Question 3: Dynamically Allocate Memory for an Array of Structures
630
+ Problem Statement:
631
+ Write a program to dynamically allocate memory for an array of structures and store student details.
632
+
633
+ ------------PAGE TALK ABOUT------------
634
+ ุชุชุญุฏุซ ุงู„ุตูุญุฉ ุนู† ุฃุณุฆู„ุฉ ุชุฏุฑูŠุจูŠุฉ ููŠ ู„ุบุฉ ุงู„ุจุฑู…ุฌุฉ C ุญูˆู„ ุงุณุชุฎุฏุงู… ุงู„ู€ Structures.
635
+ ุชุชุถู…ู† ุชุนุฑูŠู ู‡ูŠูƒู„ EmployeeุŒ ุซู… ุชุนุฏูŠู„ ุงู„ุจุฑู†ุงู…ุฌ ู„ุงุณุชุฎุฏุงู… ู…ุคุดุฑ ุฅู„ู‰ ุงู„ู‡ูŠูƒู„.
636
+ ูƒู…ุง ุชุนุฑุถ ุณุคุงู„ู‹ุง ุนู† ุงู„ุญุฌุฒ ุงู„ุฏูŠู†ุงู…ูŠูƒูŠ ู„ู„ุฐุงูƒุฑุฉ ู„ู…ุตููˆูุฉ ู…ู† ุงู„ู‡ูŠุงูƒู„ ู„ุชุฎุฒูŠู† ุจูŠุงู†ุงุช ุงู„ุทู„ุงุจ.
637
+ ุงู„ุชุตู…ูŠู… ุจุณูŠุท ุฌุฏู‹ุง: ุฎู„ููŠุฉ ุจูŠุถุงุก ูˆู†ุตูˆุต ูƒุจูŠุฑุฉ ุฏุงูƒู†ุฉ ุจุฏูˆู† ุตูˆุฑ ุฃูˆ ู…ุฎุทุทุงุช ุฃูˆ ุฑุณูˆู… ุจูŠุงู†ูŠุฉ.
data_structure/p3.txt ADDED
@@ -0,0 +1,1483 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ "ุฃู†ุช ู…ุฏุฑุณ ุฎุจูŠุฑ ูˆู…ุญุชุฑู ููŠ ู…ุงุฏุฉ ุชุฑุงูƒูŠุจ ุจูŠุงู†ุงุช. ุฃู†ุช ุชุฏุฑู‘ุณ ุทุงู„ุจุงู‹ ูˆุชุณุงุนุฏู‡ ุนู„ู‰ ุงู„ูู‡ู….
2
+
3
+ === ู…ุญุชูˆู‰ ุงู„ูุตู„ (ุงู„ู…ุฑุฌุน ุงู„ุนู„ู…ูŠ) ===
4
+
5
+ === ู†ู‡ุงูŠุฉ ุงู„ุณูŠุงู‚ ===
6
+
7
+ **ุชุนู„ูŠู…ุงุช ู…ู‡ู…ุฉ:**
8
+ - ุงุณุชุฎุฏู… ุงู„ู…ุญุชูˆู‰ ุงู„ุนู„ู…ูŠ ุฃุนู„ุงู‡ ูƒู…ุฑุฌุน ุฃุณุงุณูŠ ู„ู„ุฅุฌุงุจุฉ
9
+ - ุฑุงุนู ุณูŠุงู‚ ุงู„ู…ุญุงุฏุซุฉ ุงู„ุณุงุจู‚ุฉ ูˆุงู„ู…ุณุชูˆู‰ ุงู„ุชุนู„ูŠู…ูŠ ู„ู„ุทุงู„ุจ
10
+ - ุฃุฌุจ ุจุดูƒู„ ูˆุงุถุญ ูˆู…ูุตู„ ุจุงู„ู„ุบุฉ ุงู„ุนุฑุจูŠุฉ
11
+ - ุงุณุชุฎุฏู… ุงู„ุฃู…ุซู„ุฉ ูˆุงู„ุชูˆุถูŠุญุงุช ุนู†ุฏ ุงู„ุญุงุฌุฉ
12
+ - ุฅุฐุง ุณุฃู„ ุงู„ุทุงู„ุจ ุนู† ุดูŠุก ุฎุงุฑุฌ ุงู„ู…ุญุชูˆู‰ ุงู„ู…ุชูˆูุฑุŒ ุฃุฎุจุฑู‡ ุจุฐู„ูƒ ุจู„ุทู
13
+
14
+
15
+ ================================================================================
16
+ SUBJECT: Lecture3_20260417_203423
17
+ TOTAL PAGES: 47
18
+ EXTRACTED ON: 2026-04-17 19:47:06
19
+ ================================================================================
20
+
21
+
22
+ ================================================================================
23
+ PAGE 1 - page_0001.png
24
+ ================================================================================
25
+
26
+ ------------TEXT EXTRACTED------------
27
+ C & Data Structures
28
+
29
+ Chapter 3: function & recursion
30
+
31
+ Dr. Amna Ali A Mohamed
32
+
33
+ Faculty of Information Technology
34
+
35
+ ------------PAGE TALK ABOUT------------
36
+ ู‡ุฐู‡ ุตูุญุฉ ุบู„ุงู/ุนู†ูˆุงู† ู„ู…ุญุงุถุฑุฉ ููŠ ู…ุงุฏุฉ **C & Data Structures**ุŒ ูˆุชุญุฏูŠุฏู‹ุง **Chapter 2: function & recursion**.
37
+ ุชูˆุถุญ ุงุณู… ุงู„ุฏูƒุชูˆุฑุฉ **Amna Ali A Mohamed** ูˆุงู†ุชู…ุงุกู‡ุง ุฅู„ู‰ **Faculty of Information Technology**.
38
+ ูŠูˆุฌุฏ ุนู„ู‰ ูŠู…ูŠู† ุงู„ุตูุญุฉ ุฑุณู… ู„ุดุฌุฑุฉ ุจูŠุงู†ุงุช/ุดุฌุฑุฉ ุซู†ุงุฆูŠุฉ ุจุนูู‚ุฏ ู…ุฑู‚ู…ุฉ ู…ุซู„ 60 ูˆ53 ูˆ3 ูˆุบูŠุฑู‡ุงุŒ ู…ุน ุฃุณู‡ู… ุชูˆุถุญ ุงู„ุนู„ุงู‚ุงุช ุจูŠู† ุงู„ุนู‚ุฏ.
39
+ ุงู„ุตูุญุฉ ุชู…ู‡ูŠุฏูŠุฉ ูˆุชุนุฑุถ ู…ูˆุถูˆุน ุงู„ูุตู„ ุจุดูƒู„ ุนุงู… ู…ุน ุนู†ุตุฑ ุจุตุฑูŠ ู…ุฑุชุจุท ุจู‡ูŠุงูƒู„ ุงู„ุจูŠุงู†ุงุช ูˆุงู„ุงุณุชุฏุนุงุก ุงู„ุฐุงุชูŠ.
40
+
41
+
42
+ ================================================================================
43
+ PAGE 2 - page_0002.png
44
+ ================================================================================
45
+
46
+ ------------TEXT EXTRACTED------------
47
+ Introduction to Functions
48
+
49
+ โ€ข What is a Function?
50
+ โ€ข A function is a block of code that performs a specific task.
51
+ โ€ข It provides modularity and reusability in programming.
52
+
53
+ โ€ข Why Use Functions?
54
+ โ€ข Breaks down complex tasks into smaller, manageable tasks.
55
+ โ€ข Avoids code duplication.
56
+ โ€ข Improves readability and maintainability.
57
+
58
+ ------------PAGE TALK ABOUT------------
59
+ ุชุชุญุฏุซ ุงู„ุตูุญุฉ ุนู† ู…ู‚ุฏู…ุฉ ููŠ ุงู„ุฏูˆุงู„ ุงู„ุจุฑู…ุฌูŠุฉ ูˆุฃู‡ู…ูŠุชู‡ุง ููŠ ูƒุชุงุจุฉ ุงู„ุจุฑุงู…ุฌ.
60
+ ุชูˆุถุญ ุฃู† ุงู„ุฏุงู„ุฉ ู‡ูŠ ุฌุฒุก ู…ู† ุงู„ูƒูˆุฏ ูŠู†ูุฐ ู…ู‡ู…ุฉ ู…ุญุฏุฏุฉุŒ ูˆุชุณุงุนุฏ ุนู„ู‰ ุฅุนุงุฏุฉ ุงุณุชุฎุฏุงู… ุงู„ูƒูˆุฏ ูˆุชู†ุธูŠู…ู‡.
61
+ ูƒู…ุง ุชุดุฑุญ ููˆุงุฆุฏ ุงุณุชุฎุฏุงู… ุงู„ุฏูˆุงู„ ู…ุซู„ ุชู‚ุณูŠู… ุงู„ู…ู‡ุงู… ุงู„ูƒุจูŠุฑุฉ ุฅู„ู‰ ุฃุฌุฒุงุก ุฃุตุบุฑุŒ ุชู‚ู„ูŠู„ ุชูƒุฑุงุฑ ุงู„ูƒูˆุฏุŒ ูˆุชุญุณูŠู† ุงู„ู‚ุฑุงุกุฉ ูˆุงู„ุตูŠุงู†ุฉ.
62
+ ุงู„ุชุตู…ูŠู… ุนุจุงุฑุฉ ุนู† ุดุฑูŠุญุฉ ุนุฑุถ ุจุณูŠุทุฉ ุชุญุชูˆูŠ ุนู„ู‰ ุนู†ูˆุงู† ูƒุจูŠุฑ ูˆู†ู‚ุงุท ุชุนุฏุงุฏ ูู‚ุทุŒ ุจุฏูˆู† ุตูˆุฑ ุฃูˆ ู…ุฎุทุทุงุช.
63
+
64
+
65
+ ================================================================================
66
+ PAGE 3 - page_0003.png
67
+ ================================================================================
68
+
69
+ ------------TEXT EXTRACTED------------
70
+ Introduction to Functions
71
+
72
+ โ€ข Defining a Function
73
+
74
+ return_type function_name(parameter_list) {
75
+
76
+ // Function body
77
+ }
78
+
79
+ โ€ข Example:
80
+
81
+ int add(int x, int y) {
82
+ int z; z = x + y;
83
+ return z;
84
+ }
85
+
86
+ โ€ข Explanation:
87
+ โ€ข int is the return type.
88
+ โ€ข add is the function name.
89
+ โ€ข int x, int y are the parameters.
90
+ โ€ข The function returns the sum of x and y.
91
+
92
+ ------------PAGE TALK ABOUT------------
93
+ ุชุชุญุฏุซ ุงู„ุตูุญุฉ ุนู† ู…ู‚ุฏู…ุฉ ุฅู„ู‰ ุงู„ุฏูˆุงู„ ููŠ ุงู„ุจุฑู…ุฌุฉ ูˆูƒูŠููŠุฉ ุชุนุฑูŠู ุงู„ุฏุงู„ุฉ ุจุดูƒู„ ุนุงู… ุจุงุณุชุฎุฏุงู… ู†ูˆุน ุงู„ุฅุฑุฌุงุน ูˆุงุณู… ุงู„ุฏุงู„ุฉ ูˆุงู„ู…ุนุงู…ู„ุงุช.
94
+ ุชุนุฑุถ ู…ุซุงู„ู‹ุง ุนู…ู„ูŠู‹ุง ู„ุฏุงู„ุฉ ุงุณู…ู‡ุง add ุชุณุชู‚ุจู„ ู…ุชุบูŠุฑูŠู† ู…ู† ุงู„ู†ูˆุน int ูˆุชูุฑุฌุน ู…ุฌู…ูˆุนู‡ู…ุง.
95
+ ูƒู…ุง ุชุดุฑุญ ู…ูƒูˆู†ุงุช ุงู„ู…ุซุงู„: ู†ูˆุน ุงู„ุฅุฑุฌุงุนุŒ ุงุณู… ุงู„ุฏุงู„ุฉุŒ ูˆุงู„ู…ุนุงู…ู„ุงุชุŒ ู…ุน ุชูˆุถูŠุญ ุฃู† ุงู„ู†ุงุชุฌ ู‡ูˆ ู…ุฌู…ูˆุน x ูˆ y.
96
+ ูŠูˆุฌุฏ ุชู†ุณูŠู‚ ุจุตุฑูŠ ุนู„ู‰ ุดูƒู„ ุดุฑูŠุญุฉ ุนุฑุถ ุชุนู„ูŠู…ูŠุฉ ู…ุน ุนู†ูˆุงู† ูƒุจูŠุฑ ูˆู…ุฑุจุนุงุช ุฑู…ุงุฏูŠุฉ ุชุญุชูˆูŠ ุนู„ู‰ ุฃู…ุซู„ุฉ ุงู„ูƒูˆุฏ.
97
+
98
+
99
+ ================================================================================
100
+ PAGE 4 - page_0004.png
101
+ ================================================================================
102
+
103
+ ------------TEXT EXTRACTED------------
104
+ Calling a Function
105
+
106
+ Syntax:
107
+
108
+ function_name(arguments);
109
+
110
+ โ€ข Example:
111
+
112
+ #include <stdio.h>
113
+
114
+ int add(int x, int y) {
115
+ return x + y;
116
+ }
117
+
118
+ int main() {
119
+ int a = 10, b = 20, result;
120
+
121
+ result = add(a, b); // Function call
122
+ printf("Sum: %d\n", result);
123
+ return 0;
124
+ }
125
+
126
+ Explanation:
127
+ โ€ข The add function is called with arguments a and b.
128
+ โ€ข The result is stored in result and printed.
129
+
130
+ ------------PAGE TALK ABOUT------------
131
+ ุชุชุญุฏุซ ุงู„ุตูุญุฉ ุนู† ูƒูŠููŠุฉ ุงุณุชุฏุนุงุก ุงู„ุฏุงู„ุฉ ููŠ ู„ุบุฉ C ุจุงุณุชุฎุฏุงู… ุงู„ุตูŠุบุฉ ุงู„ุนุงู…ุฉ: function_name(arguments);
132
+ ุชูˆุถุญ ู…ุซุงู„ู‹ุง ุนู…ู„ูŠู‹ุง ู„ุฏุงู„ุฉ ุงุณู…ู‡ุง add ุชุณุชู‚ุจู„ ู…ุชุบูŠุฑูŠู† ูˆุชุนูŠุฏ ู…ุฌู…ูˆุนู‡ู…ุงุŒ ุซู… ูŠุชู… ุงุณุชุฏุนุงุคู‡ุง ุฏุงุฎู„ ุงู„ุฏุงู„ุฉ main.
133
+ ูƒู…ุง ุชุดุฑุญ ุฃู† ุงู„ู‚ูŠู…ุฉ ุงู„ู†ุงุชุฌุฉ ู…ู† ุงู„ุงุณุชุฏุนุงุก ุชูุฎุฒู† ููŠ ุงู„ู…ุชุบูŠุฑ result ุซู… ุชูุทุจุน ุจุงุณุชุฎุฏุงู… printf.
134
+ ูŠูˆุฌุฏ ุชู†ุณูŠู‚ ุจุตุฑูŠ ุชุนู„ูŠู…ูŠ ูŠุชุถู…ู† ุนู†ูˆุงู†ู‹ุง ูƒุจูŠุฑู‹ุงุŒ ู…ุฑุจุนู‹ุง ู„ุตูŠุบุฉ ุงู„ุงุณุชุฏุนุงุกุŒ ูˆู…ุฑุจุน ูƒูˆุฏ ู„ุนุฑุถ ุงู„ู…ุซุงู„ ุงู„ุจุฑู…ุฌูŠ.
135
+
136
+
137
+ ================================================================================
138
+ PAGE 5 - page_0005.png
139
+ ================================================================================
140
+
141
+ ------------TEXT EXTRACTED------------
142
+ Parameter Passing
143
+
144
+ โ€ข Pass by Value:
145
+ โ€ข The value of the actual parameter is copied to the formal parameter.
146
+ โ€ข Changes to the formal parameter do not affect the actual parameter.
147
+
148
+ #include <stdio.h>
149
+
150
+ void increment(int x) {
151
+ x++;
152
+ printf("Inside function: %d\n", x);
153
+ }
154
+ int main() {
155
+ int a = 10;
156
+ increment(a); // Pass by value
157
+ printf("Outside function: %d\n", a);
158
+ return 0;
159
+ }
160
+
161
+ โ€ข Explanation:
162
+ โ€ข The value of a is copied to x.
163
+ โ€ข Changes to x do not affect a.
164
+
165
+ ------------PAGE TALK ABOUT------------
166
+ ุชุชุญุฏุซ ุงู„ุตูุญุฉ ุนู† ู…ูู‡ูˆู… ุชู…ุฑูŠุฑ ุงู„ู…ุนุงู…ู„ุงุช ููŠ ุงู„ุจุฑู…ุฌุฉุŒ ูˆุจุงู„ุชุญุฏูŠุฏ ุฃุณู„ูˆุจ **ุงู„ุชู…ุฑูŠุฑ ุจุงู„ู‚ูŠู…ุฉ (Pass by Value)**.
167
+ ุชูˆุถุญ ุฃู† ู‚ูŠู…ุฉ ุงู„ู…ุชุบูŠุฑ ุงู„ุฃุตู„ูŠ ุชูู†ุณุฎ ุฅู„ู‰ ุงู„ู…ุชุบูŠุฑ ุฏุงุฎู„ ุงู„ุฏุงู„ุฉุŒ ู„ุฐู„ูƒ ุฃูŠ ุชุนุฏูŠู„ ุฏุงุฎู„ ุงู„ุฏุงู„ุฉ ู„ุง ูŠุบูŠู‘ุฑ ุงู„ู…ุชุบูŠุฑ ุงู„ุฃุตู„ูŠ.
168
+ ูŠูˆุฌุฏ ู…ุซุงู„ ุจู„ุบุฉ C ู„ุฏุงู„ุฉ `increment` ุชุฒูŠุฏ ู‚ูŠู…ุฉ `x` ูˆุชุทุจุนู‡ุง ุฏุงุฎู„ ุงู„ุฏุงู„ุฉุŒ ุจูŠู†ู…ุง ุชุจู‚ู‰ ู‚ูŠู…ุฉ `a` ุฎุงุฑุฌ ุงู„ุฏุงู„ุฉ ูƒู…ุง ู‡ูŠ.
169
+ ุงู„ุชุตู…ูŠู… ุนุจุงุฑุฉ ุนู† ุดุฑูŠุญุฉ ุนุฑุถ ุชุนู„ูŠู…ูŠุฉ ุชุญุชูˆูŠ ุนู†ูˆุงู†ู‹ุง ูƒุจูŠุฑู‹ุงุŒ ู†ู‚ุงุทู‹ุง ุชูˆุถูŠุญูŠุฉุŒ ูˆู…ุฑุจุน ูƒูˆุฏ ู…ุน ู‚ุณู… ุดุฑุญ ุนู„ู‰ ุงู„ูŠู…ูŠู†.
170
+
171
+
172
+ ================================================================================
173
+ PAGE 6 - page_0006.png
174
+ ================================================================================
175
+
176
+ ------------TEXT EXTRACTED------------
177
+ Call by Reference
178
+
179
+ โ€ข Pass by Reference:
180
+ โ€ข The address of the actual parameter is passed to the formal parameter.
181
+ โ€ข Changes to the formal parameter affect the actual parameter.
182
+
183
+ โ€ข Example:
184
+
185
+ ```c
186
+ #include <stdio.h>
187
+ void increment(int *x) {
188
+ (*x)++;
189
+ printf("Inside function: %d\n", *x);
190
+ }
191
+
192
+ int main() {
193
+ int a = 10;
194
+
195
+ increment(&a); // Pass by reference
196
+ printf("Outside function: %d\n", a);
197
+ return 0;
198
+ }
199
+ ```
200
+
201
+ Explanation:
202
+ โ€ข The address of a is passed to x.
203
+ โ€ข Changes to *x affect a.
204
+
205
+ ------------PAGE TALK ABOUT------------
206
+ ุชุชุญุฏุซ ุงู„ุตูุญุฉ ุนู† ู…ูู‡ูˆู… **ุงู„ุชู…ุฑูŠุฑ ุจุงู„ู…ุฑุฌุน (Call/Pass by Reference)** ููŠ ุงู„ุจุฑู…ุฌุฉ ุจู„ุบุฉ C.
207
+ ุชูˆุถุญ ุฃู† ุงู„ุฏุงู„ุฉ ุชุณุชู‚ุจู„ **ุนู†ูˆุงู† ุงู„ู…ุชุบูŠุฑ** ูˆู„ูŠุณ ู†ุณุฎุฉ ู…ู† ู‚ูŠู…ุชู‡ุŒ ู„ุฐู„ูƒ ุฃูŠ ุชุนุฏูŠู„ ุฏุงุฎู„ ุงู„ุฏุงู„ุฉ ูŠู†ุนูƒุณ ุนู„ู‰ ุงู„ู…ุชุบูŠุฑ ุงู„ุฃุตู„ูŠ.
208
+ ูŠูˆุฌุฏ ู…ุซุงู„ ุจุฑู…ุฌูŠ ู„ุฏุงู„ุฉ `increment` ุชุณุชู‚ุจู„ ู…ุคุดุฑู‹ุง `int *x` ูˆุชุฒูŠุฏ ู‚ูŠู…ุฉ ุงู„ู…ุชุบูŠุฑ ุจุงุณุชุฎุฏุงู… `(*x)++`.
209
+ ูƒู…ุง ุชุนุฑุถ ุงู„ุตูุญุฉ ุดุฑุญู‹ุง ุฌุงู†ุจูŠู‹ุง ูŠุจูŠู† ุฃู† ุนู†ูˆุงู† ุงู„ู…ุชุบูŠุฑ `a` ูŠูู…ุฑุฑ ุฅู„ู‰ `x`ุŒ ูˆุจุงู„ุชุงู„ูŠ ุชุชุบูŠุฑ ู‚ูŠู…ุฉ `a` ุฏุงุฎู„ ูˆุฎุงุฑุฌ ุงู„ุฏุงู„ุฉ.
210
+
211
+
212
+ ================================================================================
213
+ PAGE 7 - page_0007.png
214
+ ================================================================================
215
+
216
+ ------------TEXT EXTRACTED------------
217
+ Call by Reference
218
+
219
+ Passing Arrays to Functions
220
+
221
+ How to Pass Arrays?
222
+
223
+ โ€ข Pass the array name (which is a pointer to the first element of the array).
224
+
225
+ โ€ข The size of the array is usually passed as an additional parameter.
226
+
227
+ Passing a 1D Array to a Function Syntax:
228
+
229
+ return_type function_name(data_type array[], int size);
230
+
231
+ ------------PAGE TALK ABOUT------------
232
+ ุชุชุญุฏุซ ุงู„ุตูุญุฉ ุนู† ุชู…ุฑูŠุฑ ุงู„ู…ุตููˆูุงุช ุฅู„ู‰ ุงู„ุฏูˆุงู„ ุจุงุณุชุฎุฏุงู… ุฃุณู„ูˆุจ **Call by Reference**.
233
+ ุชูˆุถุญ ุฃู† ุงุณู… ุงู„ู…ุตููˆูุฉ ูŠูู…ุฑู‘ูŽุฑ ู„ู„ุฏุงู„ุฉ ู„ุฃู†ู‡ ูŠุดูŠุฑ ุฅู„ู‰ ุฃูˆู„ ุนู†ุตุฑ ููŠู‡ุงุŒ ูˆ๏ฟฝ๏ฟฝุงู„ุจู‹ุง ูŠุชู… ุชู…ุฑูŠุฑ ุญุฌู… ุงู„ู…ุตููˆูุฉ ูƒู…ุนุงู…ู„ ุฅุถุงููŠ.
234
+ ูƒู…ุง ุชุนุฑุถ ุตูŠุบุฉ ุนุงู…ุฉ ู„ุชู…ุฑูŠุฑ ู…ุตููˆูุฉ ุฃุญุงุฏูŠุฉ ุงู„ุจุนุฏ ุฅู„ู‰ ุฏุงู„ุฉ.
235
+ ุงู„ุชุตู…ูŠู… ุนุจุงุฑุฉ ุนู† ุดุฑูŠุญุฉ ุชุนู„ูŠู…ูŠุฉ ุจุณูŠุทุฉ ุชุญุชูˆูŠ ุนู„ู‰ ุนู†ูˆุงู† ูƒุจูŠุฑ ูˆู†ู‚ุงุท ุชุนุฏุงุฏ ูˆู…ุฑุจุน ุฑู…ุงุฏูŠ ููŠ ุงู„ุฃุณูู„ ุจุฏุงุฎู„ู‡ ุตูŠุบุฉ ุงู„ูƒูˆุฏ.
236
+
237
+
238
+ ================================================================================
239
+ PAGE 8 - page_0008.png
240
+ ================================================================================
241
+
242
+ ------------TEXT EXTRACTED------------
243
+ Passing a 1D Array to a Function example
244
+
245
+ #include <stdio.h>
246
+
247
+ void printArray(int arr[], int n) {
248
+ for (int i = 0; i < n; i++) {
249
+ printf("%d ", arr[i]); } printf("\n");
250
+ }
251
+
252
+ int main() {
253
+ int arr[] = {1, 2, 3, 4, 5};
254
+ int size = sizeof(arr) / sizeof(arr[0]);
255
+
256
+ printArray(arr, size); // Pass array to function
257
+
258
+ return 0;
259
+ }
260
+
261
+ Explanation:
262
+ โ€ขThe array arr is passed to the function printArray.
263
+ โ€ขThe function processes each element of the array.
264
+
265
+ ------------PAGE TALK ABOUT------------
266
+ ุชุชุญุฏุซ ุงู„ุตูุญุฉ ุนู† ูƒูŠููŠุฉ ุชู…ุฑูŠุฑ ู…ุตููˆูุฉ ุฃุญุงุฏูŠุฉ ุงู„ุจุนุฏ 1D Array ุฅู„ู‰ ุฏุงู„ุฉ ููŠ ู„ุบุฉ C.
267
+ ูŠูˆุฌุฏ ู…ุซุงู„ ุจุฑู…ุฌูŠ ูŠูˆุถุญ ุฏุงู„ุฉ ุจุงุณู… printArray ุชุณุชู‚ุจู„ ุงู„ู…ุตููˆูุฉ ูˆุญุฌู…ู‡ุง ุซู… ุชุทุจุน ุนู†ุงุตุฑู‡ุง ุจุงุณุชุฎุฏุงู… ุญู„ู‚ุฉ for.
268
+ ูƒู…ุง ูŠูˆุถุญ ุงู„ุจุฑู†ุงู…ุฌ ุฏุงุฎู„ ุงู„ุฏุงู„ุฉ main ูƒูŠููŠุฉ ุชุนุฑูŠู ุงู„ู…ุตููˆูุฉ ูˆุญุณุงุจ ุนุฏุฏ ุนู†ุงุตุฑู‡ุง ุจุงุณุชุฎุฏุงู… sizeof ุซู… ุฅุฑุณุงู„ู‡ุง ุฅู„ู‰ ุงู„ุฏุงู„ุฉ.
269
+ ุงู„ุชุตู…ูŠู… ูŠุญุชูˆูŠ ุนู„ู‰ ุนู†ูˆุงู† ูƒุจูŠุฑุŒ ูˆู…ุฑุจุน ุฑู…ุงุฏูŠ ููŠู‡ ุงู„ูƒูˆุฏ ุงู„ุจุฑู…ุฌูŠุŒ ูˆุนู„ู‰ ุงู„ูŠู…ูŠู† ู‚ุณู… ุดุฑุญ ู…ุฎุชุตุฑ ุจู†ู‚ุงุท.
270
+
271
+
272
+ ================================================================================
273
+ PAGE 9 - page_0009.png
274
+ ================================================================================
275
+
276
+ ------------TEXT EXTRACTED------------
277
+ Modifying a 1D Array in a Function example
278
+
279
+ #include <stdio.h>
280
+
281
+ void incrementArray(int arr[], int n) {
282
+ for (int i = 0; i < n; i++) {
283
+ arr[i] += 1; // Modify each element of the array
284
+ }
285
+ }
286
+
287
+ int main() {
288
+ int arr[] = {1, 2, 3, 4, 5};
289
+ int size = sizeof(arr) / sizeof(arr[0]);
290
+
291
+ incrementArray(arr, size); // Pass array to function
292
+
293
+ printf("Modified Array:\n");
294
+ for (int i = 0; i < size; i++) {
295
+ printf("%d ", arr[i]);
296
+ }
297
+ printf("\n");
298
+ return 0;
299
+ }
300
+
301
+ Explanation:
302
+ โ€ข The function incrementArray modifies each element of the array.
303
+ โ€ข Changes are reflected in the original array.
304
+
305
+ ------------PAGE TALK ABOUT------------
306
+ ุชุชุญุฏุซ ุงู„ุตูุญุฉ ุนู† ู…ุซุงู„ ุจู„ุบุฉ C ูŠูˆุถุญ ูƒูŠููŠุฉ ุชุนุฏูŠู„ ู…ุตููˆูุฉ ุฃุญุงุฏูŠุฉ ุงู„ุจุนุฏ ุฏุงุฎู„ ุฏุงู„ุฉ.
307
+ ุงู„ุฏุงู„ุฉ `incrementArray` ุชุณุชู‚ุจู„ ุงู„ู…ุตููˆูุฉ ูˆุญุฌู…ู‡ุงุŒ ุซู… ุชุฒูŠุฏ ูƒู„ ุนู†ุตุฑ ุจู…ู‚ุฏุงุฑ 1 ุจุงุณุชุฎุฏุงู… ุญู„ู‚ุฉ `for`.
308
+ ููŠ `main` ูŠุชู… ุฅู†ุดุงุก ุงู„ู…ุตููˆูุฉ ูˆุญุณุงุจ ุญุฌู…ู‡ุง ุซู… ุชู…ุฑูŠุฑู‡ุง ุฅู„ู‰ ุงู„ุฏุงู„ุฉุŒ ูˆุจุนุฏ ุฐู„ูƒ ุทุจุงุนุฉ ุงู„ู‚ูŠู… ุงู„ู…ุนุฏู„ุฉ.
309
+ ูŠูˆุฌุฏ ุนู†ุตุฑ ุจุตุฑูŠ ุนุจุงุฑุฉ ุนู† ุตู†ุฏูˆู‚ ูƒุจูŠุฑ ูŠุญุชูˆูŠ ุงู„ูƒูˆุฏ ุงู„ุจุฑู…ุฌูŠุŒ ูˆุนู„ู‰ ุงู„ูŠู…ูŠู† ู‚ุณู… ุจุนู†ูˆุงู† "Explanation" ูŠุดุฑุญ ุฃู† ุงู„ุชุนุฏูŠู„ุงุช ุชุธู‡ุฑ ู…ุจุงุดุฑุฉ ููŠ ุงู„ู…ุตููˆูุฉ ุงู„ุฃุตู„ูŠุฉ.
310
+
311
+
312
+ ================================================================================
313
+ PAGE 10 - page_0010.png
314
+ ================================================================================
315
+
316
+ ------------TEXT EXTRACTED------------
317
+ Passing a 2D Array to a Function
318
+
319
+ Syntax:
320
+
321
+ return_type function_name(data_type array[][cols], int rows);
322
+
323
+ #include <stdio.h>
324
+
325
+ void printMatrix(int mat[][3], int rows) {
326
+ for (int i = 0; i < rows; i++) {
327
+ for (int j = 0; j < 3; j++) {
328
+ printf("%d ", mat[i][j]);
329
+ }
330
+ printf("\n");
331
+ }
332
+ }
333
+
334
+ int main() {
335
+ int mat[2][3] = {{1, 2, 3}, {4, 5, 6}};
336
+
337
+ printMatrix(mat, 2); // Pass 2D array to function
338
+ return 0;
339
+ }
340
+
341
+ Explanation:
342
+ โ€ข The 2D array mat is passed to the function printMatrix.
343
+ โ€ข The function processes each element of the 2D array.
344
+
345
+ ------------PAGE TALK ABOUT------------
346
+ ุชุชุญุฏุซ ุงู„ุตูุญุฉ ุนู† ูƒูŠููŠุฉ ุชู…ุฑูŠุฑ ู…ุตููˆูุฉ ุซู†ุงุฆูŠุฉ ุงู„ุฃุจุนุงุฏ ุฅู„ู‰ ุฏุงู„ุฉ ููŠ ู„ุบุฉ C.
347
+ ุชูˆุถุญ ุงู„ุตูŠุบุฉ ุงู„ุนุงู…ุฉ ู„ุชู…ุฑูŠุฑ ุงู„ู…ุตููˆูุฉุŒ ู…ุน ู…ุซุงู„ ุนู…ู„ูŠ ู„ุฏุงู„ุฉ ุงุณู…ู‡ุง printMatrix ุชุณุชู‚ุจู„ ู…ุตููˆูุฉ ูˆุชุทุจุน ุนู†ุงุตุฑู‡ุง ุจุงุณุชุฎุฏุงู… ุญู„ู‚ุงุช ุชูƒุฑุงุฑ ู…ุชุฏุงุฎู„ุฉ.
348
+ ูŠูˆุฌุฏ ุฃูŠุถู‹ุง ุดุฑุญ ู…ุฎุชุตุฑ ูŠุจูŠู† ุฃู† ุงู„ู…ุตููˆูุฉ mat ูŠุชู… ุฅุฑุณุงู„ู‡ุง ุฅู„ู‰ ุงู„ุฏุงู„ุฉ ู„ู…ุนุงู„ุฌุฉ ูƒู„ ุนู†ุตุฑ ููŠู‡ุง.
349
+ ุงู„ุชุตู…ูŠู… ุจุตุฑูŠู‹ุง ูŠุญุชูˆูŠ ุนู„ู‰ ุนู†ูˆุงู† ูƒุจูŠุฑุŒ ุตู†ุฏูˆู‚ ู„ุตูŠุบุฉ ุงู„ู€ syntaxุŒ ูˆุตู†ุฏูˆู‚ ูƒูˆุฏ ๏ฟฝ๏ฟฝุฑู…ุฌูŠ ู…ุน ู‚ุณู… ุดุฑุญ ู†ู‚ุทูŠ ุนู„ู‰ ุงู„ูŠู…ูŠู†.
350
+
351
+
352
+ ================================================================================
353
+ PAGE 11 - page_0011.png
354
+ ================================================================================
355
+
356
+ ------------TEXT EXTRACTED------------
357
+ Passing Arrays to Functions using pointer
358
+
359
+ Why Use Pointers with Arrays?
360
+
361
+ โ€ข Pointers provide direct access to memory locations, making array manipulation efficient.
362
+
363
+ โ€ข Passing arrays to functions using pointers avoids copying the entire array.
364
+
365
+ โ€ขKey Concepts:
366
+
367
+ โ€ข Array name is a pointer to the first element of the array.
368
+
369
+ โ€ข Pointer arithmetic can be used to traverse arrays.
370
+
371
+ ------------PAGE TALK ABOUT------------
372
+ ุชุชุญุฏุซ ุงู„ุตูุญุฉ ุนู† ุงุณุชุฎุฏุงู… ุงู„ู…ุคุดุฑุงุช (Pointers) ุนู†ุฏ ุชู…ุฑูŠุฑ ุงู„ู…ุตููˆูุงุช ุฅู„ู‰ ุงู„ุฏูˆุงู„ ููŠ ุงู„ุจุฑู…ุฌุฉ.
373
+ ุชูˆุถุญ ุฃู† ุงู„ู…ุคุดุฑุงุช ุชุฌุนู„ ุงู„ูˆุตูˆู„ ุฅู„ู‰ ู…ูˆุงู‚ุน ุงู„ุฐุงูƒุฑุฉ ู…ุจุงุดุฑู‹ุง ูˆุฃูƒุซุฑ ูƒูุงุกุฉุŒ ูƒู…ุง ุชู…ู†ุน ู†ุณุฎ ุงู„ู…ุตููˆูุฉ ูƒุงู…ู„ุฉ ุนู†ุฏ ุชู…ุฑูŠุฑู‡ุง ู„ู„ุฏูˆุงู„.
374
+ ูƒู…ุง ุชุนุฑุถ ู…ูุงู‡ูŠู… ุฃุณุงุณูŠุฉ ู…ุซู„ ุฃู† ุงุณู… ุงู„ู…ุตููˆูุฉ ูŠุดูŠุฑ ุฅู„ู‰ ุฃูˆู„ ุนู†ุตุฑ ููŠู‡ุงุŒ ูˆุฅู…ูƒุงู†ูŠุฉ ุงุณุชุฎุฏุงู… ุงู„ุนู…ู„ูŠุงุช ุงู„ุญุณุงุจูŠุฉ ุนู„ู‰ ุงู„ู…ุคุดุฑุงุช ู„ู„ุชู†ู‚ู„ ุจูŠู† ุนู†ุงุตุฑ ุงู„ู…ุตููˆูุฉ.
375
+ ุงู„ุชุตู…ูŠู… ุนุจุงุฑุฉ ุนู† ุดุฑูŠุญุฉ ู†ุตูŠุฉ ุจุณูŠุทุฉ ุจุฎู„ููŠุฉ ุจูŠุถุงุก ูˆุนู†ุงูˆูŠู† ุบุงู…ู‚ุฉ ู…ุน ู†ู‚ุงุท ุชุนุฏุงุฏุŒ ุจุฏูˆู† ุตูˆุฑ ุฃูˆ ู…ุฎุทุทุงุช.
376
+
377
+
378
+ ================================================================================
379
+ PAGE 12 - page_0012.png
380
+ ================================================================================
381
+
382
+ ------------TEXT EXTRACTED------------
383
+ Passing Arrays to Functions using pointer
384
+
385
+ Syntax:
386
+
387
+ return_type function_name(data_type *array, int size);
388
+
389
+ Example:
390
+
391
+ #include <stdio.h>
392
+
393
+ void printArray(int *arr, int n) {
394
+ for (int i = 0; i < n; i++) {
395
+ printf("%d ", *(arr + i)); // Access array elements using pointer arithmetic
396
+ }
397
+ printf("\n");
398
+ }
399
+
400
+ int main() {
401
+ int arr[] = {1, 2, 3, 4, 5};
402
+ int size = sizeof(arr) / sizeof(arr[0]);
403
+ printArray(arr, size); // Pass array using pointer
404
+ return 0;
405
+ }
406
+
407
+ Explanation:
408
+ โ€ข The array arr is passed as a pointer to the function printArray.
409
+ โ€ข Pointer arithmetic (*(arr + i)) is used to access array elements.
410
+
411
+ ------------PAGE TALK ABOUT------------
412
+ ุงู„ุตูุญุฉ ุชุดุฑุญ ูƒูŠููŠุฉ ุชู…ุฑูŠุฑ ุงู„ู…ุตููˆูุงุช ุฅู„ู‰ ุงู„ุฏูˆุงู„ ููŠ ู„ุบุฉ C ุจุงุณุชุฎุฏุงู… ุงู„ู…ุคุดุฑุงุช (pointers).
413
+ ุชุญุชูˆูŠ ุนู„ู‰ ุตูŠุบุฉ ุนุงู…ุฉ ู„ุชุนุฑูŠู ุฏุงู„ุฉ ุชุณุชู‚ุจู„ ู…ุตููˆูุฉ ูƒู…ุคุดุฑ ู…ุน ุญุฌู…ู‡ุง.
414
+ ูŠูˆุฌุฏ ู…ุซุงู„ ุจุฑู…ุฌูŠ ู„ุฏุงู„ุฉ printArray ุชุทุจุน ุนู†ุงุตุฑ ุงู„ู…ุตููˆูุฉ ุจุงุณุชุฎุฏุงู… *(arr + i) ุจุฏู„ ุงู„ูู‡ุฑุณุฉ ุงู„ุชู‚ู„ูŠุฏูŠุฉ.
415
+ ุจุตุฑูŠู‹ุงุŒ ุงู„ุตูุญุฉ ู…ู†ุธู…ุฉ ุจุนู†ุงูˆูŠู† ูˆุงุถุญุฉ ู…ุซู„ Syntax ูˆExample ูˆExplanation ู…ุน ู…ุฑุจุนุงุช ุฑู…ุงุฏูŠุฉ ู„ุนุฑุถ ุงู„ูƒูˆุฏ ูˆุงู„ู†ุตูˆุต ุงู„ุชุนู„ูŠู…ูŠุฉ.
416
+
417
+
418
+ ================================================================================
419
+ PAGE 13 - page_0013.png
420
+ ================================================================================
421
+
422
+ ------------TEXT EXTRACTED------------
423
+ Passing Structures to Functions
424
+
425
+ โ€ข How to Pass Structures?
426
+
427
+ Pass by value (a copy of the structure is passed).
428
+
429
+ Pass by reference (a pointer to the structure is passed).
430
+
431
+ โ€ข Passing a Structure by Value
432
+
433
+ Syntax:
434
+
435
+ return_type function_name(struct structure_name variable);
436
+
437
+ ------------PAGE TALK ABOUT------------
438
+ ุชุชุญุฏุซ ุงู„ุตูุญุฉ ุนู† ูƒูŠููŠุฉ ุชู…ุฑูŠุฑ ุงู„ู€ structures ุฅู„ู‰ ุงู„ุฏูˆุงู„ ููŠ ุงู„ุจุฑู…ุฌุฉ.
439
+ ุชูˆุถุญ ุทุฑูŠู‚ุชูŠู† ุฃุณุงุณูŠุชูŠู†: ุงู„ุชู…ุฑูŠุฑ ุจุงู„ู‚ูŠู…ุฉ ุญูŠุซ ูŠุชู… ุฅุฑุณุงู„ ู†ุณุฎุฉ ู…ู† ุงู„ู€ structureุŒ ูˆุงู„ุชู…ุฑูŠุฑ ุจุงู„ู…ุฑุฌุน ุญูŠุซ ูŠุชู… ุฅุฑุณุงู„ ู…ุคุดุฑ ุฅู„ูŠู‡ุง.
440
+ ูƒู…ุง ุชุฑูƒุฒ ุงู„ุตูุญุฉ ุนู„ู‰ ุงู„ุชู…ุฑูŠุฑ ุจุงู„ู‚ูŠู…ุฉ ูˆุชุนุฑุถ ุงู„ุตูŠุบุฉ ุงู„ุนุงู…ุฉ ู„ูƒุชุงุจุฉ ุฏุงู„ุฉ ุชุณุชู‚ุจู„ structure ูƒูˆุณูŠุท.
441
+ ูŠูˆุฌุฏ ุนู†ุตุฑ ุจุตุฑูŠ ุนุจุงุฑุฉ ุนู† ู…ุฑุจุน ุฑู…ุงุฏูŠ ูŠุญุชูˆูŠ ุนู„ู‰ ุณุทุฑ ุงู„ุตูŠุงุบุฉ ุงู„ุจุฑู…ุฌูŠุฉ ู…ุน ุชู…ูŠูŠุฒ ู„ูˆู†ูŠ ู„ู„ู†ุต.
442
+
443
+
444
+ ================================================================================
445
+ PAGE 14 - page_0014.png
446
+ ================================================================================
447
+
448
+ ------------TEXT EXTRACTED------------
449
+ Passing Structures to Functions
450
+
451
+ Passing a Structure by Value example:
452
+
453
+ ```c
454
+ #include <stdio.h>
455
+ struct Student {
456
+ char name[50];
457
+ int rollNo;
458
+ float marks;
459
+ };
460
+
461
+ void printStudent(struct Student s) {
462
+ printf("Name: %s\n", s.name);
463
+ printf("Roll No: %d\n", s.rollNo);
464
+ printf("Marks: %.2f\n", s.marks);
465
+ }
466
+
467
+ int main() {
468
+ struct Student student1 = {"John Doe", 101, 95.5};
469
+ printStudent(student1); // Pass by value
470
+ return 0;
471
+ }
472
+ ```
473
+
474
+ Explanation:
475
+ โ€ข A copy of the structure student1 is passed to the function printStudent.
476
+ โ€ข Changes to the structure inside the function do not affect the original structure.
477
+
478
+ ------------PAGE TALK ABOUT------------
479
+ ุชุชุญุฏุซ ุงู„ุตูุญุฉ ุนู† ุชู…ุฑูŠุฑ ุงู„ู€ structure ุฅู„ู‰ ุงู„ุฏูˆุงู„ ููŠ ู„ุบุฉ C ุจุทุฑูŠู‚ุฉ pass by value.
480
+ ุชูˆุถุญ ุงู„ู…ุซุงู„ ุจุงุณุชุฎุฏุงู… struct Student ูŠุญุชูˆูŠ ุนู„ู‰ ุงู„ุงุณู… ูˆุฑู‚ู… ุงู„ุฌู„ูˆุณ ูˆุงู„ุฏุฑุฌุงุชุŒ ุซู… ูŠุชู… ุฅุฑุณุงู„ู‡ ุฅู„ู‰ ุงู„ุฏุงู„ุฉ printStudent ู„ุนุฑุถ ุงู„ุจูŠุงู†ุงุช.
481
+ ุงู„ููƒุฑุฉ ุงู„ุฃุณุงุณูŠุฉ ู‡ูŠ ุฃู† ุงู„ุฏุงู„ุฉ ุชุณุชู‚ุจู„ ู†ุณุฎุฉ ู…ู† ุงู„ู€ structure ูˆู„ูŠุณ ุงู„ุฃุตู„ุŒ ู„ุฐู„ูƒ ุฃูŠ ุชุนุฏูŠู„ ุฏุงุฎู„ ุงู„ุฏุงู„ุฉ ู„ุง ูŠุคุซุฑ ุนู„ู‰ ุงู„ู…ุชุบูŠุฑ ุงู„ุฃุตู„ูŠ.
482
+ ูŠูˆุฌุฏ ุนู†ุตุฑ ุจุตุฑูŠ ุฑุฆูŠุณูŠ ุนุจุงุฑุฉ ุนู† ุตู†ุฏูˆู‚ ูƒูˆุฏ ุนู„ู‰ ุงู„ูŠุณุงุฑุŒ ูˆุนู„ู‰ ุงู„ูŠู…ูŠู† ู‚ุณู… ุดุฑุญ ู…ุฎุชุตุฑ ุจู†ู‚ุงุท ูŠูˆุถุญ ุงู„ููƒุฑุฉ.
483
+
484
+
485
+ ================================================================================
486
+ PAGE 15 - page_0015.png
487
+ ================================================================================
488
+
489
+ ------------TEXT EXTRACTED------------
490
+ Passing Structures to Functions
491
+
492
+ Passing a Structure by Reference
493
+
494
+ Syntax:
495
+
496
+ return_type function_name(struct structure_name *variable);
497
+
498
+ ------------PAGE TALK ABOUT------------
499
+ ุชุชุญุฏุซ ุงู„ุตูุญุฉ ุนู† ูƒูŠููŠุฉ ุชู…ุฑูŠุฑ ุงู„ู€ structure ุฅู„ู‰ ุงู„ุฏูˆุงู„ ููŠ ู„ุบุฉ C ุจุงุณุชุฎุฏุงู… ุงู„ู…ุฑุฌุน (by reference).
500
+ ุชูˆุถุญ ุงู„ุตูŠุงุบุฉ ุงู„ุนุงู…ุฉ ู„ุชุนุฑูŠู ุฏุงู„ุฉ ุชุณุชู‚ุจู„ ู…ุคุดุฑู‹ุง ุฅู„ู‰ structure ุจุฏู„ู‹ุง ู…ู† ุชู…ุฑูŠุฑ ู†ุณุฎุฉ ูƒุงู…ู„ุฉ ู…ู†ู‡.
501
+ ู‡ุฐุง ุงู„ุฃุณู„ูˆุจ ูŠููŠุฏ ููŠ ุชู‚ู„ูŠู„ ุงู„ู†ุณุฎ ูˆุชุญุณูŠู† ุงู„ุฃุฏุงุกุŒ ูƒู…ุง ูŠุณู…ุญ ู„ู„ุฏุงู„ุฉ ุจุชุนุฏูŠู„ ุจูŠุงู†ุงุช ุงู„ู€ structure ุงู„ุฃุตู„ูŠุฉ.
502
+ ูŠูˆุฌุฏ ุนู†ุตุฑ ุจุตุฑูŠ ุจุณูŠุท ุนุจุงุฑุฉ ุนู† ุตู†ุฏูˆู‚ ุฑู…ุงุฏูŠ ูŠุญุชูˆูŠ ุณุทุฑ ุงู„ุตูŠุงุบุฉ ุงู„ุจุฑู…ุฌูŠุฉ ู…ุน ุชู…ูŠูŠุฒ ู„ูˆู†ูŠ ู„ุฃุฌุฒุงุก ุงู„ูƒูˆุฏ.
503
+
504
+
505
+ ================================================================================
506
+ PAGE 16 - page_0016.png
507
+ ================================================================================
508
+
509
+ ------------TEXT EXTRACTED------------
510
+ Passing Structures to Functions
511
+
512
+ Passing a Structure by Reference example
513
+
514
+ #include <stdio.h>
515
+
516
+ struct Student {
517
+ char name[50];
518
+ int rollNo;
519
+ float marks;
520
+ };
521
+
522
+ void updateMarks(struct Student *s) {
523
+ s->marks += 10; // Modify the structure using a pointer
524
+ }
525
+
526
+ int main() {
527
+ struct Student student1 = {"John Doe", 101, 95.5};
528
+ updateMarks(&student1); // Pass by reference
529
+ printf("Updated Marks: %.2f\n", student1.marks);
530
+ return 0;
531
+ }
532
+
533
+ Explanation:
534
+ โ€ข The address of the structure student1 is passed to the function updateMarks.
535
+ โ€ข Changes to the structure inside the function affect the original structure.
536
+
537
+ ------------PAGE TALK ABOUT------------
538
+ ุชุชุญุฏุซ ุงู„ุตูุญุฉ ุนู† ุชู…ุฑูŠุฑ ุงู„ู€ structure ุฅู„ู‰ ุงู„ุฏูˆุงู„ ููŠ ู„ุบุฉ C ุจุงุณุชุฎุฏุงู… ุงู„ู…ุฑุฌุน ุนุจุฑ ุงู„ู…ุคุดุฑ.
539
+ ูŠูˆุถุญ ุงู„ู…ุซุงู„ ุจู†ูŠุฉ Student ุงู„ุชูŠ ุชุญุชูˆูŠ ุนู„ู‰ ุงู„ุงุณู… ูˆุงู„ุฑู‚ู… ูˆุงู„ุฏุฑุฌุงุชุŒ ุซู… ุฏุงู„ุฉ updateMarks ุชุณุชู‚ุจู„ ู…ุคุดุฑู‹ุง ุฅู„ู‰ ุงู„ุจู†ูŠุฉ ูˆุชุฒูŠุฏ marks ุจู…ู‚ุฏุงุฑ 10.
540
+ ูƒู…ุง ูŠุจูŠู† ููŠ ุงู„ุฏุงู„ุฉ main ุฅู†ุดุงุก ูƒุงุฆู† student1 ูˆุชู…ุฑูŠุฑ ุนู†ูˆุงู†ู‡ ู„ู„ุฏุงู„ุฉ ุจุงุณุชุฎุฏุงู… &student1ุŒ ู„ุฐู„ูƒ ูŠุชู… ุชุนุฏูŠู„ ุงู„ู‚ูŠู…ุฉ ุงู„ุฃุตู„ูŠุฉ ู…ุจุงุดุฑุฉ.
541
+ ุจุตุฑูŠู‹ุงุŒ ุงู„ุตูุญุฉ ุนุจุงุฑุฉ ุนู† ุดุฑูŠุญุฉ ุชุนู„ูŠู…ูŠุฉ ููŠู‡ุง ุนู†ูˆุงู† ูƒุจูŠุฑ ุจุงู„ุฃุนู„ู‰ุŒ ูˆู…ุฑุจุน ูƒูˆุฏ ุนู„ู‰ ุงู„ูŠุณุงุฑุŒ ูˆู†ุต ุดุฑุญ ู†ู‚ุทูŠ ุนู„ู‰ ุงู„ูŠู…ูŠู†.
542
+
543
+
544
+ ================================================================================
545
+ PAGE 17 - page_0017.png
546
+ ================================================================================
547
+
548
+ ------------TEXT EXTRACTED------------
549
+ Passing Structures to Functions
550
+
551
+ Passing an Array of Structures to Functions
552
+
553
+ Why Pass an Array of Structures?
554
+
555
+ โ€ข To process multiple records of structured data within a function.
556
+
557
+ โ€ข Useful for operations like sorting, searching, or updating.
558
+
559
+ How to Pass an Array of Structures?
560
+
561
+ โ€ข Pass the array name (which is a pointer to the first element of the array).
562
+
563
+ Syntax:
564
+
565
+ return_type function_name(struct structure_name array[], int size);
566
+
567
+ ------------PAGE TALK ABOUT------------
568
+ ุชุชุญุฏุซ ุงู„ุตูุญุฉ ุนู† ูƒูŠููŠุฉ ุชู…ุฑูŠุฑ ุงู„ู…ุตููˆูุงุช ู…ู† ุงู„ู‡ูŠุงูƒู„ (Structures) ุฅู„ู‰ ุงู„ุฏูˆุงู„ ููŠ ุงู„ุจุฑู…ุฌุฉุŒ ูˆู„ู…ุงุฐุง ู†ุณุชุฎุฏู… ุฐู„ูƒ ุนู†ุฏ ุงู„ุชุนุงู…ู„ ู…ุน ุนุฏุฉ ุณุฌู„ุงุช ุจูŠุงู†ุงุช.
569
+ ุชูˆุถุญ ุงู„ููˆุงุฆุฏ ู…ุซู„ ุชู†ููŠุฐ ุนู…ู„ูŠุงุช ุงู„ูุฑุฒ ูˆุงู„ุจุญุซ ูˆุงู„ุชุญุฏูŠุซ ุฏุงุฎู„ ุงู„ุฏุงู„ุฉ ุจุณู‡ูˆู„ุฉ.
570
+ ูƒู…ุง ุชุดุฑุญ ุฃู† ุงุณู… ุงู„ู…ุตููˆูุฉ ูŠูู…ุฑู‘ูŽุฑ ุฅู„ู‰ ุงู„ุฏุงู„ุฉ ู„ุฃู†ู‡ ูŠุดูŠุฑ ุฅู„ู‰ ุฃูˆู„ ุนู†ุตุฑ ููŠู‡ุง.
571
+ ูŠูˆ๏ฟฝ๏ฟฝุฏ ุนู†ุตุฑ ุจุตุฑูŠ ุจุณูŠุท ุนุจุงุฑุฉ ุนู† ู…ุฑุจุน ุฑู…ุงุฏูŠ ููŠ ุงู„ุฃุณูู„ ูŠุญุชูˆูŠ ุนู„ู‰ ุตูŠุบุฉ ุงู„ูƒูˆุฏ ุงู„ุฎุงุตุฉ ุจุชู…ุฑูŠุฑ ู…ุตููˆูุฉ ู…ู† ุงู„ู‡ูŠุงูƒู„ ุฅู„ู‰ ุงู„ุฏุงู„ุฉ.
572
+
573
+
574
+ ================================================================================
575
+ PAGE 18 - page_0018.png
576
+ ================================================================================
577
+
578
+ ------------TEXT EXTRACTED------------
579
+ Passing an Array of Structures to Functions example:
580
+
581
+ #include <stdio.h>
582
+ struct Student {
583
+ char name[50];
584
+ int rollNo;
585
+ float marks;
586
+ };
587
+ void printStudents(struct Student students[], int n) {
588
+ for (int i = 0; i < n; i++) {
589
+ printf("Student %d:\n", i + 1);
590
+ printf("Name: %s\n", students[i].name);
591
+ printf("Roll No: %d\n", students[i].rollNo);
592
+ printf("Marks: %.2f\n", students[i].marks);
593
+ }
594
+ }
595
+
596
+ int main() {
597
+ struct Student students[3] = {
598
+ {"Alice", 101, 95.5},
599
+ {"Bob", 102, 88.0},
600
+ {"Charlie", 103, 92.5} };
601
+ printStudents(students, 3); // Pass array of structures
602
+ return 0;
603
+ }
604
+
605
+ Explanation:
606
+ โ€ข The array students is passed to the function printStudents.
607
+ โ€ข The function processes each element of the array.
608
+
609
+ ------------PAGE TALK ABOUT------------
610
+ ุชุชุญุฏุซ ุงู„ุตูุญุฉ ุนู† ูƒูŠููŠุฉ ุชู…ุฑูŠุฑ ู…ุตููˆูุฉ ู…ู† ุงู„ู‡ูŠุงูƒู„ (Array of Structures) ุฅู„ู‰ ุฏุงู„ุฉ ููŠ ู„ุบุฉ C.
611
+ ุชูˆุถุญ ู…ุซุงู„ู‹ุง ุจุงุณุชุฎุฏุงู… ู‡ูŠูƒู„ Student ูŠุญุชูˆูŠ ุนู„ู‰ ุงู„ุงุณู… ูˆุฑู‚ู… ุงู„ุฌู„ูˆุณ ูˆุงู„ุฏุฑุฌุงุชุŒ ุซู… ุชู…ุฑูŠุฑ ู…ุตููˆูุฉ ู…ู† ุงู„ุทู„ุงุจ ุฅู„ู‰ ุงู„ุฏุงู„ุฉ printStudents.
612
+ ุงู„ุฏุงู„ุฉ ุชุณุชุฎุฏู… ุญู„ู‚ุฉ for ู„ุงุณุชุนุฑุงุถ ูƒู„ ุนู†ุตุฑ ููŠ ุงู„ู…ุตููˆูุฉ ูˆุทุจุงุนุฉ ุจูŠุงู†ุงุชู‡.
613
+ ูŠูˆุฌุฏ ุชู†ุณูŠู‚ ุจุตุฑูŠ ุจุณูŠุท: ุนู†ูˆุงู† ูƒุจูŠุฑ ุจุงู„ุฃุนู„ู‰ุŒ ูƒูˆุฏ ุจุฑู…ุฌูŠ ุนู„ู‰ ุงู„ูŠุณุงุฑุŒ ูˆู‚ุณู… ุดุฑุญ ู…ุฎุชุตุฑ ุจู†ู‚ุงุท ุนู„ู‰ ุงู„ูŠู…ูŠู†.
614
+
615
+
616
+ ================================================================================
617
+ PAGE 19 - page_0019.png
618
+ ================================================================================
619
+
620
+ ------------TEXT EXTRACTED------------
621
+ Modifying an Array of Structures in a
622
+ Function example:
623
+
624
+ Explanation:
625
+
626
+ โ€ข The function updateMarks modifies
627
+
628
+ the marks of each student in the array.
629
+
630
+ โ€ข Changes are reflected in the original array.
631
+
632
+ #include <stdio.h>
633
+ struct Student {
634
+ char name[50];
635
+ int rollNo;
636
+ float marks;
637
+ };
638
+
639
+ void updateMarks(struct Student students[], int n) {
640
+ for (int i = 0; i < n; i++) {
641
+ students[i].marks += 10; // Update marks for each student
642
+ }
643
+ }
644
+ int main() {
645
+ struct Student students[3] = {
646
+ {"Alice", 101, 95.5},
647
+ {"Bob", 102, 88.0},
648
+ {"Charlie", 103, 92.5}
649
+ };
650
+ updateMarks(students, 3); // Pass array of structures
651
+ printf("Updated Marks:\n");
652
+ for (int i = 0; i < 3; i++) {
653
+ printf("Name: %s, Marks: %.2f\n", students[i].name, students[i].marks);
654
+ }
655
+ return 0;
656
+ }
657
+
658
+ ------------PAGE TALK ABOUT------------
659
+ ุชุชุญุฏุซ ุงู„ุตูุญุฉ ุนู† ู…ุซุงู„ ุจู„ุบุฉ C ูŠูˆุถุญ ูƒูŠููŠุฉ ุชุนุฏูŠู„ ู…ุตููˆูุฉ ู…ู† ุงู„ู‡ูŠุงูƒู„ (structures) ุฏุงุฎู„ ุฏุงู„ุฉ.
660
+ ุชูุนุฑู‘ู ุงู„ุตูุญุฉ ู‡ูŠูƒู„ Student ูŠุญุชูˆูŠ ุนู„ู‰ ุงู„ุงุณู… ูˆุฑู‚ู… ุงู„ุทุงู„ุจ ูˆุงู„ุฏุฑุฌุงุชุŒ ุซู… ุชุณุชุฎุฏู… ุงู„ุฏุงู„ุฉ updateMarks ู„ุฅุถุงูุฉ 10 ุฏุฑุฌุงุช ู„ูƒู„ ุทุงู„ุจ.
661
+ ูƒู…ุง ุชูˆุถู‘ุญ ุฃู† ุงู„ุชุนุฏูŠู„ุงุช ุฏุงุฎู„ ุงู„ุฏุงู„ุฉ ุชู†ุนูƒุณ ู…ุจุงุดุฑุฉ ุนู„ู‰ ุงู„ู…ุตููˆูุฉ ุงู„ุฃุตู„ูŠุฉ ู„ุฃู† ุงู„ู…ุตููˆูุฉ ุชูู…ุฑู‘ูŽุฑ ู„ู„ุฏุงู„ุฉ.
662
+ ุงู„ุชุตู…ูŠู… ูŠุญุชูˆูŠ ุนู„ู‰ ุนู†ูˆุงู† ูˆุดุฑุญ ู†ู‚ุทูŠ ููŠ ุงู„ุฌู‡ุฉ ุงู„ูŠุณุฑู‰ุŒ ูˆูƒูˆุฏ ุจุฑู…ุฌูŠ ู…ู„ูˆู‘ู† ูˆู…ู†ุณู‚ ููŠ ุงู„ุฌู‡ุฉ ุงู„ูŠู…ู†ู‰.
663
+
664
+
665
+ ================================================================================
666
+ PAGE 20 - page_0020.png
667
+ ================================================================================
668
+
669
+ ------------TEXT EXTRACTED------------
670
+ Introduction to Recursion
671
+
672
+ How Recursion Works (Stack Mechanism)
673
+
674
+ Recursion and the Call Stack:
675
+ Each recursive call creates a new stack frame.
676
+ The stack grows until the base case is reached.
677
+ Once the base case is reached, the stack unwinds, and results are returned.
678
+
679
+ Example: Factorial of 3
680
+
681
+ #include <stdio.h>
682
+
683
+ int factorial(int n) {
684
+ if (n == 0) return 1; // Base case
685
+ return n * factorial(n - 1); // Recursive case
686
+ }
687
+
688
+ int main()
689
+ {
690
+ int n = 3;
691
+ printf("Factorial of %d is %d\n", n, factorial(n));
692
+ return 0;
693
+ }
694
+
695
+ ------------PAGE TALK ABOUT------------
696
+ ุชุชุญุฏุซ ุงู„ุตูุญุฉ ุนู† ู…ู‚ุฏู…ุฉ ููŠ ู…ูู‡ูˆู… ุงู„ุงุณุชุฏุนุงุก ุงู„ุฐุงุชูŠ (Recursion) ูˆุขู„ูŠุฉ ุนู…ู„ู‡ ุจุงุณุชุฎุฏุงู… ู…ูƒุฏุณ ุงู„ุงุณุชุฏุนุงุกุงุช (Call Stack).
697
+ ุชูˆุถุญ ุฃู† ูƒู„ ุงุณุชุฏุนุงุก ุฐุงุชูŠ ูŠู†ุดุฆ ุฅุทุงุฑู‹ุง ุฌุฏูŠุฏู‹ุง ููŠ ุงู„ู…ูƒุฏุณุŒ ูˆูŠุณุชู…ุฑ ุงู„ุชุฑุงูƒู… ุญุชู‰ ุงู„ูˆุตูˆู„ ุฅู„ู‰ ุงู„ุญุงู„ุฉ ุงู„ุฃุณุงุณูŠ๏ฟฝ๏ฟฝ.
698
+ ุจุนุฏ ุงู„ูˆุตูˆู„ ุฅู„ู‰ ุงู„ุญุงู„ุฉ ุงู„ุฃุณุงุณูŠุฉ ูŠุจุฏุฃ ุงู„ู…ูƒุฏุณ ููŠ ุงู„ุชููƒูƒ ูˆุชูุนุงุฏ ุงู„ู†ุชุงุฆุฌ ุชุฏุฑูŠุฌูŠู‹ุง.
699
+ ูŠูˆุฌุฏ ู…ุซุงู„ ุจุฑู…ุฌูŠ ุจู„ุบุฉ C ู„ุญุณุงุจ !3 ุจุงุณุชุฎุฏุงู… ุฏุงู„ุฉ factorialุŒ ู…ุน ุชู…ูŠูŠุฒ ุงู„ุญุงู„ุฉ ุงู„ุฃุณุงุณูŠุฉ ูˆุงู„ุญุงู„ุฉ ุงู„ุชูƒุฑุงุฑูŠุฉ ุฏุงุฎู„ ุตู†ุฏูˆู‚ ูƒูˆุฏ ุจุตุฑูŠ.
700
+
701
+
702
+ ================================================================================
703
+ PAGE 21 - page_0021.png
704
+ ================================================================================
705
+
706
+ ------------TEXT EXTRACTED------------
707
+ Factorial (N!)
708
+
709
+ โ€ข N! = (N-1)! * N [for N > 1]
710
+
711
+ โ€ข 1! = 1
712
+
713
+ โ€ข 3!
714
+ = 2! * 3
715
+ = (1! * 2) * 3
716
+ = 1 * 2 * 3
717
+
718
+ โ€ข Recursive design:
719
+ โ€ข Decomposition: (N-1)!
720
+ โ€ข Composition: * N
721
+ โ€ข Base case: 1!
722
+
723
+ ------------PAGE TALK ABOUT------------
724
+ ุชุดุฑุญ ุงู„ุตูุญุฉ ู…ูู‡ูˆู… ุงู„ู…ุถุฑูˆุจ (Factorial) ูˆูŠุฑู…ุฒ ู„ู‡ ุจู€ N!ุŒ ูˆุชุนุฑุถ ุชุนุฑูŠูู‡ ุงู„ุนูˆุฏูŠ: โ€N! = (N-1)! ร— N ุนู†ุฏู…ุง ูŠูƒูˆู† N > 1ุŒ ู…ุน ุงู„ุญุงู„ุฉ ุงู„ุฃุณุงุณูŠุฉ 1! = 1.
725
+ ูƒู…ุง ุชู‚ุฏู… ู…ุซุงู„ู‹ุง ุนู„ู‰ ุญุณุงุจ 3! ุฎุทูˆุฉ ุจุฎุทูˆุฉ ุญุชู‰ ุงู„ูˆุตูˆู„ ุฅู„ู‰ 1 ร— 2 ร— 3.
726
+ ูˆุชูˆุถุญ ููƒุฑุฉ ุงู„ุชุตู…ูŠู… ุงู„ุนูˆุฏูŠ ุนุจุฑ ุซู„ุงุซุฉ ุนู†ุงุตุฑ: ุงู„ุชููƒูŠูƒ ุฅู„ู‰ (N-1)!ุŒ ุซู… ุงู„ุชุฑูƒูŠุจ ุจุถุฑุจ ุงู„ู†ุงุชุฌ ููŠ NุŒ ูˆุฃุฎูŠุฑู‹ุง ุงู„ุญุงู„ุฉ ุงู„ุฃุณุงุณูŠุฉ 1!.
727
+ ุจุตุฑูŠู‹ุงุŒ ุงู„ุตูุญุฉ ุนุจุงุฑุฉ ุนู† ุดุฑูŠุญุฉ ุชุนู„ูŠู…ูŠุฉ ุจุณูŠุทุฉ ุชุญุชูˆูŠ ุนู„ู‰ ุนู†ูˆุงู† ูƒุจูŠุฑ ูˆู†ู‚ุงุท ุชุนุฏุงุฏุŒ ู…ุน ุชู…ูŠูŠุฒ ุจุนุถ ุงู„ุฃุฌุฒุงุก ุจุงู„ุฃู„ูˆุงู† ู„ุฅุจุฑุงุฒ ุนู†ุงุตุฑ ุงู„ุนูˆุฏูŠุฉ.
728
+
729
+
730
+ ================================================================================
731
+ PAGE 22 - page_0022.png
732
+ ================================================================================
733
+
734
+ ------------TEXT EXTRACTED------------
735
+ Factorial example
736
+
737
+ #include <stdio.h>
738
+ int factorial(int n) {
739
+ if (n == 0) return 1; // Base case
740
+ return n * factorial(n - 1); // Recursive case
741
+ }
742
+
743
+ int main()
744
+ {
745
+ int n = 5;
746
+ printf("Factorial of %d is %d\n", n, factorial(n));
747
+ return 0;
748
+ }
749
+
750
+ ------------PAGE TALK ABOUT------------
751
+ ุชุชุญุฏุซ ุงู„ุตูุญุฉ ุนู† ู…ุซุงู„ ุจุฑู…ุฌูŠ ู„ุญุณุงุจ ุงู„ุนุงู…ู„ูŠุฉ (Factorial) ุจุงุณุชุฎุฏุงู… ู„ุบุฉ C.
752
+ ูŠูˆุถุญ ุงู„ูƒูˆุฏ ู…ูู‡ูˆู… ุงู„ุงุณุชุฏุนุงุก ุงู„ุฐุงุชูŠ Recursion ู…ู† ุฎู„ุงู„ ุญุงู„ุชูŠู†: ุงู„ุญุงู„ุฉ ุงู„ุฃุณุงุณูŠุฉ ุนู†ุฏู…ุง n == 0ุŒ ูˆุงู„ุญุงู„ุฉ ุงู„ุชูƒุฑุงุฑูŠุฉ ุจุฅุฑุฌุงุน n * factorial(n - 1).
753
+ ูƒู…ุง ูŠุญุชูˆูŠ ุนู„ู‰ ุฏุงู„ุฉ main ู„ุชุฌุฑุจุฉ ุงู„ู…ุซุงู„ ุนู†ุฏ n = 5 ูˆุทุจุงุนุฉ ุงู„ู†ุงุชุฌ.
754
+ ุจุตุฑูŠู‹ุงุŒ ุงู„ุตูุญุฉ ุนุจุงุฑุฉ ุนู† ุดุฑูŠุญุฉ ุชุนู„ูŠู…ูŠุฉ ุจุนู†ูˆุงู† ูƒุจูŠุฑ ููŠ ุงู„ุฃุนู„ู‰ุŒ ูˆุจุฏุงุฎู„ู‡ุง ู…ุฑุจุน ุฑู…ุงุฏูŠ ูุงุชุญ ูŠุญุชูˆูŠ ุนู„ู‰ ุงู„ูƒูˆุฏ ุงู„ุจุฑู…ุฌูŠ.
755
+
756
+
757
+ ================================================================================
758
+ PAGE 23 - page_0023.png
759
+ ================================================================================
760
+
761
+ ------------TEXT EXTRACTED------------
762
+ int factorial(int 3) {
763
+ if (n == 0) return 1; // Base case
764
+ return 3 * factorial(2); // Recursive case
765
+ }
766
+
767
+ ------------PAGE TALK ABOUT------------
768
+ ุงู„ุตูุญุฉ ุชุนุฑุถ ู…ุซุงู„ู‹ุง ุจุฑู…ุฌูŠู‹ุง ู„ุฏุงู„ุฉ factorial ุจุงุณุชุฎุฏุงู… ู…ูู‡ูˆู… ุงู„ุงุณุชุฏุนุงุก ุงู„ุฐุงุชูŠ (Recursion).
769
+ ูŠูˆุถุญ ุงู„ูƒูˆุฏ ุญุงู„ุชูŠู†: ุงู„ุญุงู„ุฉ ุงู„ุฃุณุงุณูŠุฉ ุนู†ุฏู…ุง ุชูƒูˆู† ุงู„ู‚ูŠู…ุฉ 0 ููŠูุฑุฌุน 1ุŒ ูˆุงู„ุญุงู„ุฉ ุงู„ุชูƒุฑุงุฑูŠุฉ ุงู„ุชูŠ ุชุณุชุฏุนูŠ ุงู„ุฏุงู„ุฉ ู…ุฑุฉ ุฃุฎุฑู‰.
770
+ ูŠูˆุฌุฏ ุฎุทุฃ ุฃูˆ ุชุจุณูŠุท ููŠ ุงู„ู‚ูŠู… ุงู„ุธุงู‡ุฑุฉ ุฏุงุฎู„ ุงู„ู…ุซุงู„ ู…ุซู„ int 3 ูˆ factorial(2) ุจุฏู„ ุงุณุชุฎุฏุงู… ุงู„ู…ุชุบูŠุฑ n ุจุดูƒู„ ุตุญูŠุญ.
771
+ ุงู„ุนู†ุงุตุฑ ุงู„ุจุตุฑูŠุฉ ุนุจุงุฑุฉ ุนู† ู…ุฑุจุน ุฑู…ุงุฏูŠ ูุงุชุญ ูŠุญุชูˆูŠ ุนู„ู‰ ูƒูˆุฏ ู…ู„ูˆู‘ู† ุจุฃุณู„ูˆุจ ุนุฑุถ ุชุนู„ูŠู…ูŠ.
772
+
773
+
774
+ ================================================================================
775
+ PAGE 24 - page_0024.png
776
+ ================================================================================
777
+
778
+ ------------TEXT EXTRACTED------------
779
+ int factorial(int 3) {
780
+ if (n == 0) return 1; // Base case
781
+ return 3 * factorial(2); // Recursive case
782
+ }
783
+
784
+ int factorial(int 2) {
785
+ if (n == 0) return 1; // Base case
786
+ return 2 * factorial(1); // Recursive case
787
+ }
788
+
789
+ ------------PAGE TALK ABOUT------------
790
+ ุชุชุญุฏุซ ุงู„ุตูุญุฉ ุนู† ู…ูู‡ูˆู… ุงู„ุงุณุชุฏุนุงุก ุงู„ุฐุงุชูŠ (Recursion) ููŠ ุฏุงู„ุฉ ุญุณุงุจ ุงู„ู…ุถุฑูˆุจ factorial.
791
+ ุชูˆุถุญ ุฃู† ุงู„ุฏุงู„ุฉ ุชุญุชูˆูŠ ุนู„ู‰ ุญุงู„ุฉ ุฃุณุงุณูŠุฉ Base case ุนู†ุฏู…ุง ุชูƒูˆู† n == 0ุŒ ูˆุญุงู„ุฉ้€’ๅฝ’ูŠุฉ Recursive case ุชุณุชุฏุนูŠ ููŠู‡ุง ุงู„ุฏุงู„ุฉ ู†ูุณู‡ุง ุจู‚ูŠู…ุฉ ุฃุตุบุฑ.
792
+ ูŠูˆุฌุฏ ุตู†ุฏูˆู‚ุงู† ูŠุญุชูˆูŠุงู† ุนู„ู‰ ู…ุซุงู„ูŠู† ู„ู„ุฏุงู„ุฉ ุนู†ุฏ ุงู„ู‚ูŠู… 3 ูˆ2ุŒ ู…ุน ุณู‡ู… ู…ู†ุญู†ูŠ ุจูŠู†ู‡ู…ุง ูŠูˆุถุญ ุงู†ุชู‚ุงู„ ุงู„ุงุณุชุฏุนุงุก ู…ู† factorial(3) ุฅู„ู‰ factorial(2).
793
+ ุงู„ู‡ุฏู ู…ู† ุงู„ุฑุณู… ู‡ูˆ ุดุฑุญ ูƒูŠู ุชุชุฏุฑุฌ ุงู„ุงุณุชุฏุนุงุกุงุช ุญุชู‰ ุงู„ูˆุตูˆู„ ุฅู„ู‰ ุงู„ุญุงู„ุฉ ุงู„ุฃุณุงุณูŠุฉ ุซู… ุงู„ุนูˆุฏุฉ ุจุงู„ู†ุชูŠุฌุฉ.
794
+
795
+
796
+ ================================================================================
797
+ PAGE 25 - page_0025.png
798
+ ================================================================================
799
+
800
+ ------------TEXT EXTRACTED------------
801
+ int factorial(int 3) {
802
+ if (n == 0) return 1; // Base case
803
+ return 3 * factorial(2); // Recursive case
804
+ }
805
+
806
+ int factorial(int 2) {
807
+ if (n == 0) return 1; // Base case
808
+ return 2 * factorial(1); // Recursive case
809
+ }
810
+
811
+ int factorial(int 1) {
812
+ if (n == 0) return 1; // Base case
813
+ return 1 * factorial(0); // Recursive case
814
+ }
815
+
816
+ ------------PAGE TALK ABOUT------------
817
+ ุชูˆุถุญ ุงู„ุตูุญุฉ ู…ูู‡ูˆู… ุงู„ุงุณุชุฏุนุงุก ุงู„ุฐุงุชูŠ (Recursion) ู…ู† ุฎู„ุงู„ ุฏุงู„ุฉ factorial.
818
+ ุชูุธู‡ุฑ ุงู„ุฃู…ุซู„ุฉ ูƒูŠู ูŠุชู… ุงุณุชุฏุนุงุก ุงู„ุฏุงู„ุฉ ู„ู†ูุณู‡ุง ุชุฏุฑูŠุฌูŠู‹ุง: ู…ู† 3 ุฅู„ู‰ 2 ุซู… ุฅู„ู‰ 1 ุซู… 0.
819
+ ูŠูˆุฌุฏ ุชู…ูŠูŠุฒ ุจูŠู† ุญุงู„ุชูŠู†: ุงู„ุญุงู„ุฉ ุงู„ุฃุณุงุณูŠุฉ Base case ุนู†ุฏู…ุง n == 0ุŒ ูˆุงู„ุญุงู„ุฉ ุงู„ุชูƒุฑุงุฑูŠุฉ Recursive case.
820
+ ูƒู…ุง ุชุนุฑุถ ุงู„ุตูˆุฑุฉ ุฃุณู‡ู…ุงู‹ ู…ู†ุญู†ูŠุฉ ุจูŠู† ู…ุฑุจุนุงุช ุงู„ูƒูˆุฏ ู„ุชูˆุถูŠุญ ุชุณู„ุณู„ ุงู†ุชู‚ุงู„ ุงู„ุงุณุชุฏุนุงุกุงุช ุจูŠู† ูƒู„ ุฎุทูˆุฉ.
821
+
822
+
823
+ ================================================================================
824
+ PAGE 26 - page_0026.png
825
+ ================================================================================
826
+
827
+ ------------TEXT EXTRACTED------------
828
+ int factorial(int 3) {
829
+ if (n == 0) return 1; // Base case
830
+ return 3 * factorial(2); // Recursive case
831
+ }
832
+
833
+ int factorial(int 2) {
834
+ if (n == 0) return 1; // Base case
835
+ return 2 * factorial(1); // Recursive case
836
+ }
837
+
838
+ int factorial(int 1) {
839
+ if (n == 0) return 1; // Base case
840
+ return 2 * factorial(1); // Recursive case
841
+ }
842
+
843
+ int factorial(int 0) {
844
+ if (n == 0) return 1; // Base case
845
+ return n * factorial(n - 1); // Recursive case
846
+ }
847
+
848
+ ------------PAGE TALK ABOUT------------
849
+ ุชูˆุถุญ ุงู„ุตูุญุฉ ู…ูู‡ูˆู… ุงู„ุงุณุชุฏุนุงุก ุงู„ุฐุงุชูŠ Recursion ู…ู† ุฎู„ุงู„ ุฏุงู„ุฉ factorial ูˆูƒูŠู ุชู†ุชู‚ู„ ุงู„ู‚ูŠู… ู…ู† factorial(3) ุฅู„ู‰ factorial(0).
850
+ ูŠุธู‡ุฑ ููŠ ูƒู„ ุตู†ุฏูˆู‚ ุฌุฒุก ู…ู† ุงู„ูƒูˆุฏ ู…ุน ุญุงู„ุชูŠู†: ุงู„ุญุงู„ุฉ ุงู„ุฃุณุงุณูŠุฉ Base case ุนู†ุฏู…ุง n == 0ุŒ ูˆุงู„ุญุงู„ุฉ ุงู„ุชูƒุฑุงุฑูŠุฉ Recursive case ุงู„ุชูŠ ุชุณุชุฏุนูŠ ุงู„ุฏุงู„ุฉ ุจู‚ูŠู…ุฉ ุฃุตุบุฑ.
851
+ ุชูˆุฌุฏ ุฃุณู‡ู… ู…ู†ุญู†ูŠุฉ ูˆุฑุฏูŠุฉ ุจูŠู† ุงู„ุตู†ุงุฏูŠู‚ ู„ุชู…ุซูŠู„ ุชุณู„ุณู„ ุงู„ุงุณุชุฏุนุงุกุงุช ุฎุทูˆุฉ ุจุฎุทูˆุฉ ุญุชู‰ ุงู„ูˆุตูˆู„ ุฅู„ู‰ ุงู„ุญุงู„ุฉ ุงู„ุฃุณุงุณูŠุฉ.
852
+ ุงู„ุตูˆุฑุฉ ุชุดุฑุญ ุจุตุฑูŠู‹ุง ูƒูŠู ูŠุชู… ุชููƒูŠูƒ ุญุณุงุจ ุงู„ู…ุถุฑูˆุจ ุชุฏุฑูŠุฌูŠู‹ุง ุนุจุฑ ุนุฏุฉ ุงุณุชุฏุนุงุกุงุช ู…ุชุชุงู„ูŠุฉ.
853
+
854
+
855
+ ================================================================================
856
+ PAGE 27 - page_0027.png
857
+ ================================================================================
858
+
859
+ ------------TEXT EXTRACTED------------
860
+ int factorial(int 3) {
861
+ if (n == 0) return 1; // Base case
862
+ return 3 * factorial(2); // Recursive case
863
+ }
864
+
865
+ int factorial(int 2) {
866
+ if (n == 0) return 1; // Base case
867
+ return 2 * factorial(1); // Recursive case
868
+ }
869
+
870
+ int factorial(int 1) {
871
+ if (n == 0) return 1; // Base case
872
+ return 1 * factorial(0); // Recursive case
873
+ }
874
+
875
+ int factorial(int 0) {
876
+ if (n == 0) return 1; // Base case
877
+ return n * factorial(n - 1); // Recursive case
878
+ }
879
+
880
+ ------------PAGE TALK ABOUT------------
881
+ ุชุดุฑุญ ุงู„ุตูุญุฉ ู…ูู‡ูˆู… ุงู„ุงุณุชุฏุนุงุก ุงู„ุฐุงุชูŠ (Recursion) ู…ู† ุฎู„ุงู„ ุฏุงู„ุฉ ุญุณุงุจ ุงู„ู…ุถุฑูˆุจ factorial ุจุฏุกู‹ุง ู…ู† 3 ุซู… 2 ุซู… 1 ุญุชู‰ 0.
882
+ ุชูˆุถุญ ุฃู† ูƒู„ ุงุณุชุฏุนุงุก ูŠู†ูุฐ ุงู„ุญุงู„ุฉ ุงู„ุชูƒุฑุงุฑูŠุฉ Recursive caseุŒ ุจูŠู†ู…ุง ุนู†ุฏ ุงู„ูˆุตูˆู„ ุฅู„ู‰ n == 0 ูŠุชู… ุชู†ููŠุฐ ุงู„ุญุงู„ุฉ ุงู„ุฃุณุงุณูŠุฉ Base case ูˆุฅุฑุฌุงุน 1.
883
+ ูŠูˆุฌุฏ ู…ุฎุทุท ุจุตุฑูŠ ุนู„ู‰ ุดูƒู„ ุตู†ุงุฏูŠู‚ ูƒูˆุฏ ู…ุชุฏุฑุฌุฉ ูŠุจูŠู† ุชุณู„ุณู„ ุงู„ุงุณุชุฏุนุงุกุงุชุŒ ู…ุน ุณู‡ู… ูˆุฑุฏูŠ ู…ู†ุญู†ูŠ ูŠุดูŠุฑ ุฅู„ู‰ ุงู„ุงู†ุชู‚ุงู„ ู†ุญูˆ ุงู„ุญุงู„ุฉ ุงู„ุฃุณุงุณูŠุฉ ุนู†ุฏ factorial(0).
884
+ ุงู„ู‡ุฏู ู…ู† ุงู„ุฑุณู… ู‡ูˆ ุชูˆุถูŠุญ ูƒูŠู ุชุชูˆู‚ู ุงู„ุฏุงู„ุฉ ุงู„ุนูˆุฏูŠุฉ ุนู†ุฏ ุงู„ุดุฑุท ุงู„ุฃุณุงุณูŠ ุซู… ุชุจุฏุฃ ุงู„ู‚ูŠู… ููŠ ุงู„ุฑุฌูˆุน ู„ู„ุญุณุงุจ ุงู„ู†ู‡ุงุฆูŠ.
885
+
886
+
887
+ ================================================================================
888
+ PAGE 28 - page_0028.png
889
+ ================================================================================
890
+
891
+ ------------TEXT EXTRACTED------------
892
+ int factorial(int 3) {
893
+ if (n == 0) return 1; // Base case
894
+ return 3 * factorial(2); // Recursive case
895
+ }
896
+
897
+ int factorial(int 2) {
898
+ if (n == 0) return 1; // Base case
899
+ return 2 * factorial(1); // Recursive case
900
+ }
901
+
902
+ int factorial(int 1) {
903
+ if (n == 0) return 1; // Base case
904
+ return 1 * 1; // Recursive case
905
+ }
906
+
907
+ int factorial(int 0) {
908
+ if (n == 0) return 1; // Base case
909
+ return n * factorial(n - 1); // Recursive case
910
+ }
911
+
912
+ ------------PAGE TALK ABOUT------------
913
+ ุชูˆุถุญ ุงู„ุตูุญุฉ ููƒุฑุฉ ุงู„ุงุณุชุฏุนุงุก ุงู„ุฐุงุชูŠ Recursion ู…ู† ุฎู„ุงู„ ู…ุซุงู„ ุฏุงู„ุฉ factorial ุจุฏุกู‹ุง ู…ู† 3 ุซู… 2 ุซู… 1 ุซู… 0.
914
+ ุชูุธู‡ุฑ ุฃู† ูƒู„ ุงุณุชุฏุนุงุก ูŠู†ุชุธุฑ ู†ุชูŠุฌุฉ ุงู„ุงุณุชุฏุนุงุก ุงู„ุชุงู„ูŠ ุญุชู‰ ุงู„ูˆุตูˆู„ ุฅู„ู‰ ุงู„ุญุงู„ุฉ ุงู„ุฃุณุงุณูŠุฉ Base case ุนู†ุฏ n == 0 ุญูŠุซ ุชูุฑุฌุน ุงู„ุฏุงู„ุฉ 1.
915
+ ุจุนุฏู‡ุง ูŠุชู… ุงู„ุฑุฌูˆุน ู„ู„ุฎู„ู ู„ุญุณุงุจ ุงู„ู‚ูŠู… ุชุฏุฑูŠุฌูŠู‹ุง ู…ุซู„ 1 ร— 1 ุซู… 2 ร— factorial(1) ุซู… 3 ร— factorial(2).
916
+ ูŠูˆุฌุฏ ู…ุฎุทุท ุจุตุฑูŠ ุนู„ู‰ ุดูƒู„ ุตู†ุงุฏูŠู‚ ูƒูˆุฏ ู…ุชุฏุฑุฌุฉ ู…ุน ุณู‡ู… ูˆุฑุฏูŠ ูŠุฑุจุท ุจูŠู† factorial(1) ูˆ factorial(0) ู„ุชูˆุถูŠุญ ู…ุณุงุฑ ุงู„ุชู†ููŠุฐ.
917
+
918
+
919
+ ================================================================================
920
+ PAGE 29 - page_0029.png
921
+ ================================================================================
922
+
923
+ ------------TEXT EXTRACTED------------
924
+ int factorial(int 3) {
925
+ if (n == 0) return 1; // Base case
926
+ return 3 * factorial(2); // Recursive case
927
+ }
928
+
929
+ int factorial(int 2) {
930
+ if (n == 0) return 1; // Base case
931
+ return 2 * factorial(1); // Recursive case
932
+ }
933
+
934
+ int factorial(int 1) {
935
+ if (n == 0) return 1; // Base case
936
+ return 1; // Recursive case
937
+ }
938
+
939
+ int factorial(int 0) {
940
+ if (n == 0) return 1; // Base case
941
+ return n * factorial(n - 1); // Recursive case
942
+ }
943
+
944
+ ------------PAGE TALK ABOUT------------
945
+ ุชุชุญุฏุซ ุงู„ุตูุญุฉ ุนู† ุดุฑุญ ุงู„ุนูˆุฏูŠุฉ (Recursion) ู…ู† ุฎู„ุงู„ ุฏุงู„ุฉ ุญุณุงุจ ุงู„ู…ุถุฑูˆุจ factorial.
946
+ ุชูุธู‡ุฑ ูƒูŠู ูŠุชู… ุงุณุชุฏุนุงุก ุงู„ุฏุงู„ุฉ ุชุฏุฑูŠุฌูŠู‹ุง ู…ู† factorial(3) ุฅู„ู‰ factorial(2) ุซู… factorial(1) ุญุชู‰ ุงู„ูˆุตูˆู„ ุฅู„ู‰ factorial(0).
947
+ ูƒู…ุง ุชูˆุถู‘ุญ ุงู„ูุฑู‚ ุจูŠู† ุงู„ุญุงู„ุฉ ุงู„ุฃุณุงุณูŠุฉ Base case ูˆู‡ูŠ `if (n == 0) return 1;` ูˆุงู„ุญุงู„ุฉ ุงู„ุนูˆุฏูŠุฉ Recursive case.
948
+ ูŠูˆุฌุฏ ู…ุฎุทุท ุจุตุฑูŠ ุนู„ู‰ ุดูƒู„ ุตู†ุงุฏูŠู‚ ูƒูˆุฏ ู…ุชุชุงุจุนุฉ ู…ุน ุณู‡ู… ูˆุฑุฏูŠ ูŠุฑุจุท ุงู„ุงุณุชุฏุนุงุกุงุช ูˆูŠูˆุถุญ ุงู„ูˆุตูˆู„ ุฅู„ู‰ ุงู„ุญุงู„ุฉ ุงู„ุฃุณุงุณูŠุฉ ุซู… ุงู„ุฑุฌูˆุน ุจุงู„ู†ุชูŠุฌุฉ.
949
+
950
+
951
+ ================================================================================
952
+ PAGE 30 - page_0030.png
953
+ ================================================================================
954
+
955
+ ------------TEXT EXTRACTED------------
956
+ int factorial(int 3) {
957
+ if (n == 0) return 1; // Base case
958
+ return 3 * factorial(2); // Recursive case
959
+ }
960
+
961
+ int factorial(int 2) {
962
+ if (n == 0) return 1; // Base case
963
+ return 2 * factorial(1); // Recursive case
964
+ }
965
+
966
+ int factorial(int 1) {
967
+ if (n == 0) return 1; // Base case
968
+ return 1; // Recursive case
969
+ }
970
+
971
+ ------------PAGE TALK ABOUT------------
972
+ ุชูˆุถุญ ุงู„ุตูุญุฉ ู…ูู‡ูˆู… ุงู„ุงุณุชุฏุนุงุก ุงู„ุฐุงุชูŠ (Recursion) ู…ู† ุฎู„ุงู„ ู…ุซุงู„ ุฏุงู„ุฉ factorial.
973
+ ุชูุธู‡ุฑ ุงู„ู…ุฑุจุนุงุช ุงู„ุซู„ุงุซุฉ ุชุชุจุน ุชู†ููŠุฐ ุงู„ุฏุงู„ุฉ ู„ู„ู‚ูŠู… 3 ุซู… 2 ุซู… 1ุŒ ู…ุน ูˆุฌูˆุฏ ุญุงู„ุฉ ุฃุณุงุณูŠุฉ ูˆุญุงู„ุฉ ุชูƒุฑุงุฑูŠุฉ.
974
+ ุงู„ุฃุณู‡ู… ุงู„ูˆุฑุฏูŠุฉ ุจูŠู† ุงู„ู…ุฑุจุนุงุช ุชุจูŠู‘ู† ุงู†ุชู‚ุงู„ ุงู„ุงุณุชุฏุนุงุกุงุช ุจูŠู† ุงู„ุฏูˆุงู„ ุจุดูƒู„ ู…ุชุณู„ุณู„.
975
+ ุงู„ููƒุฑุฉ ุงู„ุนุงู…ุฉ ู‡ูŠ ุดุฑุญ ูƒูŠู ุชูุญุณุจ factorial ุฎุทูˆุฉ ุจุฎุทูˆุฉ ุญุชู‰ ุงู„ูˆุตูˆู„ ุฅู„ู‰ ุงู„ู‚ูŠู…ุฉ ุงู„ู†ู‡ุงุฆูŠุฉ.
976
+
977
+
978
+ ================================================================================
979
+ PAGE 31 - page_0031.png
980
+ ================================================================================
981
+
982
+ ------------TEXT EXTRACTED------------
983
+ int factorial(int 3) {
984
+ if (n == 0) return 1; // Base case
985
+ return 3 * factorial(2); // Recursive case
986
+ }
987
+
988
+ int factorial(int 2) {
989
+ if (n == 0) return 1; // Base case
990
+ return 2 * 1 // Recursive case
991
+ }
992
+
993
+ int factorial(int 1) {
994
+ if (n == 0) return 1; // Base case
995
+ return 1; // Recursive case
996
+ }
997
+
998
+ ------------PAGE TALK ABOUT------------
999
+ ุชุชุญุฏุซ ุงู„ุตูุญุฉ ุนู† ุดุฑุญ ู…ูู‡ูˆู… ุงู„ุงุณุชุฏุนุงุก ุงู„ุฐุงุชูŠ (Recursion) ุจุงุณุชุฎุฏุงู… ุฏุงู„ุฉ factorial.
1000
+ ุชูุธู‡ุฑ ุงู„ุฃู…ุซู„ุฉ ูƒูŠู ูŠุชู… ุญุณุงุจ !3 ุนุจุฑ ุงุณุชุฏุนุงุก factorial(2) ุซู… factorial(1) ุญุชู‰ ุงู„ูˆุตูˆู„ ุฅู„ู‰ ุงู„ุญุงู„ุฉ ุงู„ุฃุณุงุณูŠุฉ.
1001
+ ู‡ู†ุงูƒ ุฃุณู‡ู… ู…ู†ุญู†ูŠุฉ ุจุงู„ู„ูˆู† ุงู„ูˆุฑุฏูŠ ุชุฑุจุท ุจูŠู† ู…ุฑุจุนุงุช ุงู„ุดูŠูุฑุฉ ู„ุชูˆุถูŠุญ ุชุณู„ุณู„ ุงู„ุงุณุชุฏุนุงุกุงุช ูˆุนูˆุฏุฉ ุงู„ู‚ูŠู….
1002
+ ุงู„ุฑู‚ู… 1 ุจุงู„ู„ูˆู† ุงู„ุฃุญู…ุฑ ูŠุจุฑุฒ ุงู„ู‚ูŠู…ุฉ ุงู„ู…ุนุงุฏุฉ ููŠ ุงู„ู…ุฑุงุญู„ ุงู„ุฃุฎูŠุฑุฉ ู…ู† ุงู„ุชู†ููŠุฐ.
1003
+
1004
+
1005
+ ================================================================================
1006
+ PAGE 32 - page_0032.png
1007
+ ================================================================================
1008
+
1009
+ ------------TEXT EXTRACTED------------
1010
+ int factorial(int 3) {
1011
+ if (n == 0) return 1; // Base case
1012
+ return 3 * factorial(2); // Recursive case
1013
+ }
1014
+
1015
+ int factorial(int 2) {
1016
+ if (n == 0) return 1; // Base case
1017
+ return 2 // Recursive case
1018
+ }
1019
+
1020
+ int factorial(int 1) {
1021
+ if (n == 0) return 1; // Base case
1022
+ return 1; // Recursive case
1023
+ }
1024
+
1025
+ ------------PAGE TALK ABOUT------------
1026
+ ุชูˆุถุญ ุงู„ุตูุญุฉ ููƒุฑุฉ ุงู„ุงุณุชุฏุนุงุก ุงู„ุฐุงุชูŠ (Recursion) ููŠ ุฏุงู„ุฉ factorial ู…ู† ุฎู„ุงู„ ุชุชุจุน ุงู„ู‚ูŠู… 3 ุซู… 2 ุซู… 1.
1027
+ ูŠูˆุฌุฏ ุซู„ุงุซ ูƒุชู„ ูƒูˆุฏ ุชู…ุซู„ ู…ุฑุงุญู„ ู…ุฎุชู„ูุฉ ู…ู† ุงุณุชุฏุนุงุก ุงู„ุฏุงู„ุฉุŒ ู…ุน ุชู…ูŠูŠุฒ ุญุงู„ุฉ ุงู„ุฃุณุงุณ ูˆุญุงู„ุฉ ุงู„ุงุณุชุฏุนุงุก ุงู„ุชูƒุฑุงุฑูŠ.
1028
+ ุงู„ุฃุณู‡ู… ุงู„ูˆุฑุฏูŠุฉ ุงู„ู…ู†ุญู†ูŠุฉ ุจูŠู† ุงู„ูƒุชู„ ุชุดุฑุญ ุงู†ุชู‚ุงู„ ุงู„ุชู†ููŠุฐ ู…ู† ุงุณุชุฏุนุงุก ุฅู„ู‰ ุขุฎุฑ ุจุดูƒู„ ุจุตุฑูŠ.
1029
+ ุงู„ู‡ุฏู ู…ู† ุงู„ุฑุณู… ู‡ูˆ ุชุจุณูŠุท ูƒูŠููŠุฉ ู†ุฒูˆู„ ุงู„ุฏุงู„ุฉ ุชุฏุฑูŠุฌูŠู‹ุง ุญุชู‰ ุชุตู„ ุฅู„ู‰ ุงู„ุญุงู„ุฉ ุงู„ุฃุณุงุณูŠุฉ ุซู… ุชุนูˆุฏ ุจุงู„ู†ุชุงุฆุฌ.
1030
+
1031
+
1032
+ ================================================================================
1033
+ PAGE 33 - page_0033.png
1034
+ ================================================================================
1035
+
1036
+ ------------TEXT EXTRACTED------------
1037
+ int factorial(int 3) {
1038
+ if (n == 0) return 1; // Base case
1039
+ return 3 * 2; // Recursive case
1040
+
1041
+ int factorial(int 2) {
1042
+ if (n == 0) return 1; // Base case
1043
+ return 2 // Recursive case
1044
+ }
1045
+
1046
+ ------------PAGE TALK ABOUT------------
1047
+ ุชุชุญุฏุซ ุงู„ุตูุญุฉ ุนู† ุดุฑุญ ู…ูู‡ูˆู… ุงู„ุงุณุชุฏุนุงุก ุงู„ุฐุงุชูŠ (Recursion) ููŠ ุฏุงู„ุฉ factorial.
1048
+ ุชูุธู‡ุฑ ู…ุฑุจุนุงุช ูƒูˆุฏ ุชู…ุซู„ ุงุณุชุฏุนุงุก ุงู„ุฏุงู„ุฉ ุนู†ุฏ ุงู„ู‚ูŠู…ุชูŠู† 3 ูˆ2 ู…ุน ุชูˆุถูŠุญ ุญุงู„ุฉ ุงู„ุฃุณุงุณ ูˆุญุงู„ุฉ ุงู„ุชูƒุฑุงุฑ.
1049
+ ูŠูˆุฌุฏ ุณู‡ู… ูˆุฑุฏูŠ ูƒุจูŠุฑ ูŠุฑุจุท ุจูŠู† ุงู„ู…ุฑุจุนูŠู† ู„ูŠูˆุถุญ ุงู†ุชู‚ุงู„ ุงู„ุชู†ููŠุฐ ู…ู† factorial(3) ุฅู„ู‰ factorial(2).
1050
+ ุงู„ู‡ุฏู ุงู„ุจุตุฑูŠ ู‡ูˆ ุจูŠุงู† ูƒูŠู ุชุณุชุฏุนูŠ ุงู„ุฏุงู„ุฉ ู†ูุณู‡ุง ุชุฏุฑูŠุฌูŠู‹ุง ุญุชู‰ ุชุตู„ ุฅู„ู‰ ุญุงู„ุฉ ุงู„ุฃุณุงุณ.
1051
+
1052
+
1053
+ ================================================================================
1054
+ PAGE 34 - page_0034.png
1055
+ ================================================================================
1056
+
1057
+ ------------TEXT EXTRACTED------------
1058
+ int factorial(int 3) {
1059
+ if (n == 0) return 1; // Base case
1060
+ return 6; // Recursive case
1061
+ }
1062
+
1063
+ ------------PAGE TALK ABOUT------------
1064
+ ุงู„ุตูุญุฉ ุชุนุฑุถ ู…ุซุงู„ู‹ุง ุจุฑู…ุฌูŠู‹ุง ู„ุฏุงู„ุฉ factorial ู…ูƒุชูˆุจุฉ ุจู„ุบุฉ ุดุจูŠู‡ุฉ ุจู€ C/C++ ู„ุดุฑุญ ู…ูู‡ูˆู… ุงู„ุงุณุชุฏุนุงุก ุงู„ุฐุงุชูŠ (Recursion).
1065
+ ูŠูˆุฌุฏ ุชูˆุถูŠุญ ู„ุญุงู„ุฉ ุงู„ุฃุณุงุณ `Base case` ุนู†ุฏู…ุง ุชูƒูˆู† ู‚ูŠู…ุฉ `n` ุตูุฑู‹ุงุŒ ูˆุญุงู„ุฉ ุงู„ุงุณุชุฏุนุงุก ุงู„ุชูƒุฑุงุฑูŠ `Recursive case`.
1066
+ ุชุธู‡ุฑ ุจุนุถ ุงู„ุฃุฌุฒุงุก ู…ู…ูŠุฒุฉ ุจุงู„ุฃู„ูˆุงู†ุŒ ู…ุซู„ ุงู„ุฑู‚ู… 3 ููŠ ุชุนุฑูŠู ุงู„ุฏุงู„ุฉ ูˆุงู„ุฑู‚ู… 6 ููŠ ุฌู…ู„ุฉ ุงู„ุฅุฑุฌุงุน ุจุงู„ู„ูˆู† ุงู„ุฃุญู…ุฑ.
1067
+ ุงู„ุฎู„ููŠุฉ ุจุณูŠุทุฉ ุฌุฏู‹ุง ูˆุชุญุชูˆูŠ ูู‚ุท ุนู„ู‰ ู…ุฑุจุน ูุงุชุญ ุจุฏุงุฎู„ู‡ ุงู„ูƒูˆุฏ ุฏูˆู† ุฃูŠ ุฑุณูˆู… ุฃูˆ ู…ุฎุทุทุงุช ุฅุถุงููŠุฉ.
1068
+
1069
+
1070
+ ================================================================================
1071
+ PAGE 35 - page_0035.png
1072
+ ================================================================================
1073
+
1074
+ ------------TEXT EXTRACTED------------
1075
+ Fibonacci Numbers
1076
+
1077
+ โ€ข The Nแต—สฐ Fibonacci number is the sum of the previous two Fibonacci numbers
1078
+
1079
+ โ€ข 0, 1, 1, 2, 3, 5, 8, 13, ...
1080
+
1081
+ โ€ข Recursive Design:
1082
+ โ€ข Decomposition & Composition
1083
+ โ€ข fibonacci(n) = fibonacci(n-1) + fibonacci(n-2)
1084
+ โ€ข Base case:
1085
+ โ€ข fibonacci(1) = 0
1086
+ โ€ข fibonacci(2) = 1
1087
+
1088
+ ------------PAGE TALK ABOUT------------
1089
+ ุชุชุญุฏุซ ุงู„ุตูุญุฉ ุนู† ู…ุชุชุงู„ูŠุฉ ููŠุจูˆู†ุงุชุดูŠ ูˆูƒูŠููŠุฉ ุญุณุงุจ ุงู„ุญุฏ ุงู„ู†ูˆู†ูŠ ููŠู‡ุง ุจุงุนุชุจุงุฑู‡ ู…ุฌู…ูˆุน ุงู„ุญุฏูŠู† ุงู„ุณุงุจู‚ูŠู†.
1090
+ ุชูˆุถุญ ุฃู…ุซู„ุฉ ู„ุฃูˆู„ ุฃุนุฏุงุฏ ุงู„ู…ุชุชุงู„ูŠุฉ ู…ุซู„: 0ุŒ 1ุŒ 1ุŒ 2ุŒ 3ุŒ 5ุŒ 8ุŒ 13.
1091
+ ูƒู…ุง ุชุดุฑุญ ุงู„ุชุตู…ูŠู… ุงู„ุชูƒุฑุงุฑูŠ (Recursive Design) ู…ู† ุฎู„ุงู„ ุงู„ุนู„ุงู‚ุฉ: fibonacci(n) = fibonacci(n-1) + fibonacci(n-2).
1092
+ ูˆุชุนุฑุถ ุญุงู„ุชูŠ ุงู„ุฃุณุงุณ ู„ุจุฏุก ุงู„ุงุณุชุฏุนุงุก ุงู„ุชูƒุฑุงุฑูŠ: fibonacci(1)=0 ูˆ fibonacci(2)=1.
1093
+
1094
+
1095
+ ================================================================================
1096
+ PAGE 36 - page_0036.png
1097
+ ================================================================================
1098
+
1099
+ ------------TEXT EXTRACTED------------
1100
+ Fibonacci Numbers
1101
+
1102
+ Fibonacci Sequence Definition
1103
+
1104
+ The Fibonacci sequence is defined as:
1105
+ โ€ข fib(0) = 0
1106
+ โ€ข fib(1) = 1
1107
+ โ€ข fib(n) = fib(n-1) + fib(n-2) for n > 1
1108
+
1109
+ For n = 4, the expected Fibonacci number is 3 (since the sequence is: 0, 1, 1, 2, 3).
1110
+
1111
+ #include <stdio.h>
1112
+ int fibonacci(int n) {
1113
+ if (n <= 1) return n; // Base case
1114
+ return fibonacci(n - 1) + fibonacci(n - 2); // Binary recursive call
1115
+ }
1116
+
1117
+ int main() {
1118
+ int n = 4;
1119
+ printf("Fibonacci number at position %d is %d\n", n, fibonacci(n));
1120
+ return 0;
1121
+ }
1122
+
1123
+ ------------PAGE TALK ABOUT------------
1124
+ ุชุชุญุฏุซ ุงู„ุตูุญุฉ ุนู† ู…ุชุชุงู„ูŠุฉ ููŠุจูˆู†ุงุชุดูŠ ูˆุชุนุฑูŠูู‡ุง ุงู„ุฑูŠุงุถูŠ ุจุงุณุชุฎุฏุงู… ุงู„ู‚ูŠู… ุงู„ุฃุณุงุณูŠุฉ fib(0)=0 ูˆ fib(1)=1ุŒ ุซู… ุงู„ุนู„ุงู‚ุฉ ุงู„ุชูƒุฑุงุฑูŠุฉ ู„ุจุงู‚ูŠ ุงู„ุญุฏูˆุฏ.
1125
+ ูƒู…ุง ุชุนุฑุถ ู…ุซุงู„ู‹ุง ุนู†ุฏ n = 4 ุญูŠุซ ุชูƒูˆู† ุงู„ู†ุชูŠุฌุฉ 3ุŒ ู…ุน ุชูˆุถูŠุญ ุชุณู„ุณู„ ุงู„ุฃุนุฏุงุฏ: 0ุŒ 1ุŒ 1ุŒ 2ุŒ 3.
1126
+ ูŠูˆุฌุฏ ููŠ ุงู„ุฌู‡ุฉ ุงู„ูŠู…ู†ู‰ ู…ุฑุจุน ุจุตุฑูŠ ูŠุญุชูˆูŠ ุนู„ู‰ ูƒูˆุฏ ุจู„ุบุฉ C ูŠุทุจู‚ ุฏุงู„ุฉ fibonacci ุจุทุฑูŠู‚ุฉ ุงู„ุงุณุชุฏุนุงุก ุงู„ุฐุงุชูŠ recursion.
1127
+ ุงู„ุชุตู…ูŠู… ุจุณูŠุท ุชุนู„ูŠู…ูŠุŒ ุจุนู†ูˆุงู† ูƒุจูŠุฑ ููŠ ุงู„ุฃุนู„ู‰ ูˆู†ุตูˆุต ุดุฑุญ ุนู„ู‰ ุงู„ูŠุณุงุฑ ูˆูƒูˆุฏ ุจุฑู…ุฌูŠ ู…ู†ุณู‚ ุนู„ู‰ ุงู„ูŠู…ูŠู†.
1128
+
1129
+
1130
+ ================================================================================
1131
+ PAGE 37 - page_0037.png
1132
+ ================================================================================
1133
+
1134
+ ------------TEXT EXTRACTED------------
1135
+ Fibonacci Numbers
1136
+
1137
+ Recursive Execution Tree for fibonacci(4)
1138
+
1139
+ 1.Initial Call: fibonacci(4)
1140
+ โ€ขSince 4 > 1, it calls fibonacci(3) + fibonacci(2).
1141
+
1142
+ 2.First Subtree: fibonacci(3)
1143
+
1144
+ โ€ข3 > 1 โ†’ Calls fibonacci(2) + fibonacci(1).
1145
+ โ€ขfibonacci(2) โ†’ Calls fibonacci(1) + fibonacci(0).
1146
+ โ€ขfibonacci(1) โ†’ Returns 1 (base case).
1147
+ โ€ขfibonacci(0) โ†’ Returns 0 (base case).
1148
+ โ€ขResult: 1 + 0 = 1.
1149
+ โ€ขfibonacci(1) โ†’ Returns 1.
1150
+ โ€ขResult: 1 (from fib(2)) + 1 (from fib(1)) = 2.
1151
+
1152
+ 3.Second Subtree: fibonacci(2)
1153
+ โ€ข2 > 1 โ†’ Calls fibonacci(1) + fibonacci(0).
1154
+
1155
+ โ€ขfibonacci(1) โ†’ Returns 1.
1156
+ โ€ขfibonacci(0) โ†’ Returns 0.
1157
+ โ€ขResult: 1 + 0 = 1.
1158
+
1159
+ 4.Final Sum:
1160
+ โ€ขfibonacci(4) = fibonacci(3) + fibonacci(2) = 2 + 1 = 3.
1161
+
1162
+ #include <stdio.h>
1163
+ int fibonacci(int n) {
1164
+ if (n <= 1) return n; // Base case
1165
+ return fibonacci(n - 1) + fibonacci(n - 2); // Binary recursive call
1166
+ }
1167
+
1168
+ int main() {
1169
+ int n = 4;
1170
+ printf("Fibonacci number at position %d is %d\n", n, fibonacci(n));
1171
+ return 0;
1172
+ }
1173
+
1174
+ ------------PAGE TALK ABOUT------------
1175
+ ุชุชุญุฏุซ ุงู„ุตูุญุฉ ุนู† ุดุฑุญ ุฃุนุฏุงุฏ ููŠุจูˆู†ุงุชุดูŠ ุจุงุณุชุฎุฏุงู… ุงู„ุงุณุชุฏุนุงุก ุงู„ุฐุงุชูŠ recursion ู„ุญุณุงุจ fibonacci(4).
1176
+ ุชูˆุถุญ ุฎุทูˆุงุช ุงู„ุชู†ููŠุฐ ุนู„ู‰ ุดูƒู„ ุดุฌุฑุฉ ุงุณุชุฏุนุงุก: ุชุจุฏุฃ ู…ู† fibonacci(4)ุŒ ุซู… ุชุชูุฑุน ุฅู„ู‰ fibonacci(3) ูˆ fibonacci(2)ุŒ ู…ุน ุงู„ูˆุตูˆู„ ุฅู„ู‰ ุญุงู„ุชูŠ ุงู„ุฃุณุงุณ fibonacci(1) ูˆ fibonacci(0).
1177
+ ูƒู…ุง ุชุนุฑุถ ูƒูˆุฏ ุจู„ุบุฉ C ูŠุนุฑู‘ู ุฏุงู„ุฉ fibonacci ูˆูŠุทุจุน ุงู„ู†ุงุชุฌ ุนู†ุฏ n = 4.
1178
+ ุจุตุฑูŠู‹ุงุŒ ุงู„ุตูุญุฉ ู…ู‚ุณูˆู…ุฉ ุฅู„ู‰ ู‚ุณู…ูŠู†: ุงู„ูŠุณุงุฑ ู„ู„ุดุฑุญ ุงู„ู†ุตูŠ ุงู„ู…ุชุณู„ุณู„ุŒ ูˆุงู„ูŠู…ูŠู† ู„ุนุฑุถ ุงู„ูƒูˆุฏ ุงู„ุจุฑู…ุฌูŠ ุจุฃู„ูˆุงู† ูุงุชุญุฉ.
1179
+
1180
+
1181
+ ================================================================================
1182
+ PAGE 38 - page_0038.png
1183
+ ================================================================================
1184
+
1185
+ ------------TEXT EXTRACTED------------
1186
+ Fibonacci Numbers
1187
+
1188
+ #include <stdio.h>
1189
+
1190
+ int fibonacci(int n) {
1191
+ if (n <= 1) return n; // Base case
1192
+ return fibonacci(n - 1) + fibonacci(n - 2); // Binary recursive call
1193
+ }
1194
+
1195
+ int main() {
1196
+ int n = 4;
1197
+ printf("Fibonacci number at position %d is %d\n", n, fibonacci(n));
1198
+ return 0;
1199
+ }
1200
+
1201
+ Visualization of Recursive Calls
1202
+
1203
+ fib(4)
1204
+ = fib(3) + fib(2)
1205
+ = [fib(2) + fib(1)] + [fib(1) + fib(0)]
1206
+ = [ (fib(1) + fib(0)) + 1 ] + [1 + 0]
1207
+ = [ (1 + 0) + 1 ] + 1
1208
+ = 2 + 1
1209
+ = 3
1210
+
1211
+ ------------PAGE TALK ABOUT------------
1212
+ ุงู„ุตูุญุฉ ุชุดุฑุญ ุฃุฑู‚ุงู… ููŠุจูˆู†ุงุชุดูŠ ุจุงุณุชุฎุฏุงู… ุงู„ุจุฑู…ุฌุฉ ุงู„ุชูƒุฑุงุฑูŠุฉ ุงู„ุงุณุชุฏุนุงุฆูŠุฉ (Recursion) ุจู„ุบุฉ C.
1213
+ ุชุญุชูˆูŠ ุนู„ู‰ ุฏุงู„ุฉ `fibonacci(n)` ู…ุน ุญุงู„ุฉ ุฃุณุงุณูŠุฉ ุนู†ุฏู…ุง ูŠูƒูˆู† `n <= 1`ุŒ ุซู… ุชุณุชุฏุนูŠ ู†ูุณู‡ุง ู…ุฑุชูŠู† ู„ุญุณุงุจ `fibonacci(n-1)` ูˆ`fibonacci(n-2)`.
1214
+ ูŠูˆุฌุฏ ู…ุซุงู„ ููŠ `main` ุญูŠุซ `n = 4` ูˆูŠุชู… ุทุจุงุนุฉ ุงู„ู†ุงุชุฌุŒ ูˆุงู„ู†ุชูŠุฌุฉ ุงู„ู†ู‡ุงุฆูŠุฉ ู‡ูŠ `3`.
1215
+ ูƒู…ุง ุชุนุฑุถ ุงู„ุตูุญุฉ ุชุตูˆุฑู‹ุง ู†ุตูŠู‹ุง ู„ุชุณู„ุณู„ ุงู„ุงุณุชุฏุนุงุกุงุช ุงู„ุชูƒุฑุงุฑูŠุฉ ู„ู€ `fib(4)` ุฎุทูˆุฉ ุจุฎุทูˆุฉ ุญุชู‰ ุงู„ูˆุตูˆู„ ุฅู„ู‰ ุงู„ู‚ูŠู… ุงู„ุฃุณุงุณูŠุฉ `fib(1)` ูˆ`fib(0)`.
1216
+
1217
+
1218
+ ================================================================================
1219
+ PAGE 39 - page_0039.png
1220
+ ================================================================================
1221
+
1222
+ ------------TEXT EXTRACTED------------
1223
+ Types of Recursion
1224
+
1225
+ โ€ข Linear Recursion:
1226
+ โ€ข The function makes a single call to itself.
1227
+ โ€ข Example: Factorial calculation.
1228
+
1229
+ โ€ข Tail Recursion:
1230
+ โ€ข The recursive call is the last operation in the function.
1231
+ โ€ข Example: GCD calculation.
1232
+
1233
+ โ€ข Binary Recursion:
1234
+ โ€ข The function makes two recursive calls.
1235
+ โ€ข Example: Fibonacci sequence.
1236
+
1237
+ โ€ข Mutual Recursion:
1238
+ โ€ข Two or more functions call each other.
1239
+ โ€ข Example: Determining if a number is even or odd.
1240
+
1241
+ ------------PAGE TALK ABOUT------------
1242
+ ุชุชุญุฏุซ ุงู„ุตูุญุฉ ุนู† ุฃู†ูˆุงุน ุงู„ุงุณุชุฏุนุงุก ุงู„ุฐุงุชูŠ (Recursion) ููŠ ุงู„ุจุฑู…ุฌุฉ.
1243
+ ุชูˆุถุญ ุฃุฑุจุนุฉ ุฃู†ูˆุงุน ุฑุฆูŠุณูŠุฉ: ุงู„ุงุณุชุฏุนุงุก ุงู„ุฎุทูŠุŒ ูˆุงู„ุฐู‘ูŠู„ูŠุŒ ูˆุงู„ุซู†ุงุฆูŠุŒ ูˆุงู„ู…ุชุจุงุฏู„ุŒ ู…ุน ุชุนุฑูŠู ู…ุฎุชุตุฑ ู„ูƒู„ ู†ูˆุน.
1244
+ ูƒู…ุง ุชุนุฑุถ ุฃู…ุซู„ุฉ ุชุทุจูŠู‚ูŠุฉ ู…ุซู„ ุญุณุงุจ ุงู„ู…ุถุฑูˆุจุŒ ุงู„ู‚ุงุณู… ุงู„ู…ุดุชุฑูƒ ุงู„ุฃูƒุจุฑุŒ ูˆู…ุชุชุงู„ูŠุฉ ููŠุจูˆู†ุงุชุดูŠุŒ ูˆุชุญุฏูŠุฏ ุงู„ุฒูˆุฌูŠ ุฃูˆ ุงู„ูุฑุฏูŠ.
1245
+ ุงู„ุนู†ุตุฑ ุงู„ุจุตุฑูŠ ุนุจุงุฑุฉ ุนู† ุดุฑูŠุญุฉ ุชุนู„ูŠู…ูŠุฉ ุจุณูŠุทุฉ ุจุฎู„ููŠุฉ ุจูŠุถุงุก ูˆู†ุตูˆุต ูƒุจูŠุฑุฉ ูˆุนู†ุงูˆูŠู† ู†ู‚ุทูŠุฉ ุฏูˆู† ุตูˆุฑ ุฃูˆ ู…ุฎุทุทุงุช.
1246
+
1247
+
1248
+ ================================================================================
1249
+ PAGE 40 - page_0040.png
1250
+ ================================================================================
1251
+
1252
+ ------------TEXT EXTRACTED------------
1253
+ Stack Overheads in Recursion
1254
+
1255
+ What are Stack Overheads?
1256
+
1257
+ โ€ข Each recursive call consumes stack space.
1258
+ โ€ข Excessive recursion can lead to stack overflow.
1259
+
1260
+ Example:
1261
+
1262
+ #include <stdio.h>
1263
+
1264
+ void recursiveFunction(int n) {
1265
+ if (n == 0)
1266
+ return;
1267
+ printf("Depth: %d\n", n);
1268
+ recursiveFunction(n - 1);
1269
+ }
1270
+
1271
+ int main() {
1272
+ recursiveFunction(5);
1273
+ return 0;
1274
+ }
1275
+
1276
+ Explanation:
1277
+
1278
+ โ€ข Each call to recursiveFunction adds a new stack frame.
1279
+ โ€ข The stack grows with each recursive call.
1280
+
1281
+ ------------PAGE TALK ABOUT------------
1282
+ ุชุชุญุฏุซ ุงู„ุตูุญุฉ ุนู† ุงู„ุญู…ู„ ุงู„ุฒุงุฆุฏ ุนู„ู‰ ุงู„ู…ูƒุฏุณ ุนู†ุฏ ุงุณุชุฎุฏุงู… ุงู„ุงุณุชุฏุนุงุก ุงู„ุฐุงุชูŠ (Recursion)ุŒ ูˆุฃู† ูƒู„ ุงุณุชุฏุนุงุก ุฌุฏูŠุฏ ูŠุณุชู‡ู„ูƒ ู…ุณุงุญุฉ ู…ู† ุงู„ุฐุงูƒุฑุฉ.
1283
+ ุชูˆุถุญ ุฃู† ุงู„ุชูƒุฑุงุฑ ุงู„ุนู…ูŠู‚ ุฃูˆ ุงู„ู…ูุฑุท ู‚ุฏ ูŠุคุฏูŠ ุฅู„ู‰ ุญุฏูˆุซ Stack Overflow.
1284
+ ูŠูˆุฌุฏ ู…ุซุงู„ ุจุฑู…ุฌูŠ ุจู„ุบุฉ C ู„ุฏุงู„ุฉ recursiveFunction ุชุณุชุฏุนูŠ ู†ูุณู‡ุง ุญุชู‰ ุชุตู„ ุฅู„ู‰ n == 0.
1285
+ ูƒู…ุง ุชุนุฑุถ ุงู„ุตูุญุฉ ุดุฑุญู‹ุง ุฌุงู†ุจูŠู‹ุง ูŠุจูŠู† ุฃู† ูƒู„ ุงุณุชุฏุนุงุก ูŠุถูŠู stack frame ุฌุฏูŠุฏู‹ุงุŒ ู…ุน ุชุตู…ูŠู… ุชุนู„ูŠู…ูŠ ุจุณูŠุท ูŠุญุชูˆูŠ ุนู„ู‰ ุนู†ูˆุงู† ูƒุจูŠุฑ ูˆูƒูˆุฏ ุฏุงุฎู„ ุตู†ุฏูˆู‚ ูุงุชุญ ุงู„ู„ูˆู†.
1286
+
1287
+
1288
+ ================================================================================
1289
+ PAGE 41 - page_0041.png
1290
+ ================================================================================
1291
+
1292
+ ------------TEXT EXTRACTED------------
1293
+ Key Points to Remember
1294
+
1295
+ 1. Functions provide modularity and reusability.
1296
+
1297
+ 2. Parameters can be passed by value or by reference.
1298
+
1299
+ 3. Recursion is a powerful technique but can lead to stack overheads.
1300
+
1301
+ 4. Tail recursion can be optimized by the compiler.
1302
+
1303
+ ------------PAGE TALK ABOUT------------
1304
+ ุชุชุญุฏุซ ุงู„ุตูุญุฉ ุนู† ุฃู‡ู… ุงู„ู†ู‚ุงุท ุงู„ุชูŠ ูŠุฌุจ ุชุฐูƒุฑู‡ุง ููŠ ุงู„ุจุฑู…ุฌุฉุŒ ุฎุงุตุฉ ู…ุง ูŠุชุนู„ู‚ ุจุงู„ุฏูˆุงู„ ูˆุชู…ุฑูŠุฑ ุงู„ู…ุนุงู…ู„ุงุช ูˆุงู„ุงุณุชุฏุนุงุก ุงู„ุฐุงุชูŠ.
1305
+ ุชูˆุถุญ ุฃู† ุงู„ุฏูˆุงู„ ุชุณุงุนุฏ ุนู„ู‰ ุชู†ุธูŠู… ุงู„ูƒูˆุฏ ูˆุฅุนุงุฏุฉ ุงุณุชุฎุฏุงู…ู‡ุŒ ูˆุฃู† ุงู„ู…ุนุงู…ู„ุงุช ูŠู…ูƒู† ุชู…ุฑูŠุฑู‡ุง ุจุงู„ู‚ูŠู…ุฉ ุฃูˆ ุจุงู„ู…ุฑุฌุน.
1306
+ ูƒู…ุง ุชุดูŠุฑ ุฅู„ู‰ ุฃู† recursion ุชู‚ู†ูŠุฉ ู‚ูˆูŠุฉ ู„ูƒู†ู‡ุง ู‚ุฏ ุชุณุจุจ ุงุณุชู‡ู„ุงูƒู‹ุง ุฅุถุงููŠู‹ุง ู„ู„ู€ stack.
1307
+ ูˆุชุฐูƒุฑ ุฃูŠุถู‹ุง ุฃู† tail recursion ู‚ุฏ ูŠุชู… ุชุญุณูŠู†ู‡ ุจูˆุงุณุทุฉ ุงู„ู…ุชุฑุฌู….
1308
+ ุงู„ุชุตู…ูŠู… ุจุตุฑูŠู‹ุง ุจุณูŠุท ุฌุฏู‹ุง: ุนู†ูˆุงู† ูƒุจูŠุฑ ููŠ ุงู„ุฃุนู„ู‰ ู…ุน ู‚ุงุฆู…ุฉ ู…ุฑู‚ู…ุฉ ุนู„ู‰ ุฎู„ููŠุฉ ุจูŠุถุงุก ุฏูˆู† ุตูˆุฑ ุฃูˆ ู…ุฎุทุทุงุช.
1309
+
1310
+
1311
+ ================================================================================
1312
+ PAGE 42 - page_0042.png
1313
+ ================================================================================
1314
+
1315
+ ------------TEXT EXTRACTED------------
1316
+ Exercises
1317
+
1318
+ 1. Write a recursive function to calculate the sum of digits of a number.
1319
+ 2. Write a program to GCD Calculation Using Recursion
1320
+ 3. Write a recursive function to calculate the power of a number.
1321
+ 4. Write two mutually recursive functions to determine if a number is a multiple of 3 or 5
1322
+
1323
+ ------------PAGE TALK ABOUT------------
1324
+ ุงู„ุตูุญุฉ ุชุนุฑุถ ุดุฑูŠุญุฉ ุจุนู†ูˆุงู† "Exercises" ุชุญุชูˆูŠ ุนู„ู‰ ุฃุฑุจุนุฉ ุชู…ุงุฑูŠู† ุนู† ุงู„ุงุณุชุฏุนุงุก ุงู„ุฐุงุชูŠ (Recursion).
1325
+ ุงู„ุชู…ุงุฑูŠู† ุชุดู…ู„: ุญุณุงุจ ู…ุฌู…ูˆุน ุฃุฑู‚ุงู… ุนุฏุฏุŒ ุฅูŠุฌุงุฏ ุงู„ู‚ุงุณู… ุงู„ู…ุดุชุฑูƒ ุงู„ุฃูƒุจุฑ GCD ุจุงุณุชุฎุฏุงู… recursionุŒ ูˆุญุณุงุจ ู‚ูˆุฉ ุนุฏุฏ.
1326
+ ูƒู…ุง ุชุชุถู…ู† ุชู…ุฑูŠู†ู‹ุง ุนู† ุงู„ุฏูˆุงู„ ุฐุงุช ุงู„ุงุณุชุฏุนุงุก ุงู„ู…ุชุจุงุฏู„ ู„ุชุญุฏูŠุฏ ู…ุง ุฅุฐุง ูƒุงู† ุงู„ุนุฏุฏ ู…ู† ู…ุถุงุนูุงุช 3 ุฃูˆ 5.
1327
+ ุงู„ุชุตู…ูŠู… ุจุณูŠุท ุฌุฏู‹ุง: ุฎู„ููŠุฉ ุจูŠุถุงุกุŒ ุนู†ูˆุงู† ูƒุจูŠุฑ ููŠ ุงู„ุฃุนู„ู‰ุŒ ูˆู‚ุงุฆู…ุฉ ู…ุฑู‚ู…ุฉ ุจุฏูˆู† ุตูˆุฑ ุฃูˆ ู…ุฎุทุทุงุช.
1328
+
1329
+
1330
+ ================================================================================
1331
+ PAGE 43 - page_0043.png
1332
+ ================================================================================
1333
+
1334
+ ------------TEXT EXTRACTED------------
1335
+ Solutions
1336
+
1337
+ ------------PAGE TALK ABOUT------------
1338
+ ู‡ุฐู‡ ุงู„ุตูุญุฉ ุนุจุงุฑุฉ ุนู† ุดุฑูŠุญุฉ ุนู†ูˆุงู† ุจุณูŠุทุฉ ุชุดูŠุฑ ุฅู„ู‰ ู‚ุณู… **ุงู„ุญู„ูˆู„**.
1339
+ ู„ุง ุชุญุชูˆูŠ ุนู„ู‰ ุฃูŠ ุดุฑุญ ุฅุถุงููŠ ุฃูˆ ู…ุนุงุฏู„ุงุช ุฃูˆ ุนู†ุงุตุฑ ุชุนู„ูŠู…ูŠุฉ ุฃุฎุฑู‰.
1340
+ ุงู„ุฎู„ููŠุฉ ุจูŠุถุงุก ุจุงู„ูƒุงู…ู„ุŒ ูˆููŠ ุงู„ู…ู†ุชุตู ูƒู„ู…ุฉ **Solutions** ุจุฎุท ุฃุณูˆุฏ ูˆุงุถุญ.
1341
+ ู„ุง ุชูˆุฌุฏ ุตูˆุฑ ุฃูˆ ู…ุฎุทุทุงุช ุฃูˆ ุฑุณูˆู… ุจูŠุงู†ูŠุฉ ููŠ ุงู„ุตูุญุฉ.
1342
+
1343
+
1344
+ ================================================================================
1345
+ PAGE 44 - page_0044.png
1346
+ ================================================================================
1347
+
1348
+ ------------TEXT EXTRACTED------------
1349
+ Sum of Digits
1350
+
1351
+ #include <stdio.h>
1352
+
1353
+ int sumOfDigits(int n) {
1354
+ if (n == 0) return 0; // Base case
1355
+ return (n % 10) + sumOfDigits(n / 10); // Linear recursive call
1356
+ }
1357
+
1358
+ int main() {
1359
+ int n = 12345;
1360
+ printf("Sum of digits of %d is %d\n", n, sumOfDigits(n));
1361
+ return 0;
1362
+ }
1363
+
1364
+ ------------PAGE TALK ABOUT------------
1365
+ ุชุชุญุฏุซ ุงู„ุตูุญุฉ ุนู† ุจุฑู†ุงู…ุฌ ุจู„ุบุฉ C ู„ุญุณุงุจ ู…ุฌู…ูˆุน ุฃุฑู‚ุงู… ุนุฏุฏ ุตุญูŠุญ ุจุงุณุชุฎุฏุงู… ุงู„ุงุณุชุฏุนุงุก ุงู„ุฐุงุชูŠ (Recursion).
1366
+ ุชูˆุถุญ ุงู„ุฏุงู„ุฉ `sumOfDigits` ุญุงู„ุฉ ุงู„ุชูˆู‚ู ุนู†ุฏู…ุง ุชุตุจุญ ุงู„ู‚ูŠู…ุฉ 0ุŒ ุซู… ุชุฌู…ุน ุขุฎุฑ ุฑู‚ู… `n % 10` ู…ุน ู†ุงุชุฌ ุงุณุชุฏุนุงุก ุงู„ุฏุงู„ุฉ ุนู„ู‰ `n / 10`.
1367
+ ูŠูˆุฌุฏ ุฃูŠุถู‹ุง ู…ุซุงู„ ููŠ `main` ูŠุณุชุฎุฏู… ุงู„ุนุฏุฏ 12345 ูˆูŠุทุจุน ู…ุฌู…ูˆุน ุฃุฑู‚ุงู…ู‡.
1368
+ ุงู„ุนู†ุตุฑ ุงู„ุจุตุฑูŠ ุนุจุงุฑุฉ ุนู† ุตูุญุฉ ุจุณูŠุทุฉ ุชุญุชูˆูŠ ุนู„ู‰ ุนู†ูˆุงู† "Sum of Digits" ูˆูƒูˆุฏ ุจุฑู…ุฌูŠ ูู‚ุท ุฏูˆู† ุตูˆุฑ ุฃูˆ ู…ุฎุทุทุงุช.
1369
+
1370
+
1371
+ ================================================================================
1372
+ PAGE 45 - page_0045.png
1373
+ ================================================================================
1374
+
1375
+ ------------TEXT EXTRACTED------------
1376
+ Recursive Function for GCD
1377
+
1378
+ #include <stdio.h>
1379
+
1380
+ int gcd(int a, int b) {
1381
+ if (b == 0) return a; // Base case
1382
+ return gcd(b, a % b); // Recursive call
1383
+ }
1384
+
1385
+ int main() {
1386
+ int a = 56, b = 98;
1387
+ printf("GCD of %d and %d is %d\n", a, b, gcd(a, b));
1388
+ return 0;
1389
+ }
1390
+
1391
+ Step-by-Step Execution
1392
+
1393
+ โ€ข Input: a = 56, b = 98
1394
+
1395
+ โ€ข Step 1: gcd(56, 98)
1396
+ โ€ข b โ‰  0, so call gcd(98, 56 % 98) โ†’ gcd(98, 56)
1397
+
1398
+ โ€ข Step 2: gcd(98, 56)
1399
+ โ€ข b โ‰  0, so call gcd(56, 98 % 56) โ†’ gcd(56, 42)
1400
+
1401
+ โ€ข Step 3: gcd(56, 42)
1402
+ โ€ข b โ‰  0, so call gcd(42, 56 % 42) โ†’ gcd(42, 14)
1403
+
1404
+ โ€ข Step 4: gcd(42, 14)
1405
+ โ€ข b โ‰  0, so call gcd(14, 42 % 14) โ†’ gcd(14, 0)
1406
+
1407
+ โ€ข Step 5: gcd(14, 0)
1408
+ โ€ข b == 0, so return 14 (base case).
1409
+
1410
+ โ€ข Final Result: 14
1411
+
1412
+ ------------PAGE TALK ABOUT------------
1413
+ ุชุดุฑุญ ุงู„ุตูุญุฉ ุฏุงู„ุฉ้€’ๅฝ’ ููŠ ู„ุบุฉ C ู„ุฅูŠุฌุงุฏ ุงู„ู‚ุงุณู… ุงู„ู…ุดุชุฑูƒ ุงู„ุฃูƒุจุฑ (GCD) ุจุงุณุชุฎุฏุงู… ุฎูˆุงุฑุฒู…ูŠุฉ ุฅู‚ู„ูŠุฏุณ.
1414
+ ุชุญุชูˆูŠ ุนู„ู‰ ูƒูˆุฏ ูƒุงู…ู„ ููŠู‡ ุฏุงู„ุฉ `gcd` ู…ุน ุญุงู„ุฉ ุฃุณุงุณูŠุฉ ุนู†ุฏู…ุง `b == 0`ุŒ ุซู… ุงุณุชุฏุนุงุก้€’ๅฝ’ ุจุงุณุชุฎุฏุงู… `gcd(b, a % b)`.
1415
+ ูƒู…ุง ุชุนุฑุถ ุชู†ููŠุฐู‹ุง ุฎุทูˆุฉ ุจุฎุทูˆุฉ ู„ู„ู…ุฏุฎู„ูŠู† 56 ูˆ98 ุญุชู‰ ุงู„ูˆุตูˆู„ ุฅู„ู‰ ุงู„ู†ุงุชุฌ ุงู„ู†ู‡ุงุฆูŠ 14.
1416
+ ุงู„ุชุตู…ูŠู… ู…ู‚ุณูˆู… ุจุตุฑูŠู‹ุง ุฅู„ู‰ ู‚ุณู…ูŠู†: ุงู„ูƒูˆุฏ ุงู„ุจุฑู…ุฌูŠ ุนู„ู‰ ุงู„ูŠุณุงุฑุŒ ูˆุดุฑุญ ุงู„ุชุชุจุน ุงู„ู…ุฑุญู„ูŠ ุจุงู„ู†ู‚ุงุท ุนู„ู‰ ุงู„ูŠู…ูŠู†.
1417
+
1418
+
1419
+ ================================================================================
1420
+ PAGE 46 - page_0046.png
1421
+ ================================================================================
1422
+
1423
+ ------------TEXT EXTRACTED------------
1424
+ Power Calculation
1425
+
1426
+ #include <stdio.h>
1427
+
1428
+ int power(int x, int n) {
1429
+ if (n == 0) return 1; // Base case
1430
+ return x * power(x, n - 1); // Binary recursive call
1431
+ }
1432
+
1433
+ int main() {
1434
+ int x = 2, n = 5;
1435
+ printf("%d^%d is %d\n", x, n, power(x, n));
1436
+ return 0;
1437
+ }
1438
+
1439
+ ------------PAGE TALK ABOUT------------
1440
+ ุชุชุญุฏุซ ุงู„ุตูุญุฉ ุนู† ุจุฑู†ุงู…ุฌ ุจู„ุบุฉ C ู„ุญุณุงุจ ุงู„ู‚ูˆุฉ \(x^n\) ุจุงุณุชุฎุฏุงู… ุงู„ุงุณุชุฏุนุงุก ุงู„ุฐุงุชูŠ (Recursion).
1441
+ ุชูˆุถุญ ุงู„ุฏุงู„ุฉ `power` ุญุงู„ุฉ ุงู„ุฃุณุงุณ ุนู†ุฏู…ุง ุชูƒูˆู† `n == 0` ูุชุฑุฌุน 1ุŒ ุซู… ุชุณุชุฏุนูŠ ู†ูุณู‡ุง ู„ุชู‚ู„ูŠู„ ู‚ูŠู…ุฉ `n` ุชุฏุฑูŠุฌูŠู‹ุง.
1442
+ ููŠ ุงู„ุฏุงู„ุฉ `main` ุชู… ุงุณุชุฎุฏุงู… ุงู„ู‚ูŠู… `x = 2` ูˆ `n = 5` ุซู… ุทุจุงุนุฉ ุงู„ู†ุงุชุฌ.
1443
+ ุงู„ุนู†ุตุฑ ุงู„ุจุตุฑูŠ ุงู„ูˆุญูŠุฏ ู‡ูˆ ุนู†ูˆุงู† "Power Calculation" ู…ุน ุชู†ุณูŠู‚ ู†ุตูŠ ุจุณูŠุท ู„ุนุฑุถ ุงู„ูƒูˆุฏ ุจุฏูˆู† ุฃูŠ ุตูˆุฑ ุฃูˆ ู…ุฎุทุทุงุช.
1444
+
1445
+
1446
+ ================================================================================
1447
+ PAGE 47 - page_0047.png
1448
+ ================================================================================
1449
+
1450
+ ------------TEXT EXTRACTED------------
1451
+ #include <stdio.h>
1452
+ int isMultipleOf3(int n);
1453
+ int isMultipleOf5(int n);
1454
+ int isMultipleOf3(int n) {
1455
+ if (n == 0) return 1; // Base case
1456
+ if (n < 0) return 0;
1457
+ return isMultipleOf5(n - 3); // Mutual recursive call
1458
+ }
1459
+ int isMultipleOf5(int n) {
1460
+ if (n == 0) return 1; // Base case
1461
+ if (n < 0) return 0;
1462
+ return isMultipleOf3(n - 5); // Mutual recursive call
1463
+ }
1464
+ int main() {
1465
+ int n = 15;
1466
+ if (isMultipleOf3(n)) {
1467
+ printf("%d is a multiple of 3\n", n);
1468
+ } else if (isMultipleOf5(n)) {
1469
+ printf("%d is a multiple of 5\n", n);
1470
+ } else {
1471
+ printf("%d is not a multiple of 3 or 5\n", n);
1472
+ }
1473
+
1474
+ return 0;
1475
+ }
1476
+
1477
+ Multiple of 3 or 5
1478
+
1479
+ ------------PAGE TALK ABOUT------------
1480
+ ุชุชุญุฏุซ ุงู„ุตูุญุฉ ุนู† ุจุฑู†ุงู…ุฌ ุจู„ุบุฉ C ู„ู„ุชุญู‚ู‚ ู…ู…ุง ุฅุฐุง ูƒุงู† ุงู„ุนุฏุฏ ู…ู† ู…ุถุงุนูุงุช 3 ุฃูˆ 5 ุจุงุณุชุฎุฏุงู… ุงู„ุงุณุชุฏุนุงุก ุงู„ุชุนุงูˆุฏูŠ ุงู„ู…ุชุจุงุฏู„ ุจูŠู† ุฏุงู„ุชูŠู†.
1481
+ ุชูˆุถุญ ุงู„ุฏุงู„ุชุงู† isMultipleOf3 ูˆ isMultipleOf5 ุญุงู„ุงุช ุงู„ุชูˆู‚ู ุนู†ุฏู…ุง ูŠุตุจุญ ุงู„ุนุฏุฏ 0 ุฃูˆ ุฃู‚ู„ ู…ู† 0ุŒ ุซู… ุชุณุชุฏุนูŠ ูƒู„ ุฏุงู„ุฉ ุงู„ุฃุฎุฑู‰ ุจุนุฏ ุทุฑุญ 3 ุฃูˆ 5.
1482
+ ููŠ ุงู„ุฏุงู„ุฉ main ูŠุชู… ุงุฎุชุจุงุฑ ุงู„ุนุฏุฏ 15 ูˆุทุจุงุนุฉ ู…ุง ุฅุฐุง ูƒุงู† ู…ู† ู…ุถุงุนูุงุช 3 ุฃูˆ 5 ุฃูˆ ู„ูŠุณ ูƒุฐู„ูƒ.
1483
+ ูŠูˆุฌุฏ ุนู†ุตุฑ ุจุตุฑูŠ ุจุณูŠุท ุนู„ู‰ ูŠู…ูŠู† ุงู„ุตูุญุฉ ุนุจุงุฑุฉ ุนู† ุนู†ูˆุงู† ู†ุตูŠ: "Multiple of 3 or 5" ุจุฏูˆู† ู…ุฎุทุทุงุช ุฃูˆ ุตูˆุฑ ุฅุถุงููŠุฉ.
data_structure/p4.txt ADDED
@@ -0,0 +1,559 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ "ุฃู†ุช ู…ุฏุฑุณ ุฎุจูŠุฑ ูˆู…ุญุชุฑู ููŠ ู…ุงุฏุฉ ุชุฑุงูƒูŠุจ ุจูŠุงู†ุงุช. ุฃู†ุช ุชุฏุฑู‘ุณ ุทุงู„ุจุงู‹ ูˆุชุณุงุนุฏู‡ ุนู„ู‰ ุงู„ูู‡ู….
2
+
3
+ === ู…ุญุชูˆู‰ ุงู„ูุตู„ (ุงู„ู…ุฑุฌุน ุงู„ุนู„ู…ูŠ) ===
4
+
5
+ === ู†ู‡ุงูŠุฉ ุงู„ุณูŠุงู‚ ===
6
+
7
+ **ุชุนู„ูŠู…ุงุช ู…ู‡ู…ุฉ:**
8
+ - ุงุณุชุฎุฏู… ุงู„ู…ุญุชูˆู‰ ุงู„ุนู„ู…ูŠ ุฃุนู„ุงู‡ ูƒู…ุฑุฌุน ุฃุณุงุณูŠ ู„ู„ุฅุฌุงุจุฉ
9
+ - ุฑุงุนู ุณูŠุงู‚ ุงู„ู…ุญุงุฏุซุฉ ุงู„ุณุงุจู‚ุฉ ูˆุงู„ู…ุณุชูˆู‰ ุงู„ุชุนู„ูŠู…ูŠ ู„ู„ุทุงู„ุจ
10
+ - ุฃุฌุจ ุจุดูƒู„ ูˆุงุถุญ ูˆู…ูุตู„ ุจุงู„ู„ุบุฉ ุงู„ุนุฑุจูŠุฉ
11
+ - ุงุณุชุฎุฏู… ุงู„ุฃู…ุซู„ุฉ ูˆุงู„ุชูˆุถูŠุญุงุช ุนู†ุฏ ุงู„ุญุงุฌุฉ
12
+ - ุฅุฐุง ุณุฃู„ ุงู„ุทุงู„ุจ ุนู† ุดูŠุก ุฎุงุฑุฌ ุงู„ู…ุญุชูˆู‰ ุงู„ู…ุชูˆูุฑุŒ ุฃุฎุจุฑู‡ ุจุฐู„ูƒ ุจู„ุทู
13
+
14
+
15
+ ================================================================================
16
+ SUBJECT: L4_Stack(part 1)_20260417_203612
17
+ TOTAL PAGES: 7
18
+ EXTRACTED ON: 2026-04-17 19:54:19
19
+ ================================================================================
20
+
21
+
22
+ ================================================================================
23
+ PAGE 1 - page_0001.png
24
+ ================================================================================
25
+
26
+ ------------TEXT EXTRACTED------------
27
+ ITGS 220
28
+ Dr. Amna Ali A Mohamedย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย Fall 2025
29
+
30
+ Stack
31
+
32
+ 1.ย ย STACK:
33
+
34
+ 1.1 Introduction to Stacks
35
+ A stack is a linear data structure that follows the Last-In-First-Out (LIFO) principle.
36
+ The last element added to the stack will be the first one to be removed.
37
+ Stacks are sometimes known as LIFO (last in, first out) lists.
38
+
39
+ Key Characteristics:
40
+ โ€ขย ย ย ย Ordered collection of elements
41
+ โ€ขย ย ย ย Two main operations:ย ย push (add) and pop (remove)
42
+ โ€ขย ย ย ย Access is restricted to the top element only
43
+ โ€ขย ย ย ย Fixed size when implemented using arrays
44
+
45
+ Ways to implement Stack
46
+ 1.ย ย Implement stack using Array
47
+ 2.ย ย Implement stack using LinkedList
48
+
49
+ 1.2 Operations on Stack and How to Implement:
50
+ The fundamental operations we'll implement:
51
+ 1.ย ย push() - Add an element to the top of the stack
52
+ 2.ย ย pop() - Remove the top element from the stack
53
+ 3.ย ย peek() - View the top element without removing it
54
+ 4.ย ย isEmpty() - Check if stack is empty
55
+ 5.ย ย isFull() - Check if stack is full
56
+ 6.ย ย display() - Display all elements in the stack
57
+
58
+ Push 1
59
+ Push 2
60
+ Push 3
61
+ Pop 3
62
+ 3
63
+ 2
64
+ 1
65
+ Stack
66
+ 1
67
+ Stack
68
+ 2
69
+ 1
70
+ Stack
71
+ Pop 1
72
+ Pop 2
73
+ peek 2
74
+ 2
75
+ 1
76
+ Stack
77
+ 1
78
+ Stack
79
+ Stack
80
+ Stack Operations
81
+
82
+ โ€œPushโ€ is the term used to insert an element into a stack. โ€œPopโ€ is the term used to delete an element from the stack.
83
+
84
+ 1
85
+
86
+ ------------PAGE TALK ABOUT------------
87
+ ุชุชุญุฏุซ ุงู„ุตูุญุฉ ุนู† ุจู†ูŠุฉ ุงู„ุจูŠุงู†ุงุช Stack ูˆู…ุจุฏุฃ ุนู…ู„ู‡ุง LIFOุŒ ุญูŠุซ ุขุฎุฑ ุนู†ุตุฑ ูŠุฏุฎู„ ู‡ูˆ ุฃูˆู„ ุนู†ุตุฑ ูŠุฎุฑุฌ.
88
+ ุชูˆุถุญ ุงู„ุฎุตุงุฆุต ุงู„ุฃุณุงุณูŠุฉ ู„ู„ู€ Stack ู…ุซู„ ุฃู† ุงู„ูˆุตูˆู„ ูŠูƒูˆู† ูู‚ุท ุฅู„ู‰ ุงู„ุนู†ุตุฑ ุงู„ุนู„ูˆูŠุŒ ูˆุฃู‡ู… ุงู„ุนู…ู„ูŠุงุช ู…ุซู„ push ูˆ pop ูˆ peek ูˆ isEmpty ูˆ isFull ูˆ display.
89
+ ูƒู…ุง ุชุฐูƒุฑ ุทุฑูŠู‚ุชูŠู† ู„ุชู†ููŠุฐ ุงู„ู€ Stack: ุจุงุณุชุฎุฏุงู… Array ุฃูˆ LinkedList.
90
+ ูŠูˆุฌุฏ ู…ุฎุทุท ุจุตุฑูŠ ูŠุดุฑุญ ุชุณู„ุณู„ ุงู„ุนู…ู„ูŠุงุช ุนู„ู‰ ุงู„ู…ูƒุฏุณ: ุฅุฏุฎุงู„ ุงู„ุนู†ุงุตุฑ 1 ุซู… 2 ุซู… 3ุŒ ุซู… ุญุฐู ุงู„ุนู†ุงุตุฑ ู…ู† ุงู„ุฃุนู„ู‰ุŒ ู…ุน ู…ุซุงู„ ุนู„ู‰ peek ู„ุฅุธู‡ุงุฑ ุงู„ุนู†ุตุฑ ุงู„ุนู„ูˆูŠ ุฏูˆู† ุญุฐูู‡.
91
+
92
+
93
+ ================================================================================
94
+ PAGE 2 - page_0002.png
95
+ ================================================================================
96
+
97
+ ------------TEXT EXTRACTED------------
98
+ All insertions and deletions take place at the same end, so the last element added to the stack will be the first element removed from the stack. When a stack is created, the stack base remains fixed while the stack top changes as elements are added and removed. The most accessible element is the top and the least accessible element is the bottom of the stack.
99
+
100
+ 1.3 Array Implementation
101
+
102
+ Let us consider a stack with 6 elements capacity. This is called as the size of the stack. The number of elements to be added should not exceed the maximum size of the stack. If we attempt to add new element beyond the maximum size, we will encounter a stack overflow condition. Similarly, you cannot remove elements beyond the base of the stack. If such is the case, we will reach a stack underflow condition.
103
+
104
+ When an element is added to a stack, the operation is performed by push(). Figure 1 shows the creation of a stack and addition of elements using push().
105
+
106
+ Top=-1
107
+ Empty
108
+ Stack
109
+
110
+ 4
111
+ 3
112
+ 2
113
+ 1
114
+ 0
115
+
116
+ Top
117
+ Insert
118
+ 11
119
+
120
+ 11
121
+
122
+ 4
123
+ 3
124
+ 2
125
+ 1
126
+ 0
127
+
128
+ Top
129
+ Insert
130
+ 22
131
+
132
+ 22
133
+ 11
134
+
135
+ 4
136
+ 3
137
+ 2
138
+ 1
139
+ 0
140
+
141
+ Top
142
+ Insert
143
+ 33
144
+
145
+ 33
146
+ 22
147
+ 11
148
+
149
+ 4
150
+ 3
151
+ 2
152
+ 1
153
+ 0
154
+
155
+ Figure 1. Push operations on stack
156
+
157
+ When an element is taken off from the stack, the operation is performed by pop(). Figure 2 shows a stack initially with three elements and shows the deletion of elements using pop().
158
+
159
+ TOP
160
+ Initial
161
+ Stack
162
+
163
+ 33
164
+ 22
165
+ 11
166
+
167
+ 4
168
+ 3
169
+ 2
170
+ 1
171
+ 0
172
+
173
+ TOP
174
+ POP 33
175
+
176
+ 22
177
+ 11
178
+
179
+ 4
180
+ 3
181
+ 2
182
+ 1
183
+ 0
184
+
185
+ TOP
186
+ POP 22
187
+
188
+ 11
189
+
190
+ 4
191
+ 3
192
+ 2
193
+ 1
194
+ 0
195
+
196
+ TOP
197
+
198
+ 4
199
+ 3
200
+ 2
201
+ 1
202
+ 0
203
+
204
+ Figure 2. Pop operations on stack
205
+
206
+ 2
207
+
208
+ ------------PAGE TALK ABOUT------------
209
+ ุชุชุญุฏุซ ุงู„ุตูุญุฉ ุนู† ุชู†ููŠุฐ ุจู†ูŠุฉ ุงู„ุจูŠุงู†ุงุช Stack ุจุงุณุชุฎุฏุงู… ุงู„ู…ุตููˆูุฉุŒ ูˆุชุดุฑุญ ู…ุจุฏุฃ LIFO ุญูŠุซ ุขุฎุฑ ุนู†ุตุฑ ูŠุฏุฎู„ ู‡ูˆ ุฃูˆู„ ุนู†ุตุฑ ูŠุฎุฑุฌ.
210
+ ูƒู…ุง ุชูˆุถุญ ู…ูู‡ูˆู…ูŠ stack overflow ุนู†ุฏ ู…ุญุงูˆู„ุฉ ุงู„ุฅุถุงูุฉ ุจุนุฏ ุงู„ุณุนุฉ ุงู„ู‚ุตูˆู‰ุŒ ูˆstack underflow ุนู†ุฏ ุงู„ุญุฐู ู…ู† ู…ูƒุฏุณ ูุงุฑุบ.
211
+ ูŠูˆุฌุฏ ุดูƒู„ุงู† ุชูˆุถูŠุญูŠุงู†: ุงู„ุฃูˆู„ ูŠุจูŠู† ุนู…ู„ูŠุงุช push ุจุฅุฏุฎุงู„ 11 ุซู… 22 ุซู… 33 ู…ุน ุชุญุฑูƒ ุงู„ู…ุคุดุฑ TopุŒ ูˆุงู„ุซุงู†ูŠ ูŠุจูŠู† ุนู…ู„ูŠุงุช pop ุจุฅุฒุงู„ุฉ 33 ุซู… 22 ุซู… ุงู„ูˆุตูˆู„ ุฅู„ู‰ ู…ูƒุฏุณ ูุงุฑุบ.
212
+ ุงู„ุฑุณูˆู…ุงุช ุชุนุฑุถ ุฎู„ุงูŠุง ุงู„ู…ูƒุฏุณ ุฑุฃุณูŠุงู‹ ู…ุน ุงู„ูู‡ุงุฑุณ ู…ู† 0 ุฅู„ู‰ 4 ูˆู…ูˆู‚ุน ุงู„ู…ุคุดุฑ Top ููŠ ูƒู„ ุฎุทูˆุฉ.
213
+
214
+
215
+ ================================================================================
216
+ PAGE 3 - page_0003.png
217
+ ================================================================================
218
+
219
+ ------------TEXT EXTRACTED------------
220
+ - **Structure Definition**
221
+
222
+ โ€ƒโ€ƒ#define MAX 10 // Maximum size of stack
223
+
224
+ โ€ƒโ€ƒstruct Stack {
225
+
226
+ โ€ƒโ€ƒโ€ƒโ€ƒint items[MAX]; // Array to store stack elements
227
+
228
+ โ€ƒโ€ƒโ€ƒโ€ƒint top; // Index of top element
229
+
230
+ โ€ƒโ€ƒ};
231
+
232
+ - **Initialization**
233
+
234
+ โ€ƒโ€ƒvoid initialize(struct Stack *s) {
235
+
236
+ โ€ƒโ€ƒโ€ƒโ€ƒs->top = -1; // -1 indicates empty stack
237
+
238
+ โ€ƒโ€ƒ}
239
+
240
+ - **Checking Stack Status**
241
+
242
+ โ€ƒโ€ƒint isEmpty(struct Stack *s) {
243
+
244
+ โ€ƒโ€ƒโ€ƒโ€ƒreturn (s->top == -1);
245
+
246
+ โ€ƒโ€ƒ}
247
+
248
+ โ€ƒโ€ƒint isFull(struct Stack *s) {
249
+
250
+ โ€ƒโ€ƒโ€ƒโ€ƒreturn (s->top == MAX - 1);
251
+
252
+ โ€ƒโ€ƒ}
253
+
254
+ - **Push Operation**
255
+
256
+ โ€ƒโ€ƒvoid push(struct Stack *s, int value) {
257
+
258
+ โ€ƒโ€ƒโ€ƒโ€ƒif (isFull(s)) {
259
+
260
+ โ€ƒโ€ƒโ€ƒโ€ƒโ€ƒโ€ƒprintf("Stack Overflow! Cannot push %d\n", value);
261
+
262
+ โ€ƒโ€ƒโ€ƒโ€ƒ} else {
263
+
264
+ โ€ƒโ€ƒโ€ƒโ€ƒโ€ƒโ€ƒs->top++;
265
+
266
+ โ€ƒโ€ƒโ€ƒโ€ƒโ€ƒโ€ƒs->items[s->top] = value;
267
+
268
+ โ€ƒโ€ƒโ€ƒโ€ƒโ€ƒโ€ƒprintf("%d pushed to stack\n", value);
269
+
270
+ โ€ƒโ€ƒโ€ƒโ€ƒ}
271
+
272
+ โ€ƒโ€ƒ}
273
+
274
+ - **Pop Operation**
275
+
276
+ โ€ƒโ€ƒint pop(struct Stack *s) {
277
+
278
+ โ€ƒโ€ƒโ€ƒโ€ƒif (isEmpty(s)) {
279
+
280
+ โ€ƒโ€ƒโ€ƒโ€ƒโ€ƒโ€ƒprintf("Stack Underflow! Cannot pop\n");
281
+
282
+ โ€ƒโ€ƒโ€ƒโ€ƒโ€ƒโ€ƒreturn -1; // Error value
283
+
284
+ โ€ƒโ€ƒโ€ƒโ€ƒ} else {
285
+
286
+ โ€ƒโ€ƒโ€ƒโ€ƒโ€ƒโ€ƒint value = s->items[s->top];
287
+
288
+ 3
289
+
290
+ ------------PAGE TALK ABOUT------------
291
+ ุชุชุญุฏุซ ุงู„ุตูุญุฉ ุนู† ุชู†ููŠุฐ ุจู†ูŠุฉ ุงู„ุจูŠุงู†ุงุช Stack ุจุงุณุชุฎุฏุงู… ู„ุบุฉ C ู…ู† ุฎู„ุงู„ ู…ุตููˆูุฉ ุซุงุจุชุฉ ุงู„ุญุฌู….
292
+ ุชุดุฑุญ ุชุนุฑูŠู ุงู„ู‡ูŠูƒู„ struct StackุŒ ูˆุชู‡ูŠุฆุฉ ุงู„ู…ูƒุฏุณุŒ ุซู… ุฏูˆุงู„ ุงู„ุชุญู‚ู‚ ู‡ู„ ุงู„ู…ูƒุฏุณ ูุงุฑุบ ุฃูˆ ู…ู…ุชู„ุฆ.
293
+ ูƒู…ุง ุชุนุฑุถ ุนู…ู„ูŠุฉ push ู„ุฅุถุงูุฉ ุนู†ุตุฑ ู…ุน ู…ุนุงู„ุฌุฉ ุญุงู„ุฉ overflowุŒ ูˆุนู…ู„ูŠุฉ pop ู„ุฅุฒุงู„ุฉ ุนู†ุตุฑ ู…ุน ู…ุนุงู„ุฌุฉ underflow.
294
+ ุงู„ุตูุญุฉ ุนุจุงุฑุฉ ุนู† ู†ุต ุจุฑู…ุฌูŠ ู…ู†ุธู… ุจุนู†ุงูˆูŠู† ูุฑุนูŠุฉ ูˆู†ู‚ุงุทุŒ ูˆู„ุง ุชุญุชูˆูŠ ุนู„ู‰ ุตูˆุฑ ุฃูˆ ู…ุฎุทุทุงุชุŒ ูู‚ุท ุฑู‚ู… ุงู„ุตูุญุฉ 3 ููŠ ุงู„ุฃุณูู„.
295
+
296
+
297
+ ================================================================================
298
+ PAGE 4 - page_0004.png
299
+ ================================================================================
300
+
301
+ ------------TEXT EXTRACTED------------
302
+ s->top--;
303
+ return value;
304
+ }
305
+ }
306
+
307
+ - **Peek Operation**
308
+
309
+ &nbsp;&nbsp;&nbsp;&nbsp;int peek(struct Stack *s) {
310
+
311
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (isEmpty(s)) {
312
+
313
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("Stack is empty\n");
314
+
315
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return -1;
316
+
317
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else {
318
+
319
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return s->items[s->top];
320
+
321
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
322
+
323
+ &nbsp;&nbsp;&nbsp;&nbsp;}
324
+
325
+ - **Display Operation**
326
+
327
+ &nbsp;&nbsp;&nbsp;&nbsp;void display(struct Stack *s) {
328
+
329
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (isEmpty(s)) {
330
+
331
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("Stack is empty\n");
332
+
333
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else {
334
+
335
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("Stack elements:\n");
336
+
337
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (int i = s->top; i >= 0; i--) {
338
+
339
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("%d\n", s->items[i]);
340
+
341
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
342
+
343
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
344
+
345
+ &nbsp;&nbsp;&nbsp;&nbsp;}
346
+
347
+ **Key Points to Remember**
348
+
349
+ 1. **Stack Pointer (top):**
350
+ 1. Initialized to -1 (empty stack)
351
+ 2. Points to the current top element
352
+ 3. Incremented before push, decremented after pop
353
+
354
+ 2. **Stack Overflow:**
355
+ 1. Occurs when trying to push to a full stack (top == MAX-1)
356
+ 2. Prevented by checking isFull() before push
357
+
358
+ 3. **Stack Underflow:**
359
+
360
+ 4
361
+
362
+ ------------PAGE TALK ABOUT------------
363
+ ุชุชุญุฏุซ ุงู„ุตูุญุฉ ุนู† ุนู…ู„ูŠุงุช ุงู„ู…ูƒุฏุณ (Stack) ููŠ ู„ุบุฉ CุŒ ูˆุฎุตูˆุตู‹ุง ุนู…ู„ูŠุชูŠ **peek** ูˆ**display** ู…ุน ุฌุฒุก ุธุงู‡ุฑ ู…ู† ู†ู‡ุงูŠุฉ ุฏุงู„ุฉ **pop**.
364
+ ุชูˆุถุญ ุฏุงู„ุฉ **peek** ูƒูŠููŠุฉ ุฅุฑุฌุงุน ุงู„ุนู†ุตุฑ ุงู„ู…ูˆุฌูˆุฏ ุฃุนู„ู‰ ุงู„ู…ูƒุฏุณ ู…ุน ุงู„ุชุญู‚ู‚ ุฃูˆู„ู‹ุง ุฅุฐุง ูƒุงู† ุงู„ู…ูƒุฏุณ ูุงุฑุบู‹ุง.
365
+ ูƒู…ุง ุชุดุฑุญ ุฏุงู„ุฉ **display** ุทุฑูŠู‚ุฉ ุนุฑุถ ุฌู…ูŠุน ุนู†ุงุตุฑ ุงู„ู…ูƒุฏุณ ู…ู† ุงู„ุฃุนู„ู‰ ุฅู„ู‰ ุงู„ุฃุณูู„ ุจุงุณุชุฎุฏุงู… ุญู„ู‚ุฉ `for`.
366
+ ูˆููŠ ุงู„ุฃุณูู„ ุชูˆุฌุฏ ู†ู‚ุงุท ู…ู‡ู…ุฉ ุชู„ุฎุต ู…ูู‡ูˆู… ุงู„ู…ุคุดุฑ `top`ุŒ ูˆุญุงู„ุชูŠ **Stack Overflow** ูˆ**Stack Underflow**.
367
+ ู„ุง ุชูˆุฌุฏ ุตูˆุฑ ุฃูˆ ู…ุฎุทุทุงุชุŒ ูู‚ุท ู†ุตูˆุต ุชุนู„ูŠู…ูŠุฉ ูˆูƒูˆุฏ ุจุฑู…ุฌูŠ ู…ู†ุณู‚ ุนู„ู‰ ุดูƒู„ ู†ู‚ุงุท ูˆุนู†ุงูˆูŠู†.
368
+
369
+
370
+ ================================================================================
371
+ PAGE 5 - page_0005.png
372
+ ================================================================================
373
+
374
+ ------------TEXT EXTRACTED------------
375
+ 1. Occurs when trying to pop from an empty stack (top == -1)
376
+
377
+ 2. Prevented by checking isEmpty() before pop
378
+
379
+
380
+ 1.4 Source code for stack operations, using array:
381
+
382
+ #include <stdio.h>
383
+ #define MAX 10
384
+
385
+ struct Stack {
386
+ int items[MAX];
387
+ int top;
388
+ };
389
+
390
+ // Function prototypes
391
+ void initialize(struct Stack *s);
392
+ int isEmpty(struct Stack *s);
393
+ int isFull(struct Stack *s);
394
+ void push(struct Stack *s, int value);
395
+ int pop(struct Stack *s);
396
+ int peek(struct Stack *s);
397
+ void display(struct Stack *s);
398
+
399
+ int main() {
400
+ struct Stack myStack;
401
+ initialize(&myStack);
402
+ int choice, value;
403
+
404
+ while (1) {
405
+ printf("\nStack Operations:\n");
406
+ printf("1. Push\n");
407
+ printf("2. Pop\n");
408
+ printf("3. Peek\n");
409
+ printf("4. Display\n");
410
+ printf("5. Exit\n");
411
+ printf("Enter your choice: ");
412
+ scanf("%d", &choice);
413
+
414
+ switch (choice) {
415
+ case 1:
416
+ printf("Enter value to push: ");
417
+ scanf("%d", &value);
418
+ push(&myStack, value);
419
+ break;
420
+ case 2:
421
+ value = pop(&myStack);
422
+ if (value != -1) {
423
+ printf("Popped value: %d\n", value);
424
+ }
425
+ break;
426
+ case 3:
427
+ value = peek(&myStack);
428
+ if (value != -1) {
429
+ printf("Top element: %d\n", value);
430
+ }
431
+
432
+ break;
433
+ case
434
+
435
+ 5
436
+
437
+ ------------PAGE TALK ABOUT------------
438
+ ุชุชุญุฏุซ ุงู„ุตูุญุฉ ุนู† ุจู†ูŠุฉ ุงู„ุจูŠุงู†ุงุช Stack ุจุงุณุชุฎุฏุงู… ุงู„ู…ุตููˆูุฉ ููŠ ู„ุบุฉ CุŒ ู…ุน ุชูˆุถูŠุญ ุญุงู„ุฉ underflow ุนู†ุฏ ู…ุญุงูˆู„ุฉ ุชู†ููŠุฐ pop ุนู„ู‰ ู…ูƒุฏุณ ูุงุฑุบ ุนู†ุฏู…ุง ุชูƒูˆู† ู‚ูŠู…ุฉ top = -1.
439
+ ูƒู…ุง ุชุฐูƒุฑ ุฃู† ุชุฌู†ุจ ู‡ุฐู‡ ุงู„ู…ุดูƒู„ุฉ ูŠูƒูˆู† ุนุจุฑ ุงู„ุชุญู‚ู‚ ู…ู† isEmpty() ู‚ุจู„ ุชู†ููŠุฐ pop.
440
+ ุชุญุชูˆูŠ ุงู„ุตูุญุฉ ุนู„ู‰ ูƒูˆุฏ ู…ุตุฏุฑ ูŠุนุฑู‘ู struct Stack ูˆูŠุนุฑุถ ุฏูˆุงู„ ุฃุณุงุณูŠุฉ ู…ุซู„ initialize ูˆpush ูˆpop ูˆpeek ูˆdisplay.
441
+ ูŠูˆุฌุฏ ุฃูŠุถู‹ุง ุฌุฒุก ู…ู† ุจุฑู†ุงู…ุฌ main ูŠุนุฑุถ ู‚ุงุฆู…ุฉ ุชูุงุนู„ูŠุฉ ู„ู„ู…ุณุชุฎุฏู… ู„ุชู†ููŠุฐ ุนู…ู„ูŠุงุช ุงู„ู…ูƒุฏุณ ู…ุซู„ ุงู„ุฅุถุงูุฉ ูˆุงู„ุญุฐู ูˆุนุฑุถ ุงู„ุนู†ุตุฑ ุงู„ุนู„ูˆูŠ.
442
+
443
+
444
+ ================================================================================
445
+ PAGE 6 - page_0006.png
446
+ ================================================================================
447
+
448
+ ------------TEXT EXTRACTED------------
449
+ }
450
+ break;
451
+ case 4:
452
+ display(&myStack);
453
+ break;
454
+ case 5:
455
+ return 0;
456
+ default:
457
+ printf("Invalid choice\n");
458
+ }
459
+ }
460
+ }
461
+
462
+ return 0;
463
+ }
464
+
465
+ void initialize(struct Stack *s) {
466
+ s->top = -1; // -1 indicates empty stack
467
+ }
468
+
469
+ int isEmpty(struct Stack *s) {
470
+ return (s->top == -1);
471
+ }
472
+
473
+ int isFull(struct Stack *s) {
474
+ return (s->top == MAX - 1);
475
+ }
476
+
477
+ void push(struct Stack *s, int value) {
478
+ if (isFull(s)) {
479
+ printf("Stack Overflow! Cannot push %d\n", value);
480
+ } else {
481
+ s->top++;
482
+ s->items[s->top] = value;
483
+ printf("%d pushed to stack\n", value);
484
+ }
485
+ }
486
+
487
+ int pop(struct Stack *s) {
488
+ if (isEmpty(s)) {
489
+ printf("Stack Underflow! Cannot pop\n");
490
+ return -1; // Error value
491
+ } else {
492
+ int value = s->items[s->top];
493
+ s->top--;
494
+ return value;
495
+ }
496
+ }
497
+
498
+ int peek(struct Stack *s) {
499
+ if (isEmpty(s)) {
500
+ printf("Stack is empty\n");
501
+ return -1;
502
+ } else {
503
+ return s->items[s->top];
504
+ }
505
+ }
506
+
507
+ void display(struct Stack *s) {
508
+
509
+ 6
510
+
511
+ ------------PAGE TALK ABOUT------------
512
+ ุชุชุญุฏุซ ุงู„ุตูุญุฉ ุนู† ุฌุฒุก ู…ู† ุจุฑู†ุงู…ุฌ ุจู„ุบุฉ C ู„ุชู†ููŠุฐ ุจู†ูŠุฉ ุงู„ุจูŠุงู†ุงุช Stack ุจุงุณุชุฎุฏุงู… ุงู„ู…ุตููˆูุฉ.
513
+ ุชูˆุถุญ ุฏูˆุงู„ ุฃุณุงุณูŠุฉ ู…ุซู„ initialize ูˆ isEmpty ูˆ isFull ูˆ push ูˆ pop ูˆ peekุŒ ู…ุน ุฌุฒุก ู…ู† ู‚ุงุฆู…ุฉ ุฎูŠุงุฑุงุช ุจุงุณุชุฎุฏุงู… switch-case.
514
+ ูƒู…ุง ุชุนุฑุถ ู…ุนุงู„ุฌุฉ ุญุงู„ุชูŠ overflow ูˆ underflow ุนู†ุฏ ุงู„ุฅุถุงูุฉ ุฃูˆ ุงู„ุญุฐู ู…ู† ุงู„ู…ูƒุฏุณ.
515
+ ู„ุง ุชูˆุฌุฏ ุตูˆุฑ ุฃูˆ ู…ุฎุทุทุงุชุŒ ูู‚ุท ูƒูˆุฏ ุจุฑู…ุฌูŠ ู…ู†ุณู‚ ูˆุฑู‚ู… ุงู„ุตูุญุฉ 6 ููŠ ุงู„ุฃุณูู„.
516
+
517
+
518
+ ================================================================================
519
+ PAGE 7 - page_0007.png
520
+ ================================================================================
521
+
522
+ ------------TEXT EXTRACTED------------
523
+ if (isEmpty(s)) {
524
+ printf("Stack is empty\n");
525
+ } else {
526
+ printf("Stack elements:\n");
527
+ for (int i = s->top; i >= 0; i--) {
528
+ printf("%d\n", s->items[i]);
529
+ }
530
+ }
531
+ }
532
+
533
+ 1.5 Applications of Stacks
534
+
535
+ Stacks are widely used in computer science for solving various problems. Some key applications include:
536
+
537
+ โ€ข Stack is used by compilers to check for balancing of parentheses, brackets and braces.
538
+ โ€ข Stack is used to evaluate a postfix expression.
539
+ โ€ข Stack is used to convert an infix expression into postfix/prefix form.
540
+ โ€ข In recursion, all intermediate arguments and return values are stored on the processorโ€™s stack.
541
+ โ€ข During a function call the return address and arguments are pushed onto a stack and on return they are popped off.
542
+
543
+ Expression Evaluation:
544
+ o Stacks are used to evaluate arithmetic expressions written in infix, prefix,
545
+ or postfix notation.
546
+ o Infix Notation: Operators are placed between operands (e.g., a + b).
547
+ o Postfix Notation: Operators follow operands (e.g., a b +).
548
+ o Prefix Notation: Operators precede operands (e.g., + a b).
549
+ 2. Infix to Postfix/Prefix Conversion:
550
+ o Stacks are used to convert infix expressions to postfix or prefix notation,
551
+ which are easier for computers to evaluate.
552
+
553
+ 7
554
+
555
+ ------------PAGE TALK ABOUT------------
556
+ ุชุชุญุฏุซ ุงู„ุตูุญุฉ ุนู† ุชุทุจูŠู‚ุงุช ุจู†ูŠุฉ ุงู„ุจูŠุงู†ุงุช Stack ููŠ ุนู„ูˆู… ุงู„ุญุงุณูˆุจุŒ ู…ุซู„ ูุญุต ุชูˆุงุฒู† ุงู„ุฃู‚ูˆุงุณุŒ ุชู‚ูŠูŠู… ุงู„ุชุนุจูŠุฑุงุชุŒ ูˆุชุญูˆูŠู„ ุงู„ุตูŠุบ ุจูŠู† infix ูˆpostfix ูˆprefix.
557
+ ูƒู…ุง ุชุดุฑุญ ุฏูˆุฑ ุงู„ู€ Stack ููŠ ุงู„ุงุณุชุฏุนุงุก ุงู„ุชุนุงูˆุฏูŠ recursion ูˆุงุณุชุฏุนุงุก ุงู„ุฏูˆุงู„ุŒ ุญูŠุซ ุชูุฎุฒู† ุงู„ุนู†ุงูˆูŠู† ูˆุงู„ูˆุณุงุฆุท ู…ุคู‚ุชู‹ุง ุซู… ุชูุฒุงู„ ุนู†ุฏ ุงู„ุนูˆุฏุฉ.
558
+ ูŠูˆุฌุฏ ููŠ ุฃุนู„ู‰ ุงู„ุตูุญุฉ ู…ู‚ุทุน ูƒูˆุฏ ุจู„ุบุฉ C ู„ุนุฑุถ ุนู†ุงุตุฑ ุงู„ู€ Stack ุฃูˆ ุทุจุงุนุฉ ุฑุณุงู„ุฉ ุฅุฐุง ูƒุงู† ูุงุฑุบู‹ุง.
559
+ ุงู„ุตูุญุฉ ู†ุตูŠุฉ ุจุงู„ูƒุงู…ู„ ุชู‚ุฑูŠุจู‹ุง ูˆู„ุง ุชุญุชูˆูŠ ุนู„ู‰ ุตูˆุฑ ุฃูˆ ู…ุฎุทุทุงุชุŒ ูู‚ุท ุนู†ุงูˆูŠู† ูˆู†ู‚ุงุท ุชุนุฏุงุฏ ูˆุฑู‚ู… ุงู„ุตูุญุฉ ููŠ ุงู„ุฃุณูู„.
data_structure/p5.txt ADDED
@@ -0,0 +1,1382 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ "ุฃู†ุช ู…ุฏุฑุณ ุฎุจูŠุฑ ูˆู…ุญุชุฑู ููŠ ู…ุงุฏุฉ ุชุฑุงูƒูŠุจ ุจูŠุงู†ุงุช. ุฃู†ุช ุชุฏุฑู‘ุณ ุทุงู„ุจุงู‹ ูˆุชุณุงุนุฏู‡ ุนู„ู‰ ุงู„ูู‡ู….
2
+
3
+ === ู…ุญุชูˆู‰ ุงู„ูุตู„ (ุงู„ู…ุฑุฌุน ุงู„ุนู„ู…ูŠ) ===
4
+
5
+ === ู†ู‡ุงูŠุฉ ุงู„ุณูŠุงู‚ ===
6
+
7
+ **ุชุนู„ูŠู…ุงุช ู…ู‡ู…ุฉ:**
8
+ - ุงุณุชุฎุฏู… ุงู„ู…ุญุชูˆู‰ ุงู„ุนู„ู…ูŠ ุฃุนู„ุงู‡ ูƒู…ุฑุฌุน ุฃุณุงุณูŠ ู„ู„ุฅุฌุงุจุฉ
9
+ - ุฑุงุนู ุณูŠุงู‚ ุงู„ู…ุญุงุฏุซุฉ ุงู„ุณุงุจู‚ุฉ ูˆุงู„ู…ุณุชูˆู‰ ุงู„ุชุนู„ูŠู…ูŠ ู„ู„ุทุงู„ุจ
10
+ - ุฃุฌุจ ุจุดูƒู„ ูˆุงุถุญ ูˆู…ูุตู„ ุจุงู„ู„ุบุฉ ุงู„ุนุฑุจูŠุฉ
11
+ - ุงุณุชุฎุฏู… ุงู„ุฃู…ุซู„ุฉ ูˆุงู„ุชูˆุถูŠุญุงุช ุนู†ุฏ ุงู„ุญุงุฌุฉ
12
+ - ุฅุฐุง ุณุฃู„ ุงู„ุทุงู„ุจ ุนู† ุดูŠุก ุฎุงุฑุฌ ุงู„ู…ุญุชูˆู‰ ุงู„ู…ุชูˆูุฑุŒ ุฃุฎุจุฑู‡ ุจุฐู„ูƒ ุจู„ุทู
13
+
14
+
15
+ ================================================================================
16
+ SUBJECT: L5_Stack(part 2)_20260417_203645
17
+ TOTAL PAGES: 21
18
+ EXTRACTED ON: 2026-04-17 19:55:32
19
+ ================================================================================
20
+
21
+
22
+ ================================================================================
23
+ PAGE 1 - page_0001.png
24
+ ================================================================================
25
+
26
+ ------------TEXT EXTRACTED------------
27
+ ITGS 220
28
+ Dr. Amna Ali A Mohamedย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย Fall 2025
29
+
30
+ Stack
31
+
32
+ **1.3ย ย ย ย ย Algebraic Expressions:**
33
+
34
+ An algebraic expression is a legal combination of operators and operands. Operand is the quantity on which a mathematical operation is performed. Operand may be a variable like x, y, z or a constant like 5, 4, 6 etc. Operator is a symbol which signifies a mathematical or logical operation between the operands. Examples of familiar operators include +, -, * , / , ^ etc.
35
+
36
+ An algebraic expression can be represented using three different notations. They are infix, postfix and prefix notations:
37
+
38
+ **Infix:**
39
+ It is the form of an arithmetic expression in which we fix (place) the arithmetic operator in between the two operands.
40
+
41
+ Example: (A + B) * (C - D)
42
+
43
+ **Prefix:**
44
+ It is the form of an arithmetic notation in which we fix (place) the arithmetic operator before (pre) its two operands. The prefix notation is called aspolish notation (due to the polish mathematician Jan Lukasiewicz in the year 1920).
45
+
46
+ Example: * + A B - C D
47
+
48
+ **Postfix:**
49
+ It is the form of an arithmetic expression in which we fix (place) the arithmetic operator after (post) its two operands. The postfix notation is called as suffix notation and is also referred to reverse polish notation.
50
+
51
+ Example: A B + C D - *
52
+
53
+ The three important features of postfix expression are:
54
+
55
+ 1. The operands maintain the same order as in the equivalent infix expression.
56
+
57
+ 2. The parentheses are not needed to designate the expression un-ambiguously.
58
+
59
+ 3. While evaluating the postfix expression the priority of the operators is no longer relevant.
60
+
61
+ We consider five binary operations: +, -, *, / and $ or ^ (exponentiation). For these binary operations, the following in the order of precedence (highest to lowest):
62
+
63
+ | OPERATOR | PRECEDENCE | VALUE |
64
+ |----------|------------|-------|
65
+ | Exponentiation ($ or โ†‘ or ^) | Highest | 3 |
66
+ | *, / | Next highest | 2 |
67
+ | +, - | Lowest | 1 |
68
+
69
+ **1.4ย ย ย ย ย Converting expressions using Stack:**
70
+
71
+ 1
72
+
73
+ ------------PAGE TALK ABOUT------------
74
+ ุชุชุญุฏุซ ุงู„ุตูุญุฉ ุนู† ุงู„ุชุนุงุจูŠุฑ ุงู„ุฌุจุฑูŠุฉ ูˆุนู†ุงุตุฑู‡ุง ุงู„ุฃุณุงุณูŠุฉ: ุงู„ู…ุนุงู…ู„ุงุช (operands) ูˆุงู„ุนูˆุงู…ู„/ุงู„ุนู…ู„ูŠุงุช (operators).
75
+ ูƒู…ุง ุชุดุฑุญ ุทุฑู‚ ูƒุชุงุจุฉ ุงู„ุชุนุจูŠุฑ ุงู„ุฌุจุฑูŠ ุงู„ุซู„ุงุซ: Infix ูˆPrefix ูˆPostfix ู…ุน ุฃู…ุซู„ุฉ ู„ูƒู„ ู†ูˆุน.
76
+ ุชูˆุถุญ ุฃูŠุถู‹ุง ู…ู…ูŠุฒุงุช ุตูŠุบุฉ Postfix ู…ุซู„ ุนุฏู… ุงู„ุญุงุฌุฉ ุฅู„ู‰ ุงู„ุฃู‚ูˆุงุณ ูˆุนุฏู… ุฃู‡ู…ูŠุฉ ุฃูˆู„ูˆูŠุฉ ุงู„ุนู…ู„ูŠุงุช ุฃุซู†ุงุก ุงู„ุชู‚ูŠูŠู….
77
+ ูŠูˆุฌุฏ ุฌุฏูˆู„ ูŠุจูŠู† ุฃูˆู„ูˆูŠุฉ ุงู„ุนู…ู„ูŠุงุช ุงู„ุญุณุงุจูŠุฉ: ุงู„ุฃุณ ุฃุนู„ู‰ ุฃูˆู„ูˆูŠุฉุŒ ุซู… ุงู„ุถุฑุจ ูˆุงู„ู‚ุณู…ุฉุŒ ุซู… ุงู„ุฌู…ุน ูˆุงู„ุทุฑุญ.
78
+ ุงู„ุตูุญุฉ ุนุจุงุฑุฉ ุนู† ู…ู„ุงุญุธุงุช ุฏุฑุงุณูŠุฉ ุจุนู†ูˆุงู† "Stack" ู…ุน ุชู†ุณูŠู‚ ุฃูƒุงุฏูŠู…ูŠ ูˆุฌุฏูˆู„ ุจุณูŠุท ููŠ ุงู„ุฃุณูู„.
79
+
80
+
81
+ ================================================================================
82
+ PAGE 2 - page_0002.png
83
+ ================================================================================
84
+
85
+ ------------TEXT EXTRACTED------------
86
+ ITGS 220
87
+ Dr. Amna Ali A Mohamedย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย Fall 2025
88
+
89
+ Let us convert the expressions from one type to another. These can be done as follows:
90
+
91
+ 1. Infix to postfix
92
+ 2. Infix to prefix
93
+ 3. Postfix to infix
94
+ 4. Postfix to prefix
95
+ 5. Prefix to infix
96
+ 6. Prefix to postfix
97
+
98
+ **1.4.1 Conversion from infix to postfix:**
99
+
100
+ Procedure to convert from infix expression to postfix expression is as follows:
101
+
102
+ 1. Scan the infix expression from left to right.
103
+
104
+ ย ย ย ย a)ย ย ย If the scanned symbol is left parenthesis, push it onto the stack.
105
+
106
+ ย ย ย ย b)ย ย ย If the scanned symbol is an operand, then place directly in the postfix
107
+ ย ย ย ย ย ย ย ย ย expression (output).
108
+
109
+ ย ย ย ย c)ย ย ย If the symbol scanned is a right parenthesis, then go on popping all the
110
+ ย ย ย ย ย ย ย ย ย items from the stack and place them in the postfix expression till we get
111
+ ย ย ย ย ย ย ย ย ย the matching left parenthesis.
112
+
113
+ ย ย ย ย d)ย ย ย If the scanned symbol is an operator, then go on removing all the
114
+ ย ย ย ย ย ย ย ย ย operators from the stack and place them in the postfix expression, if and
115
+ ย ย ย ย ย ย ย ย ย only if the precedence of the operator which is on the top of the stack is
116
+ ย ย ย ย ย ย ย ย ย greater than (or greater than or equal to) the precedence of the scanned
117
+ ย ย ย ย ย ย ย ย ย operator and push the scanned operator onto the stack otherwise, push
118
+ ย ย ย ย ย ย ย ย ย the scanned operator onto the stack.
119
+
120
+ 2
121
+
122
+ ------------PAGE TALK ABOUT------------
123
+ ุงู„ุตูุญุฉ ุชุดุฑุญ ู…ูˆุถูˆุน ุชุญูˆูŠู„ ุงู„ุตูŠุบ ุงู„ุชุนุจูŠุฑูŠุฉ ุจูŠู† ุงู„ุฃู†ูˆุงุน ุงู„ู…ุฎุชู„ูุฉ ู…ุซู„ infix ูˆ postfix ูˆ prefix.
124
+ ุชุฑูƒู‘ุฒ ุจุดูƒู„ ุฎุงุต ุนู„ู‰ ุทุฑูŠู‚ุฉ ุงู„ุชุญูˆูŠู„ ู…ู† infix ุฅู„ู‰ postfix ุจุงุณุชุฎุฏุงู… ุงู„ู…ูƒุฏุณ (stack).
125
+ ุชูˆุถุญ ุฎุทูˆุงุช ุงู„ู…ุณุญ ู…ู† ุงู„ูŠุณุงุฑ ุฅู„ู‰ ุงู„ูŠู…ูŠู† ูˆูƒูŠููŠุฉ ุงู„ุชุนุงู…ู„ ู…ุน ุงู„ุฃู‚ูˆุงุณุŒ ุงู„ู…ุนุงู…ู„ุงุชุŒ ูˆุงู„ุนูˆุงู…ู„ ุญุณุจ ุงู„ุฃูˆู„ูˆูŠุฉ.
126
+ ู„ุง ุชูˆุฌุฏ ุตูˆุฑ ุฃูˆ ู…ุฎุทุทุงุชุŒ ูู‚ุท ู†ุต ู…ู†ุณู‚ ุฃูƒุงุฏูŠู…ูŠ ู…ุน ุนู†ูˆุงู† ุงู„ู…ู‚ุฑุฑ ูˆุงุณู… ุงู„ุฏูƒุชูˆุฑุฉ ูˆุฑู‚ู… ุงู„ุตูุญุฉ.
127
+
128
+
129
+ ================================================================================
130
+ PAGE 3 - page_0003.png
131
+ ================================================================================
132
+
133
+ ------------TEXT EXTRACTED------------
134
+ ITGS 220
135
+ Dr. Amna Ali A Mohamedย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย Fall 2025
136
+
137
+ Example 1:
138
+
139
+ Convert ((A โ€“ (B + C)) * D) โ†‘ (E + F) infix expression to postfix form:
140
+
141
+ | SYMBOL | POSTFIX STRING | STACK | REMARKS |
142
+ |---|---|---|---|
143
+ | ( | | ( | |
144
+ | ( | | ( ( | |
145
+ | A | A | ( ( | |
146
+ | - | A | ( ( - | |
147
+ | ( | A | ( ( - ( | |
148
+ | B | A B | ( ( - ( | |
149
+ | + | A B | ( ( - ( + | |
150
+ | C | A B C | ( ( - ( + | |
151
+ | ) | A B C + | ( ( - | |
152
+ | ) | A B C + - | ( | |
153
+ | * | A B C + - | ( * | |
154
+ | D | A B C + - D | ( * | |
155
+ | ) | A B C + - D * | | |
156
+ | โ†‘ | A B C + - D * | โ†‘ | |
157
+ | ( | A B C + - D * | โ†‘ ( | |
158
+ | E | A B C + - D * E | โ†‘ ( | |
159
+ | + | A B C + - D * E | โ†‘ ( + | |
160
+ | F | A B C + - D * E F | โ†‘ ( + | |
161
+ | ) | A B C + - D * E F + | โ†‘ | |
162
+ | End of string | A B C + - D * E F + โ†‘ | | The input is now empty. Pop the output symbols from the stack until it is empty. |
163
+
164
+ Example 2:
165
+
166
+ Convert a + b * c + (d * e + f) * g the infix expression into postfix form.
167
+
168
+ | SYMBOL | POSTFIX STRING | STACK | REMARKS |
169
+ |---|---|---|---|
170
+ | A | A | | |
171
+ | + | A | + | |
172
+ | B | a b | + | |
173
+
174
+ ------------PAGE TALK ABOUT------------
175
+ ุงู„ุตูุญุฉ ุชุดุฑุญ ุชุญูˆูŠู„ ุงู„ุชุนุจูŠุฑ ุงู„ุฑูŠุงุถูŠ ู…ู† ุงู„ุตูŠุบุฉ ุงู„ูˆุณุทูŠุฉ Infix ุฅู„ู‰ ุงู„ุตูŠุบุฉ ุงู„ู„ุงุญู‚ุฉ Postfix ุจุงุณุชุฎุฏุงู… ุงู„ู…ูƒุฏุณ Stack.
176
+ ูŠูˆุฌุฏ ู…ุซุงู„ ุฃูˆู„ ู…ุญู„ูˆู„ ุฎุทูˆุฉ ุจุฎุทูˆุฉ ุฏุงุฎู„ ุฌุฏูˆู„ ูŠูˆุถุญ ุงู„ุฑู…ุฒ ุงู„ุญุงู„ูŠุŒ ู†ุงุชุฌ ุงู„ู€ postfixุŒ ูˆู…ุญุชูˆู‰ ุงู„ู…ูƒุฏุณ ุจุนุฏ ูƒู„ ุฎุทูˆุฉ.
177
+ ูƒู…ุง ุชุนุฑุถ ู…ุซุงู„ู‹ุง ุซุงู†ูŠู‹ุง ูŠุจุฏุฃ ุจู†ูุณ ุงู„ููƒุฑุฉ ู„ูƒู† ุงู„ุฌุฏูˆู„ ููŠู‡ ุบูŠุฑ ู…ูƒุชู…ู„.
178
+ ุงู„ุนู†ุงุตุฑ ุงู„ุจุตุฑูŠุฉ ุนุจุงุฑุฉ ุนู† ุตูุญุฉ ู…ุญุงุถุฑุฉ ุฃูƒุงุฏูŠู…ูŠุฉ ู…ู†ุธู…ุฉ ุชุญุชูˆูŠ ุนู†ุงูˆูŠู†ุŒ ุฌุฏุงูˆู„ุŒ ูˆุฎุท ุฃูู‚ูŠ ููŠ ุฃุนู„ู‰ ุงู„ุตูุญุฉ ุฏูˆู† ุตูˆุฑ ุฃุฎุฑู‰.
179
+
180
+
181
+ ================================================================================
182
+ PAGE 4 - page_0004.png
183
+ ================================================================================
184
+
185
+ ------------TEXT EXTRACTED------------
186
+ ITGS 220
187
+ Dr. Amna Ali A Mohamed Fall 2025
188
+
189
+ ----------------------------------------------------------------
190
+
191
+ | * | a b | + * | |
192
+ |---|-----|-----|---|
193
+ | C | a b c | + * | |
194
+ | + | a b c * + | + | |
195
+ | ( | a b c * + | + ( | |
196
+ | D | a b c * + d | + ( | |
197
+ | * | a b c * + d | + ( * | |
198
+ | E | a b c * + d e | + ( * | |
199
+ | + | a b c * + d e * | + ( + | |
200
+ | F | a b c * + d e * f | + ( + | |
201
+ | ) | a b c * + d e * f + | + | |
202
+ | * | a b c * + d e * f + | + * | |
203
+ | G | a b c * + d e * f + g | + * | |
204
+ | End of string | a b c * + d e * f + g * + | The input is now empty. Pop the output symbols from the stack until it is empty. |
205
+
206
+ Example 3:
207
+
208
+ Convert the following infix expression A + B * C โˆ’ D / E * H into its equivalent postfix expression.
209
+
210
+ | SYMBOL | POSTFIX STRING | STACK | REMARKS |
211
+ |--------|----------------|-------|---------|
212
+ | A | A | | |
213
+ | + | A | + | |
214
+ | B | A B | + | |
215
+ | * | A B | + * | |
216
+ | C | A B C | + * | |
217
+ | - | A B C * + | - | |
218
+ | D | A B C * + D | - | |
219
+ | / | A B C * + D | - / | |
220
+ | E | A B C * + D E | - / | |
221
+ | * | A B C * + D E / | - * | |
222
+ | H | A B C * + D E / H | - * | |
223
+ | End of string | A B C * + D E / H * - | The input is now empty. Pop the output symbols from the stack until it is empty. |
224
+
225
+ Example 4:
226
+
227
+ Convert the following infix expression A + (B * C โˆ’ (D / E โ†‘ F) * G) * H into its equivalent postfix expression.
228
+
229
+ | SYMBOL | POSTFIX STRING | STACK | REMARKS |
230
+ |--------|----------------|-------|---------|
231
+ | A | A | | |
232
+ | + | A | + | |
233
+
234
+ ------------PAGE TALK ABOUT------------
235
+ ุงู„ุตูุญุฉ ุชุดุฑุญ ุชุญูˆูŠู„ ุงู„ุชุนุจูŠุฑุงุช ุงู„ุญุณุงุจูŠุฉ ู…ู† ุงู„ุตูŠุบุฉ ุงู„ูˆุณุทูŠุฉ (Infix) ุฅู„ู‰ ุงู„ุตูŠุบุฉ ุงู„ู„ุงุญู‚ุฉ (Postfix) ุจุงุณุชุฎุฏุงู… ุงู„ู…ูƒุฏุณ (Stack).
236
+ ุชุญุชูˆูŠ ุนู„ู‰ ุฌุฏุงูˆู„ ุชูˆุถุญ ุฎุทูˆุฉ ุจุฎุทูˆุฉ ูƒูŠู ูŠุชุบูŠุฑ ูƒู„ ู…ู† ุงู„ู€ Postfix String ูˆุงู„ู€ Stack ุนู†ุฏ ู‚ุฑุงุกุฉ ูƒู„ ุฑู…ุฒ ู…ู† ุงู„ุชุนุจูŠุฑ.
237
+ ูŠูˆุฌุฏ ู…ุซุงู„ ู…ูƒุชู…ู„ ุจุนู†ูˆุงู† Example 3 ู„ู„ุชุนุจูŠุฑ: A + B * C โˆ’ D / E * HุŒ ู…ุน ุงู„ู†ุชูŠุฌุฉ ุงู„ู†ู‡ุงุฆูŠุฉ ุจุตูŠุบุฉ Postfix.
238
+ ูƒู…ุง ุชุนุฑุถ ุจุฏุงูŠุฉ Example 4 ู„ู„ุชุนุจูŠุฑ: A + (B * C โˆ’ (D / E โ†‘ F) * G) * HุŒ ู„ูƒู† ุงู„ุฌุฏูˆู„ ุงู„ุธุงู‡ุฑ ู„ู‡ ุบูŠุฑ ู…ูƒุชู…ู„ ููŠ ู‡ุฐู‡ ุงู„ุตูุญุฉ.
239
+
240
+
241
+ ================================================================================
242
+ PAGE 5 - page_0005.png
243
+ ================================================================================
244
+
245
+ ------------TEXT EXTRACTED------------
246
+ ITGS 220
247
+ Dr. Amna Ali A Mohamedย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย Fall 2025
248
+
249
+ (ย ย ย ย ย ย ย ย ย Aย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย + (
250
+ Bย ย ย ย ย ย ย ย ย A Bย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย + (
251
+ *ย ย ย ย ย ย ย ย ย A Bย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย + ( *
252
+ Cย ย ย ย ย ย ย ย ย A B Cย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย + ( *
253
+ -ย ย ย ย ย ย ย ย ย A B C *ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย + ( -
254
+ (ย ย ย ย ย ย ย ย ย A B C *ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย + ( - (
255
+ Dย ย ย ย ย ย ย ย ย A B C * Dย ย ย ย ย ย ย ย ย ย ย ย ย + ( - (
256
+ /ย ย ย ย ย ย ย ย ย A B C * Dย ย ย ย ย ย ย ย ย ย ย ย ย + ( - ( /
257
+ Eย ย ย ย ย ย ย ย ย A B C * D Eย ย ย ย ย ย ย ย ย ย ย + ( - ( /
258
+ โ†‘ย ย ย ย ย ย ย ย ย A B C * D Eย ย ย ย ย ย ย ย ย ย ย + ( - ( / โ†‘
259
+ Fย ย ย ย ย ย ย ย ย A B C * D E Fย ย ย ย ย ย ย ย ย + ( - ( / โ†‘
260
+ )ย ย ย ย ย ย ย ย ย A B C * D E F โ†‘ /ย ย ย ย ย + ( -
261
+ *ย ย ย ย ย ย ย ย ย A B C * D E F โ†‘ /ย ย ย ย ย + ( - *
262
+ Gย ย ย ย ย ย ย ย ย A B C * D E F โ†‘ / Gย ย ย + ( - *
263
+ )ย ย ย ย ย ย ย ย ย A B C * D E F โ†‘ / G * -ย ย ย +
264
+ *ย ย ย ย ย ย ย ย ย A B C * D E F โ†‘ / G * -ย ย ย + *
265
+ Hย ย ย ย ย ย ย ย ย A B C * D E F โ†‘ / G * - Hย + *
266
+ End of
267
+ stringย ย ย ย A B C * D E F โ†‘ / G * - H * +ย ย ย ย The input is now empty. Pop the output
268
+ symbols from the stack until it is empty.
269
+
270
+ 1.4.2 Program to convert an infix to postfix expression:
271
+
272
+ #include <stdio.h>
273
+ #include <stdlib.h>
274
+ #include <ctype.h>
275
+ #include <string.h>
276
+
277
+ #define MAX_SIZE 100
278
+
279
+ // Function prototypes
280
+ void push(char stack[], int *top, char item);
281
+ char pop(char stack[], int *top);
282
+ int precedence(char operator);
283
+ void infixToPostfix(char infix[], char postfix[]);
284
+
285
+ int main() {
286
+ ย ย ย ย char infix[MAX_SIZE], postfix[MAX_SIZE];
287
+
288
+ ย ย ย ย printf("Enter infix expression: ");
289
+ ย ย ย ย fgets(infix, MAX_SIZE, stdin);
290
+ ย ย ย ย infix[strlen(infix)-1] = '\0'; // Remove newline character
291
+
292
+ ย ย ย ย infixToPostfix(infix, postfix);
293
+ ย ย ย ย printf("Postfix expression: %s\n", postfix);
294
+
295
+ ย ย ย ย return 0;
296
+ }
297
+
298
+ // Push operation for stack
299
+ void push(char stack[], int *top, char item) {
300
+ ย ย ย ย if (*top >= MAX_SIZE - 1) {
301
+ ย ย ย ย ย ย ย ย printf("Stack Overflow\n");
302
+ ย ย ย ย ย ย ย ย exit(1);
303
+
304
+ 5
305
+
306
+ ------------PAGE TALK ABOUT------------
307
+ ุงู„ุตูุญุฉ ุชุดุฑุญ ุชุญูˆูŠู„ ุงู„ุชุนุจูŠุฑ ู…ู† Infix ุฅู„ู‰ Postfix ุจุงุณุชุฎุฏุงู… ุงู„ู…ูƒุฏุณ (Stack).
308
+ ูŠูˆุฌุฏ ุฌุฏูˆู„ ุชุชุจู‘ุน ูŠูˆุถุญ ุฎุทูˆุฉ ุจุฎุทูˆุฉ ูƒูŠู ูŠุชู… ู‚ุฑุงุกุฉ ุงู„ุฑู…ูˆุฒุŒ ูˆุจู†ุงุก ู†ุงุชุฌ ุงู„ู€ postfixุŒ ูˆุชุญุฏูŠุซ ู…ุญุชูˆู‰ ุงู„ู€ stack ุญุชู‰ ู†ู‡ุงูŠุฉ ุงู„ุณู„ุณู„ุฉ.
309
+ ูƒู…ุง ุชุญุชูˆูŠ ุงู„ุตูุญุฉ ุนู„ู‰ ุจุฏุงูŠุฉ ุจุฑู†ุงู…ุฌ ุจู„ุบุฉ C ู„ุชู†ููŠุฐ ู‡ุฐุง ุงู„ุชุญูˆูŠู„ุŒ ู…ุน ุชุถู…ูŠู† ุงู„ู…ูƒุชุจุงุชุŒ ุชุนุฑูŠู MAX_SIZEุŒ ูˆุชุตุฑูŠุญุงุช ุงู„ุฏูˆุงู„ ูˆุงู„ุฏุงู„ุฉ main.
310
+ ุงู„ุฌุฒุก ุงู„ุณูู„ูŠ ูŠุนุฑุถ ุจุฏุงูŠุฉ ุฏุงู„ุฉ push ุงู„ุฎุงุตุฉ ุจุงู„ู…ูƒุฏุณุŒ ุจูŠู†ู…ุง ุงู„ุนู†ุตุฑ ุงู„ุจุตุฑูŠ ุงู„ุฃุณุงุณูŠ ู‡ูˆ ุงู„ุฌุฏูˆู„ ุงู„ุฐูŠ ูŠุดุฑุญ ุณูŠุฑ ุงู„ุฎูˆุงุฑุฒู…ูŠุฉ ุนู…ู„ูŠู‹ุง.
311
+
312
+
313
+ ================================================================================
314
+ PAGE 6 - page_0006.png
315
+ ================================================================================
316
+
317
+ ------------TEXT EXTRACTED------------
318
+ ITGS 220
319
+ Dr. Amna Ali A Mohamed Fall 2025
320
+
321
+ }
322
+
323
+ stack[++(*top)] = item;
324
+ }
325
+
326
+ // Pop operation for stack
327
+ char pop(char stack[], int *top) {
328
+ if (*top < 0) {
329
+ printf("Stack Underflow\n");
330
+ exit(1);
331
+ }
332
+ return stack[(*top)--];
333
+ }
334
+
335
+ // Get precedence of operators
336
+ int precedence(char operator) {
337
+ switch(operator) {
338
+ case '^':
339
+ return 4;
340
+ case '*':
341
+ case '/':
342
+ return 3;
343
+ case '+':
344
+ case '-':
345
+ return 2;
346
+ default:
347
+ return 0;
348
+ }
349
+ }
350
+
351
+ // Convert infix to postfix
352
+ void infixToPostfix(char infix[], char postfix[]) {
353
+ char stack[MAX_SIZE];
354
+ int top = -1;
355
+ int i = 0, j = 0;
356
+ char item, x;
357
+
358
+ push(stack, &top, '(');
359
+ strcat(infix, ")");
360
+
361
+ for (item = infix[i]; item != '\0'; item = infix[++i]) {
362
+ if (item == '(') {
363
+ push(stack, &top, item);
364
+ }
365
+ else if (isalnum(item)) {
366
+ postfix[j++] = item;
367
+ }
368
+ else if (item == ')') {
369
+ while ((x = pop(stack, &top)) != '(') {
370
+ postfix[j++] = x;
371
+ }
372
+ }
373
+ else {
374
+ while (precedence(stack[top]) >= precedence(item)) {
375
+ postfix[j++] = pop(stack, &top);
376
+ }
377
+ push(stack, &top, item);
378
+ }
379
+ }
380
+
381
+ postfix[j] = '\0';
382
+
383
+ 6
384
+
385
+ ------------PAGE TALK ABOUT------------
386
+ ุงู„ุตูุญุฉ ุชุดุฑุญ ุฌุฒุกู‹ุง ู…ู† ุจุฑู†ุงู…ุฌ ุจู„ุบุฉ C ู„ุชุญูˆูŠู„ ุงู„ุชุนุจูŠุฑ ู…ู† Infix ุฅู„ู‰ Postfix ุจุงุณุชุฎุฏุงู… ุงู„ู…ูƒุฏุณ (Stack).
387
+ ุชุชุถู…ู† ุฏูˆุงู„ ุฃุณุงุณูŠุฉ ู…ุซู„ pop ู„ุฅุฒุงู„ุฉ ุนู†ุตุฑ ู…ู† ุงู„ู…ูƒุฏุณุŒ ูˆprecedence ู„ุชุญุฏูŠุฏ ุฃูˆู„ูˆูŠุฉ ุงู„ุนู…ู„ูŠุงุช ุงู„ุญุณุงุจูŠุฉ.
388
+ ูƒู…ุง ุชุนุฑุถ ุฏุงู„ุฉ infixToPostfix ุงู„ุชูŠ ุชู…ุฑ ุนู„ู‰ ุฑู…ูˆุฒ ุงู„ุชุนุจูŠุฑ ูˆุชุชุนุงู…ู„ ู…ุน ุงู„ุฃู‚ูˆุงุณ ูˆุงู„ุนูˆุงู…ู„ ูˆุงู„ู…ุนุงู…ู„ุงุช ูˆูู‚ ุฎูˆุงุฑุฒู…ูŠุฉ ุงู„ุชุญูˆูŠู„.
389
+ ุจุตุฑูŠู‹ุงุŒ ุงู„ุตูุญุฉ ุนุจุงุฑุฉ ุนู† ู…ู„ุงุญุธุงุช/ุดุฑูŠุญุฉ ุฃูƒุงุฏูŠู…ูŠุฉ ุชุญุชูˆูŠ ุนู„ู‰ ุฑุฃุณ ุงู„ุตูุญุฉ ุจุงุณู… ุงู„ู…ู‚ุฑุฑ ูˆุงู„ุฏูƒุชูˆุฑุฉ ูˆุงู„ูุตู„ ุงู„ุฏุฑุงุณูŠ ูˆุฑู‚ู… ุงู„ุตูุญุฉ 6.
390
+
391
+
392
+ ================================================================================
393
+ PAGE 7 - page_0007.png
394
+ ================================================================================
395
+
396
+ ------------TEXT EXTRACTED------------
397
+ ITGS 220
398
+ Dr. Amna Ali A Mohamedย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย Fall 2025
399
+
400
+ }
401
+
402
+ **1.4.3 Conversion from infix to prefix:**
403
+
404
+ The precedence rules for converting an expression from infix to prefix are identical. The only change from postfix conversion is that traverse the expression from right to left and the operator is placed before the operands rather than after them. **The prefix form of a complex expression is not the mirror image of the postfix form.**
405
+
406
+ **Example 1:**
407
+
408
+ Convert the infix expression A + B - C into prefix expression.
409
+
410
+ | SYMBOL | PREFIX STRING | STACK | REMARKS |
411
+ |--------|---------------|-------|---------|
412
+ | C | C | | |
413
+ | - | C | - | |
414
+ | B | B C | - | |
415
+ | + | B C | - + | |
416
+ | A | A B C | - + | |
417
+ | End of string | - + A B C | | The input is now empty. Pop the output symbols from the stack until it is empty. |
418
+
419
+ **Example 2:**
420
+
421
+ Convert the infix expression (A + B) * (C - D) into prefix expression.
422
+
423
+ | SYMBOL | PREFIX STRING | STACK | REMARKS |
424
+ |--------|---------------|-------|---------|
425
+ | ) | | ) | |
426
+ | D | D | ) | |
427
+ | - | D | ) - | |
428
+ | C | C D | ) - | |
429
+ | ( | - C D | | |
430
+ | * | - C D | * | |
431
+ | ) | - C D | * ) | |
432
+ | B | B - C D | * ) | |
433
+ | + | B - C D | * ) + | |
434
+ | A | A B - C D | * ) + | |
435
+ | ( | + A B - C D | * | |
436
+ | End of string | * + A B - C D | | The input is now empty. Pop the output symbols from the stack until it is empty. |
437
+
438
+ 7
439
+
440
+ ------------PAGE TALK ABOUT------------
441
+ ุชุชุญุฏุซ ุงู„ุตูุญุฉ ุนู† ุชุญูˆูŠู„ ุงู„ุชุนุจูŠุฑุงุช ุงู„ุฑูŠุงุถูŠุฉ ู…ู† ุงู„ุตูŠุบุฉ ุงู„ูˆุณุทูŠุฉ Infix ุฅู„ู‰ ุงู„ุตูŠุบุฉ ุงู„ุณุงุจู‚ุฉ Prefix ุจุงุณุชุฎุฏุงู… ู‚ูˆุงุนุฏ ุงู„ุฃูˆู„ูˆูŠุฉ ู†ูุณู‡ุง ุงู„ู…ุณุชุฎุฏู…ุฉ ููŠ ุงู„ุชุญูˆูŠู„ ุฅู„ู‰ Postfix.
442
+ ุชูˆุถุญ ุฃู† ุงู„ูุฑู‚ ุงู„ุฃุณุงุณูŠ ู‡ูˆ ู‚ุฑุงุกุฉ ุงู„ุชุนุจูŠุฑ ู…ู† ุงู„ูŠู…ูŠู† ุฅู„ู‰ ุงู„ูŠุณุงุฑุŒ ูˆูˆุถุน ุงู„ุนุงู…ู„ ู‚ุจู„ ุงู„ู…ุนุงู…ู„ุงุช.
443
+ ุชุญุชูˆูŠ ุงู„ุตูุญุฉ ุนู„ู‰ ู…ุซุงู„ูŠู† ู…ุญู„ูˆู„ูŠู† ุฎุทูˆุฉ ุจุฎุทูˆุฉ ุฏุงุฎู„ ุฌุฏุงูˆู„: ุงู„ุฃูˆู„ ู„ู„ุชุนุจูŠุฑ A + B - CุŒ ูˆุงู„ุซุงู†ูŠ ู„ู„ุชุนุจูŠุฑ (A + B) * (C - D).
444
+ ุงู„ุนู†ุงุตุฑ ุงู„ุจุตุฑูŠุฉ ุงู„ุฃุณุงุณูŠุฉ ู‡ูŠ ุฌุฏุงูˆู„ ุจุฃุนู…ุฏุฉ: ุงู„ุฑู…ุฒุŒ ุณู„ุณู„ุฉ ุงู„ู€ PrefixุŒ ุงู„ู…ูƒุฏุณ StackุŒ ูˆุงู„ู…ู„ุงุญุธุงุชุŒ ู…ุน ุชุชุจุน ุชุบูŠู‘ุฑ ุงู„ู‚ูŠู… ููŠ ูƒู„ ุฎุทูˆุฉ.
445
+
446
+
447
+ ================================================================================
448
+ PAGE 8 - page_0008.png
449
+ ================================================================================
450
+
451
+ ------------TEXT EXTRACTED------------
452
+ ITGS 220
453
+ Dr. Amna Ali A Mohamedย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย Fall 2025
454
+
455
+ Example 3:
456
+
457
+ Convert the infix expression A โ†‘ B * C โˆ’ D + E / F / (G + H) into prefix expression.
458
+
459
+ | SYMBOL | PREFIX STRING | STACK | REMARKS |
460
+ |---|---|---|---|
461
+ | ) | | ) | |
462
+ | H | H | ) | |
463
+ | + | H | ) + | |
464
+ | G | G H | ) + | |
465
+ | ( | + G H | | |
466
+ | / | + G H | / | |
467
+ | F | F + G H | / | |
468
+ | / | F + G H | / / | |
469
+ | E | E F + G H | / / | |
470
+ | + | / / E F + G H | + | |
471
+ | D | D / / E F + G H | + | |
472
+ | - | D / / E F + G H | + - | |
473
+ | C | C D / / E F + G H | + - | |
474
+ | * | C D / / E F + G H | + - * | |
475
+ | B | B C D / / E F + G H | + - * | |
476
+ | โ†‘ | B C D / / E F + G H | + - * โ†‘ | |
477
+ | A | A B C D / / E F + G H | + - * โ†‘ | |
478
+ | End of string | + - * โ†‘ A B C D / / E F + G H | The input is now empty. Pop the output symbols from the stack until it is empty. | |
479
+
480
+ 1.4.4 Program to convert an infix to prefix expression:
481
+
482
+ #include <stdio.h>
483
+ #include <string.h>
484
+ #include <ctype.h>
485
+ #include <stdlib.h>
486
+
487
+ #define MAX 100
488
+
489
+ // Function prototypes
490
+ void push(char item);
491
+ char pop();
492
+ int isOperator(char ch);
493
+ int precedence(char ch);
494
+ void reverseString(char* str);
495
+ void infixToPrefix(char* infix, char* prefix);
496
+
497
+ // Global stack variables
498
+ char stack[MAX];
499
+ int top = -1;
500
+
501
+ int main() {
502
+ ย ย ย ย char infix[MAX], prefix[MAX];
503
+ ย ย ย ย printf("Enter infix expression: ");
504
+
505
+ 8
506
+
507
+ ------------PAGE TALK ABOUT------------
508
+ ุงู„ุตูุญุฉ ุชุดุฑุญ ู…ุซุงู„ู‹ุง ู„ุชุญูˆูŠู„ ุชุนุจูŠุฑ ุฑูŠุงุถูŠ ู…ู† ุงู„ุตูŠุบุฉ ุงู„ูˆุณุทูŠุฉ Infix ุฅู„ู‰ ุงู„ุตูŠุบุฉ ุงู„ุณุงุจู‚ุฉ Prefix ุจุงุณุชุฎุฏุงู… ุงู„ู…ูƒุฏุณ Stack.
509
+ ูŠูˆุฌุฏ ุฌุฏูˆู„ ูŠูˆุถุญ ุฎุทูˆุฉ ุจุฎุทูˆุฉ ูƒูŠู ุชุชู… ู…ุนุงู„ุฌุฉ ุงู„ุฑู…ูˆุฒุŒ ูˆู…ุง ุงู„ุฐูŠ ูŠูุถุงู ุฅู„ู‰ ุงู„ู€ prefix string ูˆู…ุง ุงู„ุฐูŠ ูŠูุฎุฒู† ููŠ ุงู„ู€ stack.
510
+ ุงู„ู…ุซุงู„ ุงู„ู…ุณุชุฎุฏู… ู‡ูˆ: A โ†‘ B * C โˆ’ D + E / F / (G + H)ุŒ ูˆุงู„ู†ุชูŠุฌุฉ ุงู„ู†ู‡ุงุฆูŠุฉ ุงู„ุธุงู‡ุฑุฉ ู‡ูŠ: + - * โ†‘ A B C D / / E F + G H.
511
+ ูƒู…ุง ุชุนุฑุถ ุงู„ุตูุญุฉ ุจุฏุงูŠุฉ ุจุฑู†ุงู…ุฌ ุจู„ุบุฉ C ู„ุชู†ููŠุฐ ุงู„ุชุญูˆูŠู„ุŒ ูˆูŠุชุถู…ู† ุงู„ู…ูƒุชุจุงุช ุงู„ู…ุทู„ูˆุจุฉุŒ ุชุนุฑูŠู MAXุŒ ูˆุชุตุฑูŠุญุงุช ุงู„ุฏูˆุงู„ ูˆุงู„ู…ุชุบูŠุฑุงุช ุงู„ุนุงู…ุฉ.
512
+
513
+
514
+ ================================================================================
515
+ PAGE 9 - page_0009.png
516
+ ================================================================================
517
+
518
+ ------------TEXT EXTRACTED------------
519
+ ITGS 220
520
+ Dr. Amna Ali A Mohamedย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย Fall 2025
521
+
522
+ fgets(infix, MAX, stdin);
523
+
524
+ infix[strlen(infix)-1] = '\0'; // Remove newline character
525
+
526
+ infixToPrefix(infix, prefix);
527
+ printf("Prefix expression: %s\n", prefix);
528
+
529
+ return 0;
530
+ }
531
+
532
+ void push(char item) {
533
+ if (top >= MAX-1) {
534
+ printf("Stack Overflow\n");
535
+ return;
536
+ }
537
+ stack[++top] = item;
538
+ }
539
+
540
+ char pop() {
541
+ if (top < 0) {
542
+ printf("Stack Underflow\n");
543
+ return '\0';
544
+ }
545
+ return stack[top--];
546
+ }
547
+
548
+ int isOperator(char ch) {
549
+ return (ch == '+' || ch == '-' || ch == '*' || ch == '/' || ch == '^');
550
+ }
551
+
552
+ int precedence(char ch) {
553
+ switch(ch) {
554
+ case '^': return 4;
555
+ case '*':
556
+ case '/': return 3;
557
+ case '+':
558
+ case '-': return 2;
559
+ default: return 0;
560
+ }
561
+ }
562
+
563
+ void reverseString(char* str) {
564
+ int n = strlen(str);
565
+ for (int i = 0; i < n/2; i++) {
566
+ char temp = str[i];
567
+ str[i] = str[n-i-1];
568
+ str[n-i-1] = temp;
569
+ }
570
+ }
571
+
572
+ void infixToPrefix(char* infix, char* prefix) {
573
+ char tempInfix[MAX], tempPrefix[MAX];
574
+ int i = 0, j = 0;
575
+
576
+ // Step 1: Reverse the infix expression
577
+ strcpy(tempInfix, infix);
578
+ reverseString(tempInfix);
579
+
580
+ // Step 2: Replace '(' with ')' and vice versa
581
+ for (i = 0; tempInfix[i] != '\0'; i++) {
582
+
583
+ 9
584
+
585
+ ------------PAGE TALK ABOUT------------
586
+ ุงู„ุตูุญุฉ ุชุนุฑุถ ุฌุฒุกู‹ุง ู…ู† ูƒูˆุฏ ุจู„ุบุฉ C ู„ุชุญูˆูŠู„ ุงู„ุชุนุจูŠุฑ ู…ู† Infix ุฅู„ู‰ Prefix ุจุงุณุชุฎุฏุงู… ุงู„ู…ูƒุฏุณ Stack.
587
+ ุชุดุฑุญ ุงู„ุฏูˆุงู„ ุงู„ุฃุณุงุณูŠุฉ ู…ุซู„ push ูˆ popุŒ ูˆูุญุต ู…ุง ุฅุฐุง ูƒุงู† ุงู„ุฑู…ุฒ ุนุงู…ู„ู‹ุง ุฑูŠุงุถูŠู‹ุงุŒ ูˆุชุญุฏูŠุฏ ุฃูˆู„ูˆูŠุฉ ุงู„ุนู…ู„ูŠุงุช ู…ุซู„ ^ ูˆ * ูˆ / ูˆ + ูˆ -.
588
+ ูƒู…ุง ุชุญุชูˆูŠ ุนู„ู‰ ุฏุงู„ุฉ ู„ุนูƒุณ ุงู„ู†ุต reverseString ูˆุจุฏุงูŠุฉ ุฏุงู„ุฉ infixToPrefix ุงู„ุชูŠ ุชุจุฏุฃ ุจุนูƒุณ ุงู„ุชุนุจูŠุฑ ุซู… ุชุจุฏูŠู„ ุงู„ุฃู‚ูˆุงุณ.
589
+ ุจุตุฑูŠู‹ุงุŒ ุงู„ุตูุญุฉ ุนุจุงุฑุฉ ุนู† ูˆุฑู‚ุฉ ู…ุญุงุถุฑุฉ ุฃูƒุงุฏูŠู…ูŠุฉ ููŠู‡ุง ุนู†ูˆุงู† ุงู„ู…ู‚ุฑุฑ ูˆุงุณู… ุงู„ุฏูƒุชูˆุฑุฉ ูˆุงู„ูุตู„ ุงู„ุฏุฑุงุณูŠ ูˆุฑู‚ู… ุงู„ุตูุญุฉ 9ุŒ ูˆู„ุง ุชูˆุฌุฏ ุตูˆุฑ ุฃูˆ ู…ุฎุทุทุงุช.
590
+
591
+
592
+ ================================================================================
593
+ PAGE 10 - page_0010.png
594
+ ================================================================================
595
+
596
+ ------------TEXT EXTRACTED------------
597
+ ITGS 220
598
+ Dr. Amna Ali A Mohamed
599
+
600
+ Fall 2025
601
+
602
+ if (tempInfix[i] == '(') tempInfix[i] = ')';
603
+ else if (tempInfix[i] == ')') tempInfix[i] = '(';
604
+ }
605
+
606
+ // Step 3: Convert to postfix with modified operator handling
607
+ push('(');
608
+ strcat(tempInfix, ")");
609
+
610
+ i = 0;
611
+ j = 0;
612
+ char item = tempInfix[i];
613
+
614
+ while (item != '\0') {
615
+ if (item == '(') {
616
+ push(item);
617
+ }
618
+ else if (isalnum(item)) {
619
+ tempPrefix[j++] = item;
620
+ }
621
+ else if (isOperator(item)) {
622
+ while (top >= 0 && stack[top] != '(' &&
623
+ precedence(stack[top]) > precedence(item)) {
624
+ tempPrefix[j++] = pop();
625
+ }
626
+ push(item);
627
+ }
628
+ else if (item == ')') {
629
+ while (stack[top] != '(') {
630
+ tempPrefix[j++] = pop();
631
+ }
632
+ pop(); // Remove '(' from stack
633
+ }
634
+ i++;
635
+ item = tempInfix[i];
636
+ }
637
+
638
+ tempPrefix[j] = '\0';
639
+
640
+ // Step 4: Reverse the postfix expression to get prefix
641
+ strcpy(prefix, tempPrefix);
642
+ reverseString(prefix);
643
+ }
644
+
645
+ 10
646
+
647
+ ------------PAGE TALK ABOUT------------
648
+ ุชุชุญุฏุซ ุงู„ุตูุญุฉ ุนู† ุฌุฒุก ู…ู† ูƒูˆุฏ ุจู„ุบุฉ C ู„ุชุญูˆูŠู„ ุงู„ุชุนุจูŠุฑ ู…ู† infix ุฅู„ู‰ prefix ุจุงุณุชุฎุฏุงู… ุงู„ู…ูƒุฏุณ (stack).
649
+ ุชูˆุถุญ ุงู„ุฎุทูˆุงุช ุชุจุฏูŠู„ ุงู„ุฃู‚ูˆุงุณ ุฃูˆู„ุงู‹ุŒ ุซู… ุชุญูˆูŠู„ ุงู„ุชุนุจูŠุฑ ุฅู„ู‰ postfix ุจุทุฑูŠู‚ุฉ ู…ุนุฏู„ุฉ ุชุนุชู…ุฏ ุนู„ู‰ ุฃูˆู„ูˆูŠุฉ ุงู„ุนู…ู„ูŠุงุช.
650
+ ุจุนุฏ ุฐู„ูƒ ูŠุชู… ุชุฎุฒูŠู† ุงู„ู†ุงุชุฌ ููŠ tempPrefix ุซู… ุนูƒุณู‡ ู„ู„ุญุตูˆู„ ุนู„ู‰ prefix ุงู„ู†ู‡ุงุฆูŠ.
651
+ ุงู„ุนู†ุงุตุฑ ุงู„ุจุตุฑูŠุฉ ููŠ ุงู„ุตูุญุฉ ุนุจุงุฑุฉ ุนู† ุชู†ุณูŠู‚ ู…ุญุงุถุฑุฉ ุฌุงู…ุนูŠุฉ ูŠุชุถู…ู† ุงุณู… ุงู„ู…ู‚ุฑุฑ ูˆุงู„ู…ุฏุฑุณุฉ ูˆุงู„ูุตู„ ุงู„ุฏุฑุงุณูŠ ูˆุฑู‚ู… ุงู„ุตูุญุฉ ูู‚ุทุŒ ูˆู„ุง ุชูˆุฌุฏ ุตูˆุฑ ุฃูˆ ู…ุฎุทุทุงุช.
652
+
653
+
654
+ ================================================================================
655
+ PAGE 11 - page_0011.png
656
+ ================================================================================
657
+
658
+ ------------TEXT EXTRACTED------------
659
+ ITGS 220
660
+ Dr. Amna Ali A Mohamedย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย Fall 2025
661
+
662
+ **1.4.5 Conversion from postfix to infix:**
663
+
664
+ Procedure to convert postfix expression to infix expression is as follows:
665
+
666
+ 1. Scan the postfix expression from left to right.
667
+
668
+ 2. If the scanned symbol is an operand, then push it onto the stack.
669
+
670
+ 3. If the scanned symbol is an operator, pop two symbols from the stack and create it as a string by placing the operator in between the operands and push it onto the stack.
671
+
672
+ 4. Repeat steps 2 and 3 till the end of the expression.
673
+
674
+ **Example:**
675
+
676
+ Convert the following postfix expression A B C * D E F ^ / G * - H * + into its equivalent infix expression.
677
+
678
+ **Symbol**ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย **Stack**ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย **Remarks**
679
+
680
+ Aย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย Aย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย Push A
681
+
682
+ Bย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย Aย ย ย Bย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย Push B
683
+
684
+ Cย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย Aย ย ย Bย ย ย Cย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย Push C
685
+
686
+ *ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย Aย ย ย (B*C)ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย Pop two operands and place the operator in between the operands and push the string.
687
+
688
+ Dย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย Aย ย ย (B*C)ย ย ย Dย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย Push D
689
+
690
+ Eย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย Aย ย ย (B*C)ย ย ย Dย ย ย Eย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย Push E
691
+
692
+ Fย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย Aย ย ย (B*C)ย ย ย Dย ย ย Eย ย ย Fย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย Push F
693
+
694
+ ^ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย Aย ย ย (B*C)ย ย ย Dย ย ย (E^F)ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย Pop two operands and place the operator in between the operands and push the string.
695
+
696
+ /
697
+
698
+ Aย ย ย (B*C)ย ย ย (D/(E^F))ย ย ย ย ย ย ย ย ย ย Pop two operands and place the operator in between the operands and push the string.
699
+
700
+ Gย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย Aย ย ย (B*C)ย ย ย (D/(E^F))ย ย ย Gย ย ย ย ย ย ย ย ย ย ย ย ย Push G
701
+
702
+ *ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย Aย ย ย (B*C)ย ย ย ((D/(E^F))*G)ย ย ย ย ย ย ย ย ย ย ย ย ย Pop two operands and place the operator in between the operands and push the string.
703
+
704
+ -ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย Aย ย ย ((B*C) โ€“ ((D/(E^F))*G))ย ย ย ย ย ย ย ย ย ย ย Pop two operands and place the operator in between the operands and push the string.
705
+
706
+ Hย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย Aย ย ย ((B*C) โ€“ ((D/(E^F))*G))ย ย ย Hย ย ย ย ย ย ย Push H
707
+
708
+ *ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย Aย ย ย (((B*C) โ€“ ((D/(E^F))*G)) * H)ย ย ย ย ย Pop two operands and place the operator in between the operands and push the string.
709
+
710
+ +ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย (A + (((B*C) โ€“ ((D/(E^F))*G)) * H))ย ย ย Pop two operands and place the operator in between the operands and push the string.
711
+
712
+ End of
713
+ stringย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย The input is now empty. The string formed is infix.
714
+
715
+ 11
716
+
717
+ ------------PAGE TALK ABOUT------------
718
+ ุงู„ุตูุญุฉ ุชุดุฑุญ ุทุฑูŠู‚ุฉ ุชุญูˆูŠู„ ุงู„ุชุนุจูŠุฑ ู…ู† **Postfix** ุฅู„ู‰ **Infix** ุจุงุณุชุฎุฏุงู… **ุงู„ู…ูƒุฏุณ (Stack)**.
719
+ ุชุฐูƒุฑ ุงู„ุฎุทูˆุงุช ุงู„ุฃุณุงุณูŠุฉ: ู‚ุฑุงุกุฉ ุงู„ุฑู…ูˆุฒ ู…ู† ุงู„ูŠุณุงุฑ ู„ู„ูŠู…ูŠู†ุŒ ุฏูุน ุงู„ู…ุนุงู…ู„ุงุช ุฅู„ู‰ ุงู„ู…ูƒุฏุณุŒ ูˆุนู†ุฏ ุธู‡ูˆุฑ ุนุงู…ู„ ูŠุชู… ุณุญุจ ู…ุนุงู…ู„ูŠู† ูˆุชูƒูˆูŠู† ุชุนุจูŠุฑ infix ุซู… ุฅุนุงุฏุชู‡ ู„ู„ู…ูƒุฏุณ.
720
+ ูŠูˆุฌุฏ ู…ุซุงู„ ุชูุตูŠู„ูŠ ู„ู„ุชุนุจูŠุฑ: **A B C * D E F ^ / G * - H * +** ู…ุน ุฌุฏูˆู„ ูŠูˆุถุญ ููŠ ูƒู„ ุฎุทูˆุฉ ุงู„ุฑู…ุฒ ุงู„ู…ู‚ุฑูˆุกุŒ ุญุงู„ุฉ ุงู„ู…ูƒุฏุณุŒ ูˆุงู„ู…ู„ุงุญุธุฉ.
721
+ ุงู„ุนู†ุตุฑ ุงู„ุจุตุฑูŠ ุงู„ุฃุณุงุณูŠ ู‡ูˆ **ุฌุฏูˆู„ ุชุชุจุนูŠ** ูŠุจูŠู† ุชุทูˆุฑ ู…ุญุชูˆู‰ ุงู„ู…ูƒุฏุณ ุญุชู‰ ุงู„ูˆุตูˆู„ ุฅู„ู‰ ุงู„ุชุนุจูŠุฑ ุงู„ู†ู‡ุงุฆูŠ: **(A + (((B*C) โ€“ ((D/(E^F))*G)) * H))**.
722
+
723
+
724
+ ================================================================================
725
+ PAGE 12 - page_0012.png
726
+ ================================================================================
727
+
728
+ ------------TEXT EXTRACTED------------
729
+ ITGS 220
730
+ Dr. Amna Ali A Mohamedย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย Fall 2025
731
+
732
+ ____________________________________________________________________
733
+
734
+ 1.4.6ย ย Program to convert postfix to infix expression:
735
+
736
+ #include <stdio.h>
737
+ #include <stdlib.h>
738
+ #include <string.h>
739
+ #include <ctype.h>
740
+
741
+ #define MAX 100
742
+
743
+ // Stack structure to hold strings
744
+ typedef struct {
745
+ ย ย ย ย char data[MAX][MAX];
746
+ ย ย ย ย int top;
747
+ } Stack;
748
+
749
+ // Function prototypes
750
+ void initStack(Stack *s);
751
+ int isFull(Stack *s);
752
+ int isEmpty(Stack *s);
753
+ void push(Stack *s, char *str);
754
+ void pop(Stack *s, char *str);
755
+ void postfixToInfix(char *postfix, char *infix);
756
+
757
+ int main() {
758
+ ย ย ย ย char postfix[MAX], infix[MAX];
759
+
760
+ ย ย ย ย printf("Enter postfix expression: ");
761
+ ย ย ย ย fgets(postfix, MAX, stdin);
762
+ ย ย ย ย postfix[strlen(postfix)-1] = '\0'; // Remove newline character
763
+
764
+ ย ย ย ย postfixToInfix(postfix, infix);
765
+ ย ย ย ย printf("Infix expression: %s\n", infix);
766
+
767
+ ย ย ย ย return 0;
768
+ }
769
+
770
+ // Initialize stack
771
+ void initStack(Stack *s) {
772
+ ย ย ย ย s->top = -1;
773
+ }
774
+
775
+ // Check if stack is full
776
+ int isFull(Stack *s) {
777
+ ย ย ย ย return s->top == MAX - 1;
778
+ }
779
+
780
+ // Check if stack is empty
781
+ int isEmpty(Stack *s) {
782
+ ย ย ย ย return s->top == -1;
783
+ }
784
+
785
+ // Push operation
786
+ void push(Stack *s, char *str) {
787
+ ย ย ย ย if (isFull(s)) {
788
+ ย ย ย ย ย ย ย ย printf("Stack Overflow\n");
789
+ ย ย ย ย ย ย ย ย return;
790
+ ย ย ย ย }
791
+ ย ย ย ย strcpy(s->data[++s->top], str);
792
+ }
793
+
794
+ 12
795
+
796
+ ------------PAGE TALK ABOUT------------
797
+ ุชุชุญุฏุซ ุงู„ุตูุญุฉ ุนู† ุจุฑู†ุงู…ุฌ ุจู„ุบุฉ C ู„ุชุญูˆูŠู„ ุงู„ุชุนุจูŠุฑ ู…ู† postfix ุฅู„ู‰ infix ุจุงุณุชุฎุฏุงู… ุจู†ูŠุฉ ุงู„ู…ูƒุฏุณ Stack.
798
+ ุชุญุชูˆูŠ ุนู„ู‰ ุชุถู…ูŠู† ุงู„ู…ูƒุชุจุงุชุŒ ูˆุชุนุฑูŠู ุซุงุจุช MAXุŒ ุซู… ุชุนุฑูŠู struct ู„ู„ู…ูƒุฏุณ ู„ุชุฎุฒูŠู† ุณู„ุงุณู„ ู†ุตูŠุฉ.
799
+ ูƒู…ุง ุชุนุฑุถ ุชุฑูˆูŠุณุงุช ุงู„ุฏูˆุงู„ ุงู„ุฃุณุงุณูŠุฉ ู…ุซู„ ุงู„ุชู‡ูŠุฆุฉุŒ ูˆูุญุต ุงู„ุงู…ุชู„ุงุก ูˆุงู„ูุฑุงุบุŒ ูˆุนู…ู„ูŠุชูŠ push ูˆ popุŒ ูˆุฏุงู„ุฉ ุงู„ุชุญูˆูŠู„ postfixToInfix.
800
+ ูŠูˆุฌุฏ ุฃูŠุถู‹ุง ุฌุฒุก ู…ู† ุงู„ุฏุงู„ุฉ main ู„ู‚ุฑุงุกุฉ ุงู„ุชุนุจูŠุฑ ู…ู† ุงู„ู…ุณุชุฎุฏู… ูˆุทุจุงุนุฉ ุงู„ู†ุงุชุฌุŒ ู…ุน ุจุฏุงูŠุฉ ุชู†ููŠุฐ ุฏูˆุงู„ ุงู„ู…ูƒุฏุณ.
801
+
802
+
803
+ ================================================================================
804
+ PAGE 13 - page_0013.png
805
+ ================================================================================
806
+
807
+ ------------TEXT EXTRACTED------------
808
+ ITGS 220
809
+ Dr. Amna Ali A Mohamedย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย Fall 2025
810
+
811
+ // Pop operation
812
+ void pop(Stack *s, char *str) {
813
+ ย ย ย ย if (isEmpty(s)) {
814
+ ย ย ย ย ย ย ย ย printf("Stack Underflow\n");
815
+ ย ย ย ย ย ย ย ย str[0] = '\0';
816
+ ย ย ย ย ย ย ย ย return;
817
+ ย ย ย ย }
818
+ ย ย ย ย strcpy(str, s->data[s->top--]);
819
+ }
820
+
821
+ // Function to convert postfix to infix
822
+ void postfixToInfix(char *postfix, char *infix) {
823
+ ย ย ย ย Stack s;
824
+ ย ย ย ย initStack(&s);
825
+ ย ย ย ย char temp[MAX], op1[MAX], op2[MAX];
826
+
827
+ ย ย ย ย for (int i = 0; postfix[i] != '\0'; i++) {
828
+ ย ย ย ย ย ย ย ย char ch = postfix[i];
829
+
830
+ ย ย ๏ฟฝ๏ฟฝย ย ย ย ย // If operand, push to stack
831
+ ย ย ย ย ย ย ย ย if (isalnum(ch)) {
832
+ ย ย ย ย ย ย ย ย ย ย ย ย temp[0] = ch;
833
+ ย ย ย ย ย ย ย ย ย ย ย ย temp[1] = '\0';
834
+ ย ย ย ย ย ย ย ย ย ย ย ย push(&s, temp);
835
+ ย ย ย ย ย ย ย ย }
836
+ ย ย ย ย ย ย ย ย // If operator, pop two operands and combine with operator
837
+ ย ย ย ย ย ย ย ย else {
838
+ ย ย ย ย ย ย ย ย ย ย ย ย pop(&s, op2);
839
+ ย ย ย ย ย ย ย ย ย ย ย ย pop(&s, op1);
840
+
841
+ ย ย ย ย ย ย ย ย ย ย ย ย // Format the expression with parentheses
842
+ ย ย ย ย ย ย ย ย ย ย ย ย sprintf(temp, "(%s%c%s)", op1, ch, op2);
843
+ ย ย ย ย ย ย ย ย ย ย ย ย push(&s, temp);
844
+ ย ย ย ย ย ย ย ย }
845
+ ย ย ย ย }
846
+
847
+ ย ย ย ย // The final infix expression is at the top of stack
848
+ ย ย ย ย pop(&s, infix);
849
+ }
850
+
851
+ 1.4.7ย ย Conversion from prefix to infix:
852
+
853
+ Procedure to convert prefix expression to infix expression is as follows:
854
+
855
+ 1.ย ย Scan the prefix expression from right to left (reverse order).
856
+
857
+ 2.ย ย If the scanned symbol is an operand, then push it onto the stack.
858
+
859
+ 3.ย ย If the scanned symbol is an operator, pop two symbols from the stack and create
860
+ ย ย ย ย it as a string by placing the operator in between the operands and push it onto
861
+ ย ย ย ย the stack.
862
+
863
+ 4.ย ย Repeat steps 2 and 3 till the end of the expression.
864
+
865
+ Example:
866
+
867
+ Convert the following prefix expression + A * - * B C * / D ^ E F G H into its equivalent
868
+ infix expression.
869
+
870
+ 13
871
+
872
+ ------------PAGE TALK ABOUT------------
873
+ ุงู„ุตูุญุฉ ุชุดุฑุญ ุชุญูˆูŠู„ ุงู„ุชุนุงุจูŠุฑ ุจุงุณุชุฎุฏุงู… ุงู„ู…ูƒุฏุณ (Stack)ุŒ ูˆุชุนุฑุถ ูƒูˆุฏ ุจู„ุบุฉ C ู„ุนู…ู„ูŠุฉ `pop` ูˆุฏุงู„ุฉ ุชุญูˆูŠู„ ุงู„ุชุนุจูŠุฑ ู…ู† postfix ุฅู„ู‰ infix.
874
+ ุจุนุฏ ุฐู„ูƒ ุชุจุฏุฃ ูู‚ุฑุฉ ุฌุฏูŠุฏุฉ ุจุนู†ูˆุงู† **Conversion from prefix to infix** ูˆุชูˆุถุญ ุฎุทูˆุงุช ุงู„ุชุญูˆูŠู„ ู…ู† prefix ุฅู„ู‰ infix ุฎุทูˆุฉ ุจุฎุทูˆุฉ.
875
+ ูƒู…ุง ุชุญุชูˆูŠ ุงู„ุตูุญุฉ ุนู„ู‰ ู…ุซุงู„ ู„ุชุนุจูŠุฑ prefix ู…ุทู„ูˆุจ ุชุญูˆูŠู„ู‡ ุฅู„ู‰ infix.
876
+ ุจุตุฑูŠู‹ุงุŒ ุงู„ุตูุญุฉ ุนุจุงุฑุฉ ุนู† ู…ู„ุงุญุธุงุช/ุดุฑูŠุญุฉ ุฏุฑุงุณูŠุฉ ู†ุตูŠุฉ ูู‚ุท ุจุฏูˆู† ุตูˆุฑ ุฃูˆ ู…ุฎุทุทุงุชุŒ ู…ุน ุนู†ูˆุงู† ุงู„ู…ู‚ุฑุฑ ูˆุงุณู… ุงู„ุฏูƒุชูˆุฑุฉ ูˆุงู„ูุตู„ ุงู„ุฏุฑุงุณูŠ ูˆุฑู‚ู… ุงู„ุตูุญุฉ.
877
+
878
+
879
+ ================================================================================
880
+ PAGE 14 - page_0014.png
881
+ ================================================================================
882
+
883
+ ------------TEXT EXTRACTED------------
884
+ ITGS 220
885
+ Dr. Amna Ali A Mohamedย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย Fall 2025
886
+
887
+ Symbolย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย Stackย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย Remarks
888
+
889
+ Hย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย Hย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย Push H
890
+
891
+ Gย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย Hย ย Gย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย Push G
892
+
893
+ Fย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย Hย ย Gย ย Fย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย Push F
894
+
895
+ Eย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย Hย ย Gย ย Fย ย Eย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย Push E
896
+
897
+ ^ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย Hย ย Gย ย (E^F)ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย Pop two operands and place the operator
898
+ ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย in between the operands and push the
899
+ ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย string.
900
+
901
+ Dย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย Hย ย Gย ย (E^F)ย ย Dย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย Push D
902
+
903
+ /ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย Hย ย Gย ย (D/(E^F))ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย Pop two operands and place the operator
904
+ ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย in between the operands and push the
905
+ ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย string.
906
+
907
+ *ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย Hย ย ((D/(E^F))*G)ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย Pop two operands and place the operator
908
+ ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย in between the operands and push the
909
+ ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย string.
910
+
911
+ Cย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย Hย ย ((D/(E^F))*G)ย ย Cย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย Push C
912
+
913
+ Bย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย Hย ย ((D/(E^F))*G)ย ย Cย ย Bย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย Push B
914
+
915
+ *ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย Hย ย ((D/(E^F))*G)ย ย (B*C)ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย Pop two operands and place the operator
916
+ ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย in front the operands and push the
917
+ ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย string.
918
+
919
+ -ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย Hย ย ((B*C)-((D/(E^F))*G))ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย Pop two operands and place the operator
920
+ ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย in front the operands and push the
921
+
922
+ 14
923
+
924
+ ------------PAGE TALK ABOUT------------
925
+ ุงู„ุตูุญุฉ ุชุดุฑุญ ุงุณุชุฎุฏุงู… ุงู„ู…ูƒุฏุณ (Stack) ู„ู…ุนุงู„ุฌุฉ ุชุนุจูŠุฑ ุฑูŠุงุถูŠ ุฑู…ุฒูŠ ุฎุทูˆุฉ ุจุฎุทูˆุฉ.
926
+ ูŠูˆุฌุฏ ุฌุฏูˆู„ ุจุซู„ุงุซุฉ ุฃุนู…ุฏุฉ: ุงู„ุฑู…ุฒุŒ ุญุงู„ุฉ ุงู„ู…ูƒุฏุณุŒ ูˆุงู„ู…ู„ุงุญุธุงุชุŒ ูˆูŠุจูŠู† ู…ุชู‰ ูŠุชู… ุฏูุน ุงู„ุนู†ุงุตุฑ ู…ุซู„ H ูˆG ูˆF ูˆE ุฅู„ู‰ ุงู„ู…ูƒุฏุณ.
927
+ ูƒู…ุง ูŠูˆุถุญ ูƒูŠู ูŠุชู… ุณุญุจ ู…ุนุงู…ู„ูŠู† ุนู†ุฏ ุธู‡ูˆุฑ ุนุงู…ู„ ู…ุซู„ ^ ุฃูˆ / ุฃูˆ * ุฃูˆ - ุซู… ุชูƒูˆูŠู† ุชุนุจูŠุฑ ุฌุฏูŠุฏ ู…ุซู„ (E^F) ูˆ(D/(E^F)).
928
+ ุจุตุฑูŠู‹ุงุŒ ุชูˆุฌุฏ ุฑุณูˆู…ุงุช ุตู†ุงุฏูŠู‚ ุชู…ุซู„ ุฎู„ุงูŠุง ุงู„ู…ูƒุฏุณ ููŠ ูƒู„ ุฎุทูˆุฉุŒ ู…ุน ุนุฑุถ ู…ุญุชูˆู‰ ุงู„ู…ูƒุฏุณ ุจุนุฏ ูƒู„ ุนู…ู„ูŠุฉ.
929
+
930
+
931
+ ================================================================================
932
+ PAGE 15 - page_0015.png
933
+ ================================================================================
934
+
935
+ ------------TEXT EXTRACTED------------
936
+ ITGS 220
937
+ Dr. Amna Ali A Mohamedย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย Fall 2025
938
+
939
+ string.
940
+
941
+ *
942
+ (((B*C)-((D)/(E^F))*G))*H)
943
+
944
+ Pop two operands and place the operator
945
+ in front the operands and push the
946
+ string.
947
+
948
+ A
949
+ (((B*C)-((D)/(E^F))*G))*H)ย ย ย ย A
950
+
951
+ Push A
952
+
953
+ +
954
+ (A+((((B*C)-((D)/(E^F))*G))*H))
955
+
956
+ Pop two operands and place the operator
957
+ in front the operands and push the
958
+ string.
959
+
960
+ End of
961
+ string
962
+
963
+ The input is now empty. The string formed is infix.
964
+
965
+ 1.4.8 Program to convert prefix to infix expression:
966
+
967
+ #include <stdio.h>
968
+ #include <stdlib.h>
969
+ #include <string.h>
970
+ #include <ctype.h>
971
+
972
+ #define MAX 100
973
+
974
+ // Stack structure to hold strings
975
+ typedef struct {
976
+ char data[MAX][MAX];
977
+ int top;
978
+ } Stack;
979
+
980
+ // Function prototypes
981
+ void initStack(Stack *s);
982
+ int isFull(Stack *s);
983
+ int isEmpty(Stack *s);
984
+ void push(Stack *s, char *str);
985
+ void pop(Stack *s, char *str);
986
+ void prefixToInfix(char *prefix, char *infix);
987
+ void reverseString(char *str);
988
+
989
+ int main() {
990
+ char prefix[MAX], infix[MAX];
991
+
992
+ printf("Enter prefix expression: ");
993
+ fgets(prefix, MAX, stdin);
994
+ prefix[strlen(prefix)-1] = '\0'; // Remove newline character
995
+
996
+ prefixToInfix(prefix, infix);
997
+ printf("Infix expression: %s\n", infix);
998
+
999
+ return 0;
1000
+ }
1001
+
1002
+ // Initialize stack
1003
+ void initStack(Stack *s) {
1004
+ s->top = -1;
1005
+ }
1006
+
1007
+ // Check if stack is full
1008
+ int isFull(Stack *s) {
1009
+ return s->top == MAX - 1;
1010
+ }
1011
+
1012
+ 15
1013
+
1014
+ ------------PAGE TALK ABOUT------------
1015
+ ุงู„ุตูุญุฉ ุชุดุฑุญ ุชุญูˆูŠู„ ุงู„ุชุนุจูŠุฑ ู…ู† **Prefix ุฅู„ู‰ Infix** ุจุงุณุชุฎุฏุงู… **Stack**.
1016
+ ููŠ ุงู„ุฃุนู„ู‰ ูŠูˆุฌุฏ ู…ุฎุทุท ุชุชุจู‘ุน ูŠูˆุถุญ ุฎุทูˆุงุช ุฅุฏุฎุงู„ ุงู„ุฑู…ูˆุฒ ุฅู„ู‰ ุงู„ู…ูƒุฏุณ ุซู… ุนู†ุฏ ุธู‡ูˆุฑ ุนุงู…ู„ ูŠุชู… ุณุญุจ ู…ุนุงู…ู„ูŠู† ูˆุชูƒูˆูŠู† ุชุนุจูŠุฑ infix ู…ุซู„: `(A+((((B*C)-((D)/(E^F))*G))*H))`.
1017
+ ููŠ ุงู„ุฃุณูู„ ูŠูˆุฌุฏ ุจุฏุงูŠุฉ ุจุฑู†ุงู…ุฌ ุจู„ุบุฉ **C** ูŠุนุฑู‘ู ุงู„ู…ูƒุฏุณุŒ ูˆุงู„ุฏูˆุงู„ ุงู„ุฃุณุงุณูŠุฉ ู…ุซู„ `push` ูˆ`pop` ูˆ`prefixToInfix`ุŒ ู…ุน ุฌุฒุก ู…ู† `main` ู„ู‚ุฑุงุกุฉ ุงู„ุชุนุจูŠุฑ ูˆุทุจุงุนุฉ ุงู„ู†ุงุชุฌ.
1018
+ ูƒู…ุง ุชุธู‡ุฑ ุนู†ุงุตุฑ ุชู†ุณูŠู‚ูŠุฉ ู„ู„ุตูุญุฉ ู…ุซู„ ุนู†ูˆุงู† ุงู„ู…ู‚ุฑุฑุŒ ุงุณู… ุงู„ุฏูƒุชูˆุฑุฉุŒ ุงู„ูุตู„ ุงู„ุฏุฑุงุณูŠุŒ ูˆุฑู‚ู… ุงู„ุตูุญุฉ.
1019
+
1020
+
1021
+ ================================================================================
1022
+ PAGE 16 - page_0016.png
1023
+ ================================================================================
1024
+
1025
+ ------------TEXT EXTRACTED------------
1026
+ ITGS 220
1027
+ Dr. Amna Ali A Mohamedย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย Fall 2025
1028
+
1029
+ }
1030
+
1031
+ // Check if stack is empty
1032
+ int isEmpty(Stack *s) {
1033
+ ย ย ย ย return s->top == -1;
1034
+ }
1035
+
1036
+ // Push operation
1037
+ void push(Stack *s, char *str) {
1038
+ ย ย ย ย if (isFull(s)) {
1039
+ ย ย ย ย ย ย ย ๏ฟฝ๏ฟฝprintf("Stack Overflow\n");
1040
+ ย ย ย ย ย ย ย ย return;
1041
+ ย ย ย ย }
1042
+ ย ย ย ย strcpy(s->data[++s->top], str);
1043
+ }
1044
+
1045
+ // Pop operation
1046
+ void pop(Stack *s, char *str) {
1047
+ ย ย ย ย if (isEmpty(s)) {
1048
+ ย ย ย ย ย ย ย ย printf("Stack Underflow\n");
1049
+ ย ย ย ย ย ย ย ย str[0] = '\0';
1050
+ ย ย ย ย ย ย ย ย return;
1051
+ ย ย ย ย }
1052
+ ย ย ย ย strcpy(str, s->data[s->top--]);
1053
+ }
1054
+
1055
+ // Reverse a string
1056
+ void reverseString(char *str) {
1057
+ ย ย ย ย int n = strlen(str);
1058
+ ย ย ย ย for (int i = 0; i < n/2; i++) {
1059
+ ย ย ย ย ย ย ย ย char temp = str[i];
1060
+ ย ย ย ย ย ย ย ย str[i] = str[n-i-1];
1061
+ ย ย ย ย ย ย ย ย str[n-i-1] = temp;
1062
+ ย ย ย ย }
1063
+ }
1064
+
1065
+ // Function to convert prefix to infix
1066
+ void prefixToInfix(char *prefix, char *infix) {
1067
+ ย ย ย ย Stack s;
1068
+ ย ย ย ย initStack(&s);
1069
+ ย ย ย ย char temp[MAX], op1[MAX], op2[MAX];
1070
+
1071
+ ย ย ย ย // Reverse the prefix expression
1072
+ ย ย ย ย reverseString(prefix);
1073
+
1074
+ ย ย ย ย for (int i = 0; prefix[i] != '\0'; i++) {
1075
+ ย ย ย ย ย ย ย ย char ch = prefix[i];
1076
+
1077
+ ย ย ย ย ย ย ย ย // If operand, push to stack
1078
+ ย ย ย ย ย ย ย ย if (isalnum(ch)) {
1079
+ ย ย ย ย ย ย ย ย ย ย ย ย temp[0] = ch;
1080
+ ย ย ย ย ย ย ย ย ย ย ย ย temp[1] = '\0';
1081
+ ย ย ย ย ย ย ย ย ย ย ย ย push(&s, temp);
1082
+ ย ย ย ย ย ย ย ย }
1083
+ ย ย ย ย ย ย ย ย // If operator, pop two operands and combine with operator
1084
+ ย ย ย ย ย ย ย ย else {
1085
+ ย ย ย ย ย ย ย ย ย ย ย ย pop(&s, op1);
1086
+ ย ย ย ย ย ย ย ย ย ย ย ย pop(&s, op2);
1087
+
1088
+ ย ย ย ย ย ย ย ย ย ย ย ย // Format the expression with parentheses
1089
+ ย ย ย ย ย ย ย ย ย ย ย ย sprintf(temp, "(%s%c%s)", op1, ch, op2);
1090
+
1091
+ 16
1092
+
1093
+ ------------PAGE TALK ABOUT------------
1094
+ ุงู„ุตูุญุฉ ุชุนุฑุถ ุฌุฒุกู‹ุง ู…ู† ูƒูˆุฏ ุจู„ุบุฉ C ูŠุดุฑุญ ุงุณุชุฎุฏุงู… ุงู„ู…ูƒุฏุณ (Stack) ู„ุชุญูˆูŠู„ ุงู„ุชุนุจูŠุฑ ู…ู† Prefix ุฅู„ู‰ Infix.
1095
+ ุชุชุถู…ู† ุฏูˆุงู„ ูุญุต ุงู„ูุฑุงุบ isEmptyุŒ ูˆุงู„ุฅุถุงูุฉ pushุŒ ูˆุงู„ุญุฐู popุŒ ูˆุนูƒุณ ุงู„ู†ุต reverseString.
1096
+ ูƒู…ุง ุชุดุฑุญ ุจุฏุงูŠุฉ ุฏุงู„ุฉ prefixToInfix ุงู„ุชูŠ ุชุนูƒุณ ุงู„ุชุนุจูŠุฑ ุซู… ุชู…ุฑ ุนู„ู‰ ูƒู„ ุฑู…ุฒุ› ุฅุฐุง ูƒุงู† operand ูŠุชู… ุฏูุนู‡ ู„ู„ู…ูƒุฏุณุŒ ูˆุฅุฐุง ูƒุงู† operator ูŠุชู… ุณุญุจ ุนู†ุตุฑูŠู† ูˆุฏู…ุฌู‡ู…ุง ุฏุงุฎู„ ุฃู‚ูˆุงุณ.
1097
+ ูŠูˆุฌุฏ ุชู†ุณูŠู‚ ุฃูƒุงุฏูŠู…ูŠ ุฃุนู„ู‰ ุงู„ุตูุญุฉ ุจุงุณู… ุงู„ู…ู‚ุฑุฑ ITGS 220 ูˆุงุณู… ุงู„ุฏูƒุชูˆุฑุฉ ูˆุงู„ูุตู„ ุงู„ุฏุฑุงุณูŠุŒ ู…ุน ุฑู‚ู… ุงู„ุตูุญุฉ 16 ุฃุณูู„ ุงู„ูŠู…ูŠู†.
1098
+
1099
+
1100
+ ================================================================================
1101
+ PAGE 17 - page_0017.png
1102
+ ================================================================================
1103
+
1104
+ ------------TEXT EXTRACTED------------
1105
+ ITGS 220
1106
+ Dr. Amna Ali A Mohamed Fall 2025
1107
+
1108
+ push(&s, temp);
1109
+ }
1110
+ }
1111
+
1112
+ // The final infix expression is at the top of stack
1113
+ pop(&s, infix);
1114
+ }
1115
+
1116
+ 1.5 Evaluation of postfix expression:
1117
+
1118
+ The postfix expression is evaluated easily by the use of a stack. When a number is seen,
1119
+ it is pushed onto the stack; when an operator is seen, the operator is applied to the two
1120
+ numbers that are popped from the stack and the result is pushed onto the stack. When
1121
+ an expression is given in postfix notation, there is no need to know any precedence rules;
1122
+ this is our obvious advantage.
1123
+
1124
+ Example 1:
1125
+
1126
+ Evaluate the postfix expression: 6 5 2 3 + 8 * + 3 + *
1127
+
1128
+ SYMBOL OPERAND 1 OPERAND 2 VALUE STACK REMARKS
1129
+
1130
+ 6 6
1131
+ 5 6, 5
1132
+ 2 6, 5, 2
1133
+ 3 6, 5, 2, 3
1134
+ + 2 3 5 6, 5, 5 The first four symbols are placed on
1135
+ the stack.
1136
+ Next a โ€˜+โ€™ is read, so 3 and 2 are
1137
+ popped from the stack and their sum
1138
+ 5, is pushed
1139
+
1140
+ 17
1141
+
1142
+ ------------PAGE TALK ABOUT------------
1143
+ ุชุชุญุฏุซ ุงู„ุตูุญุฉ ุนู† ุชู‚ูŠูŠู… ุงู„ุชุนุจูŠุฑ ุงู„ู„ุงุญู‚ (Postfix Expression) ุจุงุณุชุฎุฏุงู… ุงู„ู…ูƒุฏุณ Stack.
1144
+ ุชุดุฑุญ ุงู„ููƒุฑุฉ: ุนู†ุฏ ู‚ุฑุงุกุฉ ุฑู‚ู… ูŠุชู… ุฏูุนู‡ ุฅู„ู‰ ุงู„ู…ูƒุฏุณุŒ ูˆุนู†ุฏ ู‚ุฑุงุกุฉ ุนุงู…ู„ ู…ุซู„ + ุฃูˆ * ูŠุชู… ุณุญุจ ุขุฎุฑ ุฑู‚ู…ูŠู† ูˆุฅุฌุฑุงุก ุงู„ุนู…ู„ูŠุฉ ุซู… ุฅุนุงุฏุฉ ุงู„ู†ุชูŠุฌุฉ ุฅู„ู‰ ุงู„ู…ูƒุฏุณ.
1145
+ ุชุญุชูˆูŠ ุงู„ุตูุญุฉ ุนู„ู‰ ู…ุซุงู„ ุนู…ู„ูŠ ู„ู„ุชุนุจูŠุฑ: 6 5 2 3 + 8 * + 3 + * ู…ุน ุฌุฏูˆู„ ูŠูˆุถุญ ูƒู„ ุฎุทูˆุฉ.
1146
+ ูŠูˆุฌุฏ ุฃูŠุถู‹ุง ุฌุฒุก ุตุบูŠุฑ ู…ู† ูƒูˆุฏ ุณุงุจู‚ ููŠ ุฃุนู„ู‰ ุงู„ุตูุญุฉุŒ ุจุงู„ุฅุถุงูุฉ ุฅู„ู‰ ุฌุฏูˆู„ ู…ู†ุธู… ุจุฃุนู…ุฏุฉ ู…ุซู„ ุงู„ุฑู…ุฒุŒ ุงู„ู…ุนุงู…ู„ุงุชุŒ ุงู„ู‚ูŠู…ุฉุŒ ุงู„ู…ูƒุฏุณุŒ ูˆุงู„ู…ู„ุงุญุธุงุช.
1147
+
1148
+
1149
+ ================================================================================
1150
+ PAGE 18 - page_0018.png
1151
+ ================================================================================
1152
+
1153
+ ------------TEXT EXTRACTED------------
1154
+ ITGS 220
1155
+ Dr. Amna Ali A Mohamedย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย Fall 2025
1156
+
1157
+ 8ย ย ย ย 2ย ย ย ย 3ย ย ย ย 5ย ย ย ย 6, 5, 5, 8ย ย ย ย Next 8 is pushed
1158
+ *ย ย ย ย 5ย ย ย ย 8ย ย ย ย 40ย ย ย ย 6, 5, 40ย ย ย ย Now a โ€˜*โ€™ is seen, so 8 and 5 are
1159
+ popped as 8 * 5 = 40 is pushed
1160
+ +ย ย ย ย 5ย ย ย ย 40ย ย ย ย 45ย ย ย ย 6, 45ย ย ย ย Next, a โ€˜+โ€™ is seen, so 40 and 5 are
1161
+ popped and 40 + 5 = 45 is pushed
1162
+ 3ย ย ย ย 5ย ย ย ย 40ย ย ย ย 45ย ย ย ย 6, 45, 3ย ย ย ย Now, 3 is pushed
1163
+ +ย ย ย ย 45ย ย ย ย 3ย ย ย ย 48ย ย ย ย 6, 48ย ย ย ย Next, โ€˜+โ€™ pops 3 and 45 and pushes
1164
+ 45 + 3 = 48 is pushed
1165
+ *ย ย ย ย 6ย ย ย ย 48ย ย ย ย 288ย ย ย ย 288ย ย ย ย Finally, a โ€˜*โ€™ is seen and 48 and 6
1166
+ are popped, the result 6 * 48 =
1167
+ 288 is pushed
1168
+
1169
+ Example 2:
1170
+
1171
+ Evaluate the following postfix expression: 6 2 3 + - 3 8 2 / + * 2 โ†‘ 3 +
1172
+
1173
+ SYMBOLย ย ย ย OPERAND 1ย ย ย ย OPERAND 2ย ย ย ย VALUEย ย ย ย STACK
1174
+ 6ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย 6
1175
+ 2ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย 6, 2
1176
+ 3ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย 6, 2, 3
1177
+ +ย ย ย ย ย ย ย ย ย 2ย ย ย ย ย ย ย ย ย ย ย ย ย 3ย ย ย ย ย ย ย ย ย ย ย ย 5ย ย ย ย ย ย ย ย 6, 5
1178
+ -ย ย ย ย ย ย ย ย ย 6ย ย ย ย ย ย ย ย ย ย ย ย ย 5ย ย ย ย ย ย ย ย ย ย ย ย 1ย ย ย ย ย ย ย ย 1
1179
+ 3ย ย ย ย ย ย ย ย ย 6ย ย ย ย ย ย ย ย ย ย ย ย ย 5ย ย ย ย ย ย ย ย ย ย ย ย 1ย ย ย ย ย ย ย ย 1, 3
1180
+ 8ย ย ย ย ย ย ย ย ย 6ย ย ย ย ย ย ย ย ย ย ย ย ย 5ย ย ย ย ย ย ย ย ย ย ย ย 1ย ย ย ย ย ย ย ย 1, 3, 8
1181
+ 2ย ย ย ย ย ย ย ย ย 6ย ย ย ย ย ย ย ย ย ย ย ย ย 5ย ย ย ย ย ย ย ย ย ย ย ย 1ย ย ย ย ย ย ย ย 1, 3, 8, 2
1182
+ /ย ย ย ย ย ย ย ย ย 8ย ย ย ย ย ย ย ย ย ย ย ย ย 2ย ย ย ย ย ย ย ย ย ย ย ย 4ย ย ย ย ย ย ย ย 1, 3, 4
1183
+ +ย ย ย ย ย ย ย ย ย 3ย ย ย ย ย ย ย ย ย ย ย ย ย 4ย ย ย ย ย ย ย ย ย ย ย ย 7ย ย ย ย ย ย ย ย 1, 7
1184
+ *ย ย ย ย ย ย ย ย ย 1ย ย ย ย ย ย ย ย ย ย ย ย ย 7ย ย ย ย ย ย ย ย ย ย ย ย 7ย ย ย ย ย ย ย ย 7
1185
+ 2ย ย ย ย ย ย ย ย ย 1ย ย ย ย ย ย ย ย ย ย ย ย ย 7ย ย ย ย ย ย ย ย ย ย ย ย 7ย ย ย ย ย ย ย ย 7, 2
1186
+ โ†‘ย ย ย ย ย ย ย ย ย 7ย ย ย ย ย ย ย ย ย ย ย ย ย 2ย ย ย ย ย ย ย ย ย ย ย ย 49ย ย ย ย ย ย ย 49
1187
+ 3ย ย ย ย ย ย ย ย ย 7ย ย ย ย ย ย ย ย ย ย ย ย ย 2ย ย ย ย ย ย ย ย ย ย ย ย 49ย ย ย ย ย ย ย 49, 3
1188
+ +ย ย ย ย ย ย ย ย ย 49ย ย ย ย ย ย ย ย ย ย ย ย 3ย ย ย ย ย ย ย ย ย ย ย ย 52ย ย ย ย ย ย ย 52
1189
+
1190
+ 1.5.1 Program to evaluate a postfix expression:
1191
+
1192
+ #include <stdio.h>
1193
+ #include <stdlib.h>
1194
+ #include <ctype.h>
1195
+ #include <math.h>
1196
+ #include <string.h>
1197
+
1198
+ 18
1199
+
1200
+ ------------PAGE TALK ABOUT------------
1201
+ ุชุชุญุฏุซ ุงู„ุตูุญุฉ ุนู† **ุชู‚ูŠูŠู… ุงู„ุชุนุจูŠุฑ postfix ุจุงุณุชุฎุฏุงู… ุงู„ู…ูƒุฏุณ (Stack)** ุฎุทูˆุฉ ุจุฎุทูˆุฉ.
1202
+ ุชุญุชูˆูŠ ุนู„ู‰ ู…ุซุงู„ ู…ุญู„ูˆู„ ูŠูˆุถุญ ูƒูŠู ูŠุชู… ุฏูุน ุงู„ุฃุฑู‚ุงู… ุฅู„ู‰ ุงู„ู…ูƒุฏุณ ุซู… ุชู†ููŠุฐ ุงู„ุนู…ู„ูŠุงุช ุงู„ุญุณุงุจูŠุฉ ุนู†ุฏ ุธู‡ูˆุฑ ุงู„ุฑู…ูˆุฒ ู…ุซู„ `+` ูˆ `*` ูˆ `/` ูˆ `โ†‘`.
1203
+ ูŠูˆุฌุฏ ุฌุฏูˆู„ ุฑุฆูŠุณูŠ ููŠ Example 2 ูŠุจูŠู† ุงู„ุฃุนู…ุฏุฉ: ุงู„ุฑู…ุฒุŒ ุงู„ู…ุนุงู…ู„ ุงู„ุฃูˆู„ุŒ ุงู„ู…ุนุงู…ู„ ุงู„ุซุงู†ูŠุŒ ุงู„ู‚ูŠู…ุฉุŒ ูˆุญุงู„ุฉ ุงู„ู…ูƒุฏุณ ุจุนุฏ ูƒู„ ุฎุทูˆุฉ ุญุชู‰ ุงู„ูˆุตูˆู„ ุฅู„ู‰ ุงู„ู†ุงุชุฌ ุงู„ู†ู‡ุงุฆูŠ **52**.
1204
+ ูƒู…ุง ุชุจุฏุฃ ุงู„ุตูุญุฉ ู‚ุณู…ู‹ุง ุฌุฏูŠุฏู‹ุง ุจุนู†ูˆุงู† **Program to evaluate a postfix expression** ูˆุชุนุฑุถ ุชุฑูˆูŠุณุงุช ู…ูƒุชุจุงุช ู„ุบุฉ C ุงู„ู„ุงุฒู…ุฉ ู„ูƒุชุงุจุฉ ุงู„ุจุฑู†ุงู…ุฌ.
1205
+
1206
+
1207
+ ================================================================================
1208
+ PAGE 19 - page_0019.png
1209
+ ================================================================================
1210
+
1211
+ ------------TEXT EXTRACTED------------
1212
+ ITGS 220
1213
+ Dr. Amna Ali A Mohamedย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย Fall 2025
1214
+
1215
+ ____________________________________________________________
1216
+ ____
1217
+
1218
+ #define MAX_SIZE 100
1219
+
1220
+ // Stack implementation
1221
+ double stack[MAX_SIZE];
1222
+ int top = -1;
1223
+
1224
+ // Function prototypes
1225
+ void push(double num);
1226
+ double pop();
1227
+ int isEmpty();
1228
+ int isOperator(char ch);
1229
+ double evaluatePostfix(char* expression);
1230
+
1231
+ int main() {
1232
+ ย ย ย ย char expression[MAX_SIZE];
1233
+
1234
+ ย ย ย ย printf("Enter postfix expression (numbers and operators separated by spaces):\n");
1235
+ ย ย ย ย printf("Example: 5 3 2 * + 4 -\n");
1236
+ ย ย ย ย fgets(expression, MAX_SIZE, stdin);
1237
+
1238
+ ย ย ย ย // Remove newline character if present
1239
+ ย ย ย ย if (expression[strlen(expression)-1] == '\n') {
1240
+ ย ย ย ย ย ย ย ย expression[strlen(expression)-1] = '\0';
1241
+ ย ย ย ย }
1242
+
1243
+ ย ย ย ย double result = evaluatePostfix(expression);
1244
+ ย ย ย ย printf("Result: %.2f\n", result);
1245
+
1246
+ ย ย ย ย return 0;
1247
+ }
1248
+
1249
+ // Push a number onto the stack
1250
+ void push(double num) {
1251
+ ย ย ย ย if (top >= MAX_SIZE - 1) {
1252
+ ย ย ย ย ย ย ย ย printf("Stack overflow!\n");
1253
+ ย ย ย ย ย ย ย ย exit(1);
1254
+ ย ย ย ย }
1255
+ ย ย ย ย stack[++top] = num;
1256
+ }
1257
+
1258
+ // Pop a number from the stack
1259
+ double pop() {
1260
+ ย ย ย ย if (top < 0) {
1261
+ ย ย ย ย ย ย ย ย printf("Stack underflow!\n");
1262
+ ย ย ย ย ย ย ย ย exit(1);
1263
+ ย ย ย ย }
1264
+ ย ย ย ย return stack[top--];
1265
+ }
1266
+
1267
+ // Check if stack is empty
1268
+ int isEmpty() {
1269
+ ย ย ย ย return top == -1;
1270
+ }
1271
+
1272
+ 19
1273
+
1274
+ ------------PAGE TALK ABOUT------------
1275
+ ุงู„ุตูุญุฉ ุชุนุฑุถ ุฌุฒุกู‹ุง ู…ู† ูƒูˆุฏ ุจู„ุบุฉ C ู„ุชู‚ูŠูŠู… ุงู„ุชุนุจูŠุฑ postfix ุจุงุณุชุฎุฏุงู… ุจู†ูŠุฉ ุงู„ุจูŠุงู†ุงุช Stack.
1276
+ ุชุชุถู…ู† ุชุนุฑูŠู ุญุฌู… ุงู„ู…ูƒุฏุณุŒ ูˆุงู„ู…ุตููˆูุฉ ุงู„ู…ุณุชุฎุฏู…ุฉ ู„ุชุฎุฒูŠู† ุงู„ู‚ูŠู…ุŒ ูˆุงู„ู…ุชุบูŠุฑ top ู„ุชุชุจุน ุฃุนู„ู‰ ุนู†ุตุฑ.
1277
+ ูƒู…ุง ุชุญุชูˆูŠ ุนู„ู‰ prototypes ู„ู„ุฏูˆุงู„ุŒ ูˆุฏุงู„ุฉ main ู„ู‚ุฑุงุกุฉ ุงู„ุชุนุจูŠุฑ ู…ู† ุงู„ู…ุณุชุฎุฏู… ุซู… ุญุณุงุจ ุงู„ู†ุชูŠุฌุฉ ูˆุทุจุงุนุชู‡ุง.
1278
+ ูˆูŠุธู‡ุฑ ุฃูŠุถู‹ุง ุชู†ููŠุฐ ุงู„ุฏูˆุงู„ ุงู„ุฃุณุงุณูŠุฉ ู„ู„ู…ูƒุฏุณ ู…ุซู„ push ูˆ pop ูˆ isEmpty ู…ุน ู…ุนุงู„ุฌุฉ ุญุงู„ุชูŠ overflow ูˆ underflow.
1279
+
1280
+
1281
+ ================================================================================
1282
+ PAGE 20 - page_0020.png
1283
+ ================================================================================
1284
+
1285
+ ------------TEXT EXTRACTED------------
1286
+ ITGS 220
1287
+ Dr. Amna Ali A Mohamedย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย Fall 2025
1288
+
1289
+ ____________________________________________________________________________
1290
+ ____
1291
+
1292
+ // Check if character is an operator
1293
+ int isOperator(char ch) {
1294
+ return ch == '+' || ch == '-' || ch == '*' || ch == '/' || ch == '^';
1295
+ }
1296
+
1297
+ // Evaluate postfix expression
1298
+ double evaluatePostfix(char* expression) {
1299
+ char* token = strtok(expression, " ");
1300
+
1301
+ while (token != NULL) {
1302
+ if (isdigit(token[0]) || (token[0] == '-' && isdigit(token[1]))) {
1303
+ // It's a number (including negative numbers)
1304
+ double num = atof(token);
1305
+ push(num);
1306
+ } else if (isOperator(token[0])) {
1307
+ // It's an operator
1308
+ double operand2 = pop();
1309
+ double operand1 = pop();
1310
+ double result;
1311
+
1312
+ switch (token[0]) {
1313
+ case '+':
1314
+ result = operand1 + operand2;
1315
+ break;
1316
+ case '-':
1317
+ result = operand1 - operand2;
1318
+ break;
1319
+ case '*':
1320
+ result = operand1 * operand2;
1321
+ break;
1322
+ case '/':
1323
+ if (operand2 == 0) {
1324
+ printf("Error: Division by zero\n");
1325
+ exit(1);
1326
+ }
1327
+ result = operand1 / operand2;
1328
+ break;
1329
+ case '^':
1330
+ result = pow(operand1, operand2);
1331
+ break;
1332
+ default:
1333
+ printf("Error: Unknown operator '%c'\n", token[0]);
1334
+ exit(1);
1335
+ }
1336
+ push(result);
1337
+ } else {
1338
+ printf("Error: Invalid token '%s'\n", token);
1339
+ exit(1);
1340
+ }
1341
+
1342
+ token = strtok(NULL, " ");
1343
+ }
1344
+
1345
+ if (top != 0) {
1346
+
1347
+ 20
1348
+
1349
+ ------------PAGE TALK ABOUT------------
1350
+ ุงู„ุตูุญุฉ ุชุนุฑุถ ุฌุฒุกู‹ุง ู…ู† ูƒูˆุฏ ุจู„ุบุฉ C ู„ุชู‚ูŠูŠู… ุงู„ุชุนุจูŠุฑ ุงู„ู„ุงุญู‚ Postfix Expression ุจุงุณุชุฎุฏุงู… ุงู„ู…ูƒุฏุณ Stack.
1351
+ ูŠูˆุฌุฏ ุฏุงู„ุฉ isOperator ู„ู„ุชุญู‚ู‚ ู‡ู„ ุงู„ุญุฑู ุนุงู…ู„ ุญุณุงุจูŠ ู…ุซู„ + ูˆ- ูˆ* ูˆ/ ูˆ^.
1352
+ ุซู… ุฏุงู„ุฉ evaluatePostfix ุชู‚ุฑุฃ ุงู„ุฑู…ูˆุฒ token ูˆุงุญุฏู‹ุง ูˆุงุญุฏู‹ุงุŒ ูˆุชุชุนุงู…ู„ ู…ุน ุงู„ุฃุฑู‚ุงู… ุงู„ุณุงู„ุจุฉ ูˆุงู„ุนู…ู„ูŠุงุช ุงู„ุญุณุงุจูŠุฉ ุงู„ู…ุฎุชู„ูุฉ.
1353
+ ูƒู…ุง ุชุชุถู…ู† ู…ุนุงู„ุฌุฉ ุฃุฎุทุงุก ู…ุซู„ ุงู„ู‚ุณู…ุฉ ุนู„ู‰ ุตูุฑุŒ ุฃูˆ ูˆุฌูˆุฏ ุนุงู…ู„ ุบูŠุฑ ู…ุนุฑูˆูุŒ ุฃูˆ ุฑู…ุฒ ุบูŠุฑ ุตุงู„ุญ.
1354
+ ุงู„ุนู†ุงุตุฑ ุงู„ุจุตุฑูŠุฉ ุนุจุงุฑุฉ ุนู† ุตูุญุฉ ู…ุญุงุถุฑุฉ ุฃูƒุงุฏูŠู…ูŠุฉ ููŠู‡ุง ุนู†ูˆุงู† ุงู„ู…ู‚ุฑุฑ ูˆุงุณู… ุงู„ุฏูƒุชูˆุฑุฉ ูˆุงู„ูุตู„ ุงู„ุฏุฑุงุณูŠ ูˆุฑู‚ู… ุงู„ุตูุญุฉ ูู‚ุทุŒ ุจุฏูˆู† ุตูˆุฑ ุฃูˆ ู…ุฎุทุทุงุช.
1355
+
1356
+
1357
+ ================================================================================
1358
+ PAGE 21 - page_0021.png
1359
+ ================================================================================
1360
+
1361
+ ------------TEXT EXTRACTED------------
1362
+ ITGS 220
1363
+ Dr. Amna Ali A Mohamed Fall 2025
1364
+
1365
+ ____________________________________________________________
1366
+ ____
1367
+
1368
+ printf("Error: Invalid expression format\n");
1369
+ exit(1);
1370
+ }
1371
+
1372
+ return pop();
1373
+
1374
+ }
1375
+
1376
+ 21
1377
+
1378
+ ------------PAGE TALK ABOUT------------
1379
+ ุชูˆุถุญ ุงู„ุตูุญุฉ ุฌุฒุกู‹ุง ู…ู† ูƒูˆุฏ ุจู„ุบุฉ C ู„ู…ุนุงู„ุฌุฉ ุงู„ุฃุฎุทุงุก ููŠ ุชู†ุณูŠู‚ ุงู„ุชุนุจูŠุฑ.
1380
+ ูŠุธู‡ุฑ ููŠู‡ุง ุทุจุงุนุฉ ุฑุณุงู„ุฉ ุฎุทุฃ: "Invalid expression format" ุซู… ุฅู†ู‡ุงุก ุงู„ุจุฑู†ุงู…ุฌ ุจุงุณุชุฎุฏุงู… `exit(1)`.
1381
+ ุจุนุฏ ุฐู„ูƒ ูŠุนูŠุฏ ุงู„ุจุฑู†ุงู…ุฌ ู‚ูŠู…ุฉ ู…ู† ุงู„ู…ูƒุฏุณ ุจุงุณุชุฎุฏุงู… `return pop();`.
1382
+ ุจุตุฑูŠู‹ุงุŒ ุงู„ุตูุญุฉ ุชุญุชูˆูŠ ุนู„ู‰ ุชุฑูˆูŠุณุฉ ุงู„ู…ู‚ุฑุฑ ูˆุงุณู… ุงู„ุฏูƒุชูˆุฑุฉ ูˆุงู„ูุตู„ ุงู„ุฏุฑุงุณูŠุŒ ู…ุน ุฑู‚ู… ุงู„ุตูุญุฉ 21 ุฃุณูู„ ุงู„ูŠู…ูŠู†.
data_structure/p6.txt ADDED
@@ -0,0 +1,802 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ "ุฃู†ุช ู…ุฏุฑุณ ุฎุจูŠุฑ ูˆู…ุญุชุฑู ููŠ ู…ุงุฏุฉ ุชุฑุงูƒูŠุจ ุจูŠุงู†ุงุช. ุฃู†ุช ุชุฏุฑู‘ุณ ุทุงู„ุจุงู‹ ูˆุชุณุงุนุฏู‡ ุนู„ู‰ ุงู„ูู‡ู….
2
+
3
+ === ู…ุญุชูˆู‰ ุงู„ูุตู„ (ุงู„ู…ุฑุฌุน ุงู„ุนู„ู…ูŠ) ===
4
+
5
+ === ู†ู‡ุงูŠุฉ ุงู„ุณูŠุงู‚ ===
6
+
7
+ **ุชุนู„ูŠู…ุงุช ู…ู‡ู…ุฉ:**
8
+ - ุงุณุชุฎุฏู… ุงู„ู…ุญุชูˆู‰ ุงู„ุนู„ู…ูŠ ุฃุนู„ุงู‡ ูƒู…ุฑุฌุน ุฃุณุงุณูŠ ู„ู„ุฅุฌุงุจุฉ
9
+ - ุฑุงุนู ุณูŠุงู‚ ุงู„ู…ุญุงุฏุซุฉ ุงู„ุณุงุจู‚ุฉ ูˆุงู„ู…ุณุชูˆู‰ ุงู„ุชุนู„ูŠู…ูŠ ู„ู„ุทุงู„ุจ
10
+ - ุฃุฌุจ ุจุดูƒู„ ูˆุงุถุญ ูˆู…ูุตู„ ุจุงู„ู„ุบุฉ ุงู„ุนุฑุจูŠุฉ
11
+ - ุงุณุชุฎุฏู… ุงู„ุฃู…ุซู„ุฉ ูˆุงู„ุชูˆุถูŠุญุงุช ุนู†ุฏ ุงู„ุญุงุฌุฉ
12
+ - ุฅุฐุง ุณุฃู„ ุงู„ุทุงู„ุจ ุนู† ุดูŠุก ุฎุงุฑุฌ ุงู„ู…ุญุชูˆู‰ ุงู„ู…ุชูˆูุฑุŒ ุฃุฎุจุฑู‡ ุจุฐู„ูƒ ุจู„ุทู
13
+
14
+
15
+ ================================================================================
16
+ SUBJECT: L6_Queue_20260417_203720
17
+ TOTAL PAGES: 11
18
+ EXTRACTED ON: 2026-04-17 19:59:23
19
+ ================================================================================
20
+
21
+
22
+ ================================================================================
23
+ PAGE 1 - page_0001.png
24
+ ================================================================================
25
+
26
+ ------------TEXT EXTRACTED------------
27
+ ITGS 220
28
+ Dr. Amna Ali A Mohamedย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย Fall 2025
29
+
30
+ Queue
31
+
32
+ A queue is another special kind of list, where items are inserted at one end called the
33
+ rear and deleted at the other end called the front. Another name for a queue is a โ€œFIFOโ€
34
+ or โ€œFirst-in-first-outโ€ list.
35
+
36
+ The operations for a queue are analogues to those for a stack, the difference is that the
37
+ insertions go at the end of the list, rather than the beginning. We are using the following
38
+ operations on queues:
39
+
40
+ โ€ขย ย ย ย ย ย ย ย enqueue: which inserts an element at the end of the queue.
41
+ โ€ขย ย ย ย ย ย ย ย dequeue: which deletes an element at the start of the queue.
42
+
43
+ 1.ย ย Representation of Queue:
44
+
45
+ Let us consider a queue, which can hold maximum of five elements. Initially the queue
46
+ is empty.
47
+
48
+ 0ย ย ย ย ย 1ย ย ย ย ย 2ย ย ย ย ย 3ย ย ย ย ย 4
49
+
50
+ Queue Empty
51
+ FRONT = REAR = 0
52
+
53
+ Fย R
54
+
55
+ Now, insert 11 to the queue. Then queue status will be:
56
+
57
+ 0ย ย ย ย ย 1ย ย ย ย ย 2ย ย ย ย ย 3ย ย ย ย ย 4
58
+
59
+ 11
60
+
61
+ REAR = REAR + 1 = 1
62
+ FRONT = 0
63
+
64
+ Fย ย ย ย ย R
65
+
66
+ Next, insert 22 to the queue. Then the queue status is:
67
+
68
+ 0ย ย ย ย ย 1ย ย ย ย ย 2ย ย ย ย ย 3ย ย ย ย ย 4
69
+
70
+ 11ย ย ย ย ย 22
71
+
72
+ REAR = REAR + 1 = 2
73
+ FRONT = 0
74
+
75
+ Fย ย ย ย ย R
76
+
77
+ Again insert another element 33 to the queue. The status of the queue is:
78
+
79
+ 0ย ย ย ย ย 1ย ย ย ย ย 2ย ย ย ย ย 3ย ย ย ย ย 4
80
+
81
+ 11ย ย ย ย ย 22ย ย ย ย ย 33
82
+
83
+ REAR = REAR + 1 = 3
84
+ FRONT = 0
85
+
86
+ Fย ย ย ย ย R
87
+
88
+ 1
89
+
90
+ ------------PAGE TALK ABOUT------------
91
+ ุงู„ุตูุญุฉ ุชุดุฑุญ ุจู†ูŠุฉ ุงู„ุจูŠุงู†ุงุช Queue ูˆูƒูŠู ุชุนู…ู„ ุจู…ุจุฏุฃ FIFO ุฃูŠ ุฃูˆู„ ุฏุงุฎู„ ุฃูˆู„ ุฎุงุฑุฌ.
92
+ ุชูˆุถุญ ุนู…ู„ูŠุชูŠ enqueue ู„ู„ุฅุฏุฎุงู„ ู…ู† ุงู„ุฎู„ู rear ูˆdequeue ู„ู„ุญุฐู ู…ู† ุงู„ุฃู…ุงู… front.
93
+ ูŠูˆุฌุฏ ุชู…ุซูŠู„ ุจุตุฑูŠ ู„ุทุงุจูˆุฑ ุณุนุชู‡ 5 ุฎุงู†ุงุช ู…ุฑู‚ู…ุฉ ู…ู† 0 ุฅู„ู‰ 4ุŒ ู…ุน ุชุชุจุน ู…ูˆู‚ุนูŠ FRONT ูˆREAR.
94
+ ูƒู…ุง ุชุนุฑุถ ุฃู…ุซู„ุฉ ู…ุชุชุงุจุนุฉ ู„ุฅุฏุฎุงู„ ุงู„ุนู†ุงุตุฑ 11 ุซู… 22 ุซู… 33ุŒ ู…ุน ุชุญุฏูŠุซ ู‚ูŠู…ุฉ REAR ูˆุจู‚ุงุก FRONT ุนู†ุฏ 0.
95
+
96
+
97
+ ================================================================================
98
+ PAGE 2 - page_0002.png
99
+ ================================================================================
100
+
101
+ ------------TEXT EXTRACTED------------
102
+ ITGS 220
103
+ Dr. Amna Ali A Mohamedย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย Fall 2025
104
+
105
+ Now, delete an element. The element deleted is the element at the front of the queue.
106
+ So the status of the queue is:
107
+
108
+ 0ย ย ย 1ย ย ย 2ย ย ย 3ย ย ย 4
109
+ 22ย ย ย 33
110
+
111
+ Fย ย ย ย ย ย ย ย ย ย ย ย ย R
112
+
113
+ REAR = 3
114
+ FRONT = FRONT + 1 = 1
115
+
116
+ Again, delete an element. The element to be deleted is always pointed to by the FRONT
117
+ pointer. So, 22 is deleted. The queue status is as follows:
118
+
119
+ 0ย ย ย 1ย ย ย 2ย ย ย 3ย ย ย 4
120
+ 33
121
+
122
+ Fย ย ย ย ย ย ย ย ย ย ย ย ย R
123
+
124
+ REAR = 3
125
+ FRONT = FRONT + 1 = 2
126
+
127
+ Now, insert new elements 44 and 55 into the queue. The queue status is:
128
+
129
+ 0ย ย ย 1ย ย ย 2ย ย ย 3ย ย ย 4
130
+ 33ย ย ย 44ย ย ย 55
131
+
132
+ Fย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย R
133
+
134
+ REAR = 5
135
+ FRONT = 2
136
+
137
+ Next insert another element, say 66 to the queue. We cannot insert 66 to the queue as
138
+ the rear crossed the maximum size of the queue (i.e., 5). There will be queue full signal.
139
+ The queue status is as follows:
140
+
141
+ 0ย ย ย 1ย ย ย 2ย ย ย 3ย ย ย 4
142
+ 33ย ย ย 44ย ย ย 55
143
+
144
+ Fย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย R
145
+
146
+ REAR = 5
147
+ FRONT = 2
148
+
149
+ Now it is not possible to insert an element 66 even though there are two vacant positions
150
+ in the linear queue. To over come this problem the elements of the queue are to be
151
+ shifted towards the beginning of the queue so that it creates vacant position at the rear
152
+ end. Then the FRONT and REAR are to be adjusted properly. The element 66 can be
153
+ inserted at the rear end. After this operation, the queue status is as follows:
154
+
155
+ 0ย ย ย 1ย ย ย 2ย ย ย 3ย ย ย 4
156
+ 33ย ย ย 44ย ย ย 55ย ย ย 66
157
+
158
+ Fย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย R
159
+
160
+ REAR = 4
161
+ FRONT = 0
162
+
163
+ This difficulty can overcome if we treat queue position with index 0 as a position that
164
+ comes after position with index 4 i.e., we treat the queue as a circular queue.
165
+
166
+ 2
167
+
168
+ ------------PAGE TALK ABOUT------------
169
+ ุงู„ุตูุญุฉ ุชุดุฑุญ ุนู…ู„ูŠุงุช ุงู„ุญุฐู ูˆุงู„ุฅุฏุฎุงู„ ููŠ **ุงู„ู€ linear queue** ุจุงุณุชุฎุฏุงู… ู…ุคุดุฑูŠ **FRONT** ูˆ **REAR**.
170
+ ุชูˆุถุญ ุจุงู„ุฑุณูˆู… ูƒูŠู ูŠุชู… ุญุฐู ุงู„ุนู†ุงุตุฑ ู…ู† ุงู„ู…ู‚ุฏู…ุฉุŒ ุซู… ุฅุฏุฎุงู„ ุนู†ุงุตุฑ ุฌุฏูŠุฏุฉ ุญุชู‰ ูŠุตู„ **REAR** ุฅู„ู‰ ุงู„ุญุฏ ุงู„ุฃู‚ุตู‰ ูˆุชุธู‡ุฑ ู…ุดูƒู„ุฉ ุงู„ุงู…ุชู„ุงุก ุฑุบู… ูˆุฌูˆุฏ ูุฑุงุบุงุช ููŠ ุงู„ุจุฏุงูŠุฉ.
171
+ ูƒู…ุง ุชุนุฑุถ ุญู„ุงู‹ ู…ุคู‚ุชู‹ุง ูˆู‡ูˆ **ุฅุฒุงุญุฉ ุงู„ุนู†ุงุตุฑ ู†ุญูˆ ุงู„ุจุฏุงูŠุฉ** ุซู… ุชุนุฏูŠู„ FRONT ูˆ REAR ู„ุฅุฏุฎุงู„ ุงู„ุนู†ุตุฑ 66.
172
+ ูˆููŠ ุงู„ู†ู‡ุงูŠุฉ ุชู…ู‡ู‘ุฏ ู„ููƒุฑุฉ **ุงู„ู€ circular queue** ุจุงุนุชุจุงุฑ ุฃู† ุงู„ู…ูˆู‚ุน 0 ูŠุฃุชูŠ ุจุนุฏ ุงู„ู…ูˆู‚ุน 4 ู„ุชุฌู†ุจ ู‡ุฐู‡ ุงู„ู…ุดูƒู„ุฉ.
173
+
174
+
175
+ ================================================================================
176
+ PAGE 3 - page_0003.png
177
+ ================================================================================
178
+
179
+ ------------TEXT EXTRACTED------------
180
+ ITGS 220
181
+ Dr. Amna Ali A Mohamedย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย Fall 2025
182
+
183
+ 1.2.ย ย ย ย Source code for Queue operations using array:
184
+
185
+ In order to create a queue we require a one dimensional array Q(1:n) and two variables
186
+ front and rear. The conventions we shall adopt for these two variables are that front is
187
+ always 1 less than the actual front of the queue and rear always points to the last element
188
+ in the queue. Thus, front = rear if and only if there are no elements in the queue. The
189
+ initial condition then is front = rear = 0. The various queue operations to perform
190
+ creation, deletion and display the elements in a queue are as follows:
191
+
192
+ 1.ย ย ย ย ย ย ย ย insertQ(): inserts an element at the end of queue Q.
193
+ 2.ย ย ย ย ย ย ย ย deleteQ(): deletes the first element of Q.
194
+ 3.ย ย ย ย ย ย ย ย displayQ(): displays the elements in the queue.
195
+
196
+ #include <stdio.h>
197
+ #include <stdlib.h>
198
+
199
+ #define MAX_SIZE 6
200
+
201
+ int queue[MAX_SIZE];
202
+ int front = 0;
203
+ int rear = 0;
204
+
205
+ // Function prototypes
206
+ void displayMenu();
207
+ void enqueue();
208
+ void dequeue();
209
+ void displayQueue();
210
+
211
+ int main() {
212
+ ย ย ย ย int choice;
213
+
214
+ ย ย ย ย do {
215
+
216
+ ย ย ย ย ย ย ย ย // screen clearing
217
+ ย ย ย ย ย ย ย ย system("cls");
218
+
219
+ ย ย ย ย ย ย ย ย displayMenu();
220
+ ย ย ย ย ย ย ย ย printf("Enter your choice: ");
221
+ ย ย ย ย ย ย ย ย scanf("%d", &choice);
222
+
223
+ ย ย ย ย ย ย ย ย switch(choice) {
224
+ ย ย ย ย ย ย ย ย ย ย ย ย case 1:
225
+ ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย enqueue();
226
+ ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย break;
227
+ ย ย ย ย ย ย ย ย ย ย ย ย case 2:
228
+ ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย dequeue();
229
+ ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย break;
230
+ ย ย ย ย ย ย ย ย ย ย ย ย case 3:
231
+ ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย displayQueue();
232
+ ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย break;
233
+ ย ย ย ย ย ย ย ย ย ย ย ย case 4:
234
+ ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย printf("\nExiting program...\n");
235
+ ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย exit(0);
236
+ ย ย ย ย ย ย ย ย ย ย ย ย default:
237
+ ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย printf("\nInvalid choice! Please try again.\n");
238
+ ย ย ย ย ย ย ย ย }
239
+
240
+ ย ย ย ย ย ย ย ย printf("\nPress Enter to continue...");
241
+ ย ย ย ย ย ย ย ย while(getchar() != '\n'); // Clear input buffer
242
+ ย ย ย ย ย ย ย ย getchar(); // Wait for Enter key
243
+
244
+ ย ย ย ย } while(1);
245
+
246
+ 3
247
+
248
+ ------------PAGE TALK ABOUT------------
249
+ ุงู„ุตูุญุฉ ุชุดุฑุญ ู…ูู‡ูˆู… ุชู†ููŠุฐ ุจู†ูŠุฉ ุงู„ุจูŠุงู†ุงุช Queue ุจุงุณุชุฎุฏุงู… ู…ุตููˆูุฉ ุฃุญุงุฏูŠุฉ ุงู„ุจุนุฏ ููŠ ู„ุบุฉ C.
250
+ ุชูˆุถุญ ุฏูˆุฑ ุงู„ู…ุชุบูŠุฑูŠู† front ูˆ rearุŒ ูˆุฃู† ุงู„ุญุงู„ุฉ ุงู„ุงุจุชุฏุงุฆูŠุฉ ุชูƒูˆู† front = rear = 0ุŒ ู…ุน ุดุฑุญ ุนู…ู„ูŠุงุช ุงู„ุฅุฏุฎุงู„ ูˆุงู„ุญุฐู ูˆุงู„ุนุฑุถ.
251
+ ูƒู…ุง ุชุนุฑุถ ุจุฏุงูŠุฉ ุงู„ุดูŠูุฑุฉ ุงู„ู…ุตุฏุฑูŠุฉุŒ ูˆุชุดู…ู„ ุชุนุฑูŠู ุงู„ู…ุตููˆูุฉ ูˆุงู„ุซูˆุงุจุช ูˆุงู„ู…ุชุบูŠุฑุงุช ุงู„ุนุงู…ุฉ ูˆุชุตุฑูŠุญุงุช ุงู„ุฏูˆุงู„.
252
+ ูŠูˆุฌุฏ ุฃูŠุถู‹ุง ุฌุฒุก ู…ู† ุงู„ุฏุงู„ุฉ main ูŠุญุชูˆูŠ ุนู„ู‰ ู‚ุงุฆู…ุฉ ุฎูŠุงุฑุงุช ู„ู„ู…ุณุชุฎุฏู… ู„ุชู†ููŠุฐ enqueue ูˆ dequeue ูˆ displayQueue ุฃูˆ ุงู„ุฎุฑูˆุฌ ู…ู† ุงู„ุจุฑู†ุงู…ุฌ.
253
+
254
+
255
+ ================================================================================
256
+ PAGE 4 - page_0004.png
257
+ ================================================================================
258
+
259
+ ------------TEXT EXTRACTED------------
260
+ ITGS 220
261
+ Dr. Amna Ali A Mohamedย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ๏ฟฝ๏ฟฝย Fall 2025
262
+
263
+ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
264
+
265
+ ย ย ย ย ย ย ย ย return 0;
266
+ ย ย ย ย }
267
+ ย ย ย ย 
268
+ ย ย ย ย void displayMenu() {
269
+ ย ย ย ย ย ย ย ย printf("\n===== Queue Operations =====\n");
270
+ ย ย ย ย ย ย ย ย printf("1. Enqueue (Add element)\n");
271
+ ย ย ย ย ย ย ย ย printf("2. Dequeue (Remove element)\n");
272
+ ย ย ย ย ย ย ย ย printf("3. Display Queue\n");
273
+ ย ย ย ย ย ย ย ย printf("4. Exit\n");
274
+ ย ย ย ย }
275
+ ย ย ย ย 
276
+ ย ย ย ย void enqueue() {
277
+ ย ย ย ย ย ย ย ย if(rear == MAX_SIZE) {
278
+ ย ย ย ย ย ย ย ย ย ย ย ย printf("\nQueue is full! Cannot enqueue.\n");
279
+ ย ย ย ย ย ย ย ย ย ย ย ย return;
280
+ ย ย ย ย ย ย ย ย }
281
+ ย ย ย ย 
282
+ ย ย ย ย ย ย ย ย int data;
283
+ ย ย ย ย ย ย ย ย printf("\nEnter data to enqueue: ");
284
+ ย ย ย ย ย ย ย ย scanf("%d", &data);
285
+ ย ย ย ย 
286
+ ย ย ย ย ย ย ย ย queue[rear] = data;
287
+ ย ย ย ย ย ย ย ย rear++;
288
+ ย ย ย ย ย ย ย ย printf("\n%d has been enqueued.\n", data);
289
+ ย ย ย ย }
290
+ ย ย ย ย 
291
+ ย ย ย ย void dequeue() {
292
+ ย ย ย ย ย ย ย ย if(front == rear) {
293
+ ย ย ย ย ย ย ย ย ย ย ย ย printf("\nQueue is empty! Cannot dequeue.\n");
294
+ ย ย ย ย ย ย ย ย ย ย ย ย return;
295
+ ย ย ย ย ย ย ย ย }
296
+ ย ย ย ย 
297
+ ย ย ย ย ย ย ย ย printf("\n%d has been dequeued.\n", queue[front]);
298
+ ย ย ย ย ย ย ย ย front++;
299
+ ย ย ย ย 
300
+ ย ย ย ย ย ย ย ย // Reset queue if empty
301
+ ย ย ย ย ย ย ย ย if(front == rear) {
302
+ ย ย ย ย ย ย ย ย ย ย ย ย front = rear = 0;
303
+ ย ย ย ย ย ย ย ย }
304
+ ย ย ย ย }
305
+ ย ย ย ย 
306
+ ย ย ย ย void displayQueue() {
307
+ ย ย ย ย ย ย ย ย if(front == rear) {
308
+ ย ย ย ย ย ย ย ย ย ย ย ย printf("\nQueue is empty!\n");
309
+ ย ย ย ย ย ย ย ย ย ย ย ย return;
310
+ ย ย ย ย ย ย ย ย }
311
+ ย ย ย ย 
312
+ ย ย ย ย ย ย ย ย printf("\nCurrent Queue: ");
313
+ ย ย ย ย ย ย ย ย for(int i = front; i < rear; i++) {
314
+ ย ย ย ย ย ย ย ย ย ย ย ย printf("%d ", queue[i]);
315
+ ย ย ย ย ย ย ย ย }
316
+ ย ย ย ย ย ย ย ย printf("\n");
317
+ ย ย ย ย }
318
+
319
+ 1.3.ย ย ย ย Applications of Queue:
320
+
321
+ 1.ย ย ย ย ย ย It is used to schedule the jobs to be processed by the CPU.
322
+
323
+ 2.ย ย ย ย ย ย When multiple users send print jobs to a printer, each printing job is kept in
324
+ ย ย ย ย ย ย ย ย the printing queue. Then the printer prints those jobs according to first in first
325
+ ย ย ย ย ย ย ย ย out (FIFO) basis.
326
+
327
+ 3.ย ย ย ย ย ย Breadth first search uses a queue data structure to find an element from a
328
+ ย ย ย ย ย ย ย ย graph.
329
+
330
+ 4
331
+
332
+ ------------PAGE TALK ABOUT------------
333
+ ุชุชุญุฏุซ ุงู„ุตูุญุฉ ุนู† ุจู†ูŠุฉ ุงู„ุจูŠุงู†ุงุช Queue ููŠ ู„ุบุฉ CุŒ ูˆุชุนุฑุถ ุฏูˆุงู„ ุฃุณุงุณูŠุฉ ู…ุซู„ ุนุฑุถ ุงู„ู‚ุงุฆู…ุฉุŒ ุงู„ุฅุถุงูุฉ ุฅู„ู‰ ุงู„ุทุงุจูˆุฑ enqueueุŒ ุงู„ุญุฐู dequeueุŒ ูˆุนุฑุถ ุนู†ุงุตุฑ ุงู„ุทุงุจูˆุฑ.
334
+ ูŠูˆุถุญ ุงู„ูƒูˆุฏ ูƒูŠููŠุฉ ุงู„ุชุญู‚ู‚ ู…ู† ุงู…ุชู„ุงุก ุงู„ุทุงุจูˆุฑ ุฃูˆ ูุฑุงุบู‡ุŒ ู…ุน ุฅุนุงุฏุฉ ุถุจุท ุงู„ู…ุคุดุฑูŠู† front ูˆ rear ุนู†ุฏ ุชูุฑูŠุบ ุงู„ุทุงุจูˆุฑ.
335
+ ูƒู…ุง ุชุนุฑุถ ุงู„ุตูุญุฉ ุชุทุจูŠู‚ุงุช ุงู„ู€ Queue ู…ุซู„ ุฌุฏูˆู„ุฉ ู…ู‡ุงู… ุงู„ู…ุนุงู„ุฌ CPUุŒ ูˆุทูˆุงุจูŠุฑ ุงู„ุทุจุงุนุฉุŒ ูˆุฎูˆุงุฑุฒู…ูŠุฉ ุงู„ุจุญุซ ุจุนุฑุถ ุงู„ุดุฌุฑุฉ ุฃูˆ ุงู„ุฑุณู… BFS.
336
+ ุงู„ุนู†ุงุตุฑ ุงู„ุจุตุฑูŠุฉ ุงู„ู…ูˆุฌูˆุฏุฉ ู‡ูŠ ุชุฑูˆูŠุณุฉ ุงู„ู…ู‚ุฑุฑ ITGS 220 ูˆุงุณู… ุงู„ุฏูƒุชูˆุฑุฉ ูˆุงู„ูุตู„ ุงู„ุฏุฑุงุณูŠ ูˆุฑู‚ู… ุงู„ุตูุญุฉ ูู‚ุทุŒ ูˆู„ุง ุชูˆุฌุฏ ุตูˆุฑ ุฃูˆ ู…ุฎุทุทุงุช.
337
+
338
+
339
+ ================================================================================
340
+ PAGE 5 - page_0005.png
341
+ ================================================================================
342
+
343
+ ------------TEXT EXTRACTED------------
344
+ ITGS 220
345
+ Dr. Amna Ali A Mohamedย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย Fall 2025
346
+
347
+ 1.4.ย ย ย ย Circular Queue:
348
+
349
+ A more efficient queue representation is obtained by regarding the array Q[MAX] as circular. Any number of items could be placed on the queue. This implementation of a queue is called a circular queue because it uses its storage array as if it were a circle instead of a linear list.
350
+
351
+ There are two problems associated with linear queue. They are:
352
+
353
+ โ€ขย ย ย ย ย ย ย ย Time consuming: linear time to be spent in shifting the elements to the beginning of the queue.
354
+
355
+ โ€ขย ย ย ย ย ย ย ย Signaling queue full: even if the queue is having vacant position.
356
+
357
+ For example, let us consider a linear queue status as follows:
358
+
359
+ 0ย ย ย ย ย 1ย ย ย ย ย 2ย ย ย ย ย 3ย ย ย ย ย 4
360
+
361
+ 33ย ย ย ย ย 44ย ย ย ย ย 55
362
+
363
+ REAR = 5
364
+ FRONT = 2
365
+
366
+ Fย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย R
367
+
368
+ Next insert another element, say 66 to the queue. We cannot insert 66 to the queue as the rear crossed the maximum size of the queue (i.e., 5). There will be queue full signal. The queue status is as follows:
369
+
370
+ 0ย ย ย ย ย 1ย ย ย ย ย 2ย ย ย ย ย 3ย ย ย ย ย 4
371
+
372
+ 33ย ย ย ย ย 44ย ย ย ย ย 55
373
+
374
+ REAR = 5
375
+ FRONT = 2
376
+
377
+ Fย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย R
378
+
379
+ This difficulty can be overcome if we treat queue position with index zero as a position that comes after position with index four then we treat the queue as a circular queue.
380
+
381
+ In circular queue if we reach the end for inserting elements to it, it is possible to insert new elements if the slots at the beginning of the circular queue are empty.
382
+
383
+ 5
384
+
385
+ ------------PAGE TALK ABOUT------------
386
+ ุชุชุญุฏุซ ุงู„ุตูุญุฉ ุนู† ู…ูู‡ูˆู… **ุงู„ุทุงุจูˆุฑ ุงู„ุฏุงุฆุฑูŠ (Circular Queue)** ูƒุญู„ ุฃูƒุซุฑ ูƒูุงุกุฉ ู…ู† ุงู„ุทุงุจูˆุฑ ุงู„ุฎุทูŠ.
387
+ ุชูˆุถุญ ู…ุดูƒู„ุชูŠู† ููŠ ุงู„ุทุงุจูˆุฑ ุงู„ุฎุทูŠ: ุงู„ุญุงุฌุฉ ุฅู„ู‰ ุชุญุฑูŠูƒ ุงู„ุนู†ุงุตุฑ ู…ู…ุง ูŠุณุชู‡ู„ูƒ ูˆู‚ุชู‹ุงุŒ ูˆุธู‡ูˆุฑ ุญุงู„ุฉ ุงู„ุงู…ุชู„ุงุก ุฑุบู… ูˆุฌูˆุฏ ุฃู…ุงูƒู† ูุงุฑุบุฉ ููŠ ุจุฏุงูŠุฉ ุงู„ู…ุตููˆูุฉ.
388
+ ูŠูˆุฌุฏ ุดูƒู„ุงู† ูŠูˆุถุญุงู† ู…ุตููˆูุฉ ุจุญุฌู… 5 ูˆุฎุงู†ุงุชู‡ุง ู…ุฑู‚ู…ุฉ ู…ู† 0 ุฅู„ู‰ 4ุŒ ูˆุงู„ุนู†ุงุตุฑ ุงู„ู…ูˆุฌูˆุฏุฉ ู‡ูŠ 33 ูˆ44 ูˆ55ุŒ ู…ุน FRONT = 2 ูˆREAR = 5.
389
+ ุงู„ุฑุณูˆู… ุชุจูŠู† ุฃู† ุงู„ุฅุฏุฎุงู„ ูŠูุดู„ ููŠ ุงู„ุทุงุจูˆุฑ ุงู„ุฎุทูŠ ุนู†ุฏ ุงู„ูˆุตูˆู„ ู„ู„ู†ู‡ุงูŠุฉุŒ ุจูŠู†ู…ุง ููŠ ุงู„ุทุงุจูˆุฑ ุงู„ุฏุงุฆุฑูŠ ูŠู…ูƒู† ุงู„ุฑุฌูˆุน ู„ู„ุจุฏุงูŠุฉ ูˆุงุณุชุบู„ุงู„ ุงู„ุฎุงู†ุงุช ุงู„ูุงุฑุบุฉ.
390
+
391
+
392
+ ================================================================================
393
+ PAGE 6 - page_0006.png
394
+ ================================================================================
395
+
396
+ ------------TEXT EXTRACTED------------
397
+ ITGS 220
398
+ Dr. Amna Ali A Mohamedย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย Fall 2025
399
+
400
+ 1.5.ย ย ย ย Representation of Circular Queue:
401
+
402
+ Let us consider a circular queue, which can hold maximum (MAX) of six elements.
403
+ Initially the queue is empty.
404
+
405
+ F R
406
+
407
+ 5ย ย ย ย ย 0
408
+ 4ย ย ย ย ย 1
409
+ 3ย ย ย ย ย 2
410
+
411
+ Queue Empty
412
+ MAX = 6
413
+ FRONT = REAR = 0
414
+ COUNT = 0
415
+
416
+ Circular Queue
417
+
418
+ Now, insert 11 to the circular queue. Then circular queue status will be:
419
+
420
+ F
421
+
422
+ 5ย ย ย ย ย 0
423
+ 4ย ย ย ย ย 1
424
+ 3ย ย ย ย ย 2
425
+
426
+ 11
427
+
428
+ โ–ฒ | R
429
+
430
+ FRONT = 0
431
+ REAR = (REAR + 1) % 6 = 1
432
+ COUNT = 1
433
+
434
+ Circular Queue
435
+
436
+ Insert new elements 22, 33, 44 and 55 into the circular queue. The circular queue status is:
437
+
438
+ Rย ย ย ย ย ย ย ย ย ย ย ย ย F
439
+
440
+ 5ย ย ย ย ย 0
441
+ 4ย ย ย ย ย 1
442
+ 3ย ย ย ย ย 2
443
+
444
+ 11
445
+ 22
446
+ 33
447
+ 44
448
+ 55
449
+
450
+ FRONT = 0
451
+ REAR = (REAR + 1) % 6 = 5
452
+ COUNT = 5
453
+
454
+ Circular Queue
455
+
456
+ 6
457
+
458
+ ------------PAGE TALK ABOUT------------
459
+ ุชุดุฑุญ ุงู„ุตูุญุฉ ุชู…ุซูŠู„ **ุงู„ุทุงุจูˆุฑ ุงู„ุฏุงุฆุฑูŠ (Circular Queue)** ุจุณุนุฉ ู‚ุตูˆู‰ **6 ุนู†ุงุตุฑ**ุŒ ู…ุน ุชูˆุถูŠุญ ุญุงู„ุชู‡ ููŠ ุงู„ุจุฏุงูŠุฉ ูˆู‡ูˆ ูุงุฑุบ.
460
+ ุชุญุชูˆูŠ ุนู„ู‰ ุฑุณูˆู…ุงุช ุฏุงุฆุฑูŠุฉ ู…ู‚ุณู…ุฉ ุฅู„ู‰ ุงู„ู…ูˆุงู‚ุน **0 ุฅู„ู‰ 5** ูˆุชูุธู‡ุฑ ู…ูˆุถุนูŠ **FRONT** ูˆ **REAR** ุจุงู„ุฃุณู‡ู….
461
+ ุซู… ุชุนุฑุถ ู…ุซุงู„ ุฅุฏุฎุงู„ ุงู„ุนู†ุตุฑ **11** ูˆูƒูŠู ุชุชุบูŠุฑ ุงู„ู‚ูŠู… ุฅู„ู‰ **FRONT = 0** ูˆ **REAR = 1** ูˆ **COUNT = 1**.
462
+ ุจุนุฏ ุฐู„ูƒ ุชุถูŠู ุงู„ุนู†ุงุตุฑ **22ุŒ 33ุŒ 44ุŒ 55** ูˆุชูˆุถุญ ููŠ ุงู„ุฑุณู… ุฃู…ุงูƒู†ู‡ุง ุฏุงุฎู„ ุงู„ุทุงุจูˆุฑุŒ ู…ุน ุงู„ุญุงู„ุฉ ุงู„ู†ู‡ุงุฆูŠุฉ **COUNT = 5** ูˆ **REAR = 5**.
463
+
464
+
465
+ ================================================================================
466
+ PAGE 7 - page_0007.png
467
+ ================================================================================
468
+
469
+ ------------TEXT EXTRACTED------------
470
+ ITGS 220
471
+ Dr. Amna Ali A Mohamedย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย Fall 2025
472
+
473
+ Now, delete an element. The element deleted is the element at the front of the circular
474
+ queue. So, 11 is deleted. The circular queue status is as follows:
475
+
476
+ R
477
+ 5ย ย ย ย ย ย ย ย ย 0
478
+ 4ย ย ย ย ย ย ย ย ย 1
479
+ 3ย ย ย ย ย ย ย ย ย 2
480
+
481
+ 22
482
+ 33
483
+ 44
484
+ 55
485
+
486
+ F
487
+
488
+ FRONT = (FRONT + 1) % 6 = 1
489
+ REAR = 5
490
+ COUNT = COUNT - 1 = 4
491
+
492
+ Circular Queue
493
+
494
+ Again, delete an element. The element to be deleted is always pointed to by the FRONT
495
+ pointer. So, 22 is deleted. The circular queue status is as follows:
496
+
497
+ R
498
+ 5ย ย ย ย ย ย ย ย ย 0
499
+ 4ย ย ย ย ย ย ย ย ย 1
500
+ 3ย ย ย ย ย ย ย ย ย 2
501
+
502
+ 33
503
+ 44
504
+ 55
505
+
506
+ F
507
+
508
+ FRONT = (FRONT + 1) % 6 = 2
509
+ REAR = 5
510
+ COUNT = COUNT - 1 = 3
511
+
512
+ Circular Queue
513
+
514
+ Again, insert another element 66 to the circular queue. The status of the circular queue
515
+ is:
516
+
517
+ R
518
+ 5ย ย ย ย ย ย ย ย ย 0
519
+ 4ย ย ย ย ย ย ย ย ย 1
520
+ 3ย ย ย ย ย ย ย ย ย 2
521
+
522
+ 66
523
+ 33
524
+ 44
525
+ 55
526
+
527
+ F
528
+
529
+ FRONT = 2
530
+ REAR = (REAR + 1) % 6 = 0
531
+ COUNT = COUNT + 1 = 4
532
+
533
+ Circular Queue
534
+
535
+ Now, insert new elements 77 and 88 into the circular queue. The circular queue status
536
+ is:
537
+
538
+ 7
539
+
540
+ ------------PAGE TALK ABOUT------------
541
+ ุงู„ุตูุญุฉ ุชุดุฑุญ ุนู…ู„ูŠุงุช ุงู„ุญุฐู ูˆุงู„ุฅุฏุฎุงู„ ููŠ **ุงู„ุทุงุจูˆุฑ ุงู„ุฏุงุฆุฑูŠ (Circular Queue)** ุฎุทูˆุฉ ุจุฎุทูˆุฉ.
542
+ ุชูˆุถุญ ุฃูˆู„ู‹ุง ุญุฐู ุงู„ุนู†ุตุฑ ุงู„ุฃู…ุงู…ูŠ 11 ุซู… ุชุญุฏูŠุซ ุงู„ู…ุคุดุฑุงุช ุจุญูŠุซ ูŠุตุจุญ `FRONT = 1` ูˆ`COUNT = 4`ุŒ ุซู… ุญุฐู 22 ู„ูŠุตุจุญ `FRONT = 2` ูˆ`COUNT = 3`.
543
+ ุจุนุฏ ุฐู„ูƒ ุชุดุฑุญ ุฅุฏุฎุงู„ ุงู„ุนู†ุตุฑ 66 ููŠ ู†ู‡ุงูŠุฉ ุงู„ุทุงุจูˆุฑ ู…ุน ุงู„ุชูุงู ุงู„ู…ุคุด๏ฟฝ๏ฟฝ ุงู„ุฎู„ููŠุŒ ููŠุตุจุญ `REAR = 0` ูˆ`COUNT = 4`.
544
+ ุชุชุถู…ู† ุงู„ุตูุญุฉ ุซู„ุงุซุฉ ุฑุณูˆู…ุงุช ุฏุงุฆุฑูŠุฉ ุชู…ุซู„ ู…ูˆุงู‚ุน ุงู„ุฎุงู†ุงุช ู…ู† 0 ุฅู„ู‰ 5ุŒ ู…ุน ุฃุณู‡ู… ุชูˆุถุญ ู…ูˆุถุนูŠ `F` ูˆ`R` ูˆุงู„ุนู†ุงุตุฑ ุงู„ู…ูˆุฌูˆุฏุฉ ู…ุซู„ 33 ูˆ44 ูˆ55 ูˆ66 ุฏุงุฎู„ ุงู„ุทุงุจูˆุฑ.
545
+
546
+
547
+ ================================================================================
548
+ PAGE 8 - page_0008.png
549
+ ================================================================================
550
+
551
+ ------------TEXT EXTRACTED------------
552
+ ITGS 220
553
+ Dr. Amna Ali A Mohamedย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย Fall 2025
554
+
555
+ 5ย ย ย ย ย ย ย ย ย ย ย ย ย 0
556
+ 66ย ย ย ย ย ย ย ย ย ย ย ย 77
557
+ 4ย ย ย ย ย 55ย ย ย ย ย ย ย ย ย ย ย ย ย 88ย ย ย ย ย 1
558
+ 44ย ย ย ย ย ย ย ย ย ย ย ย 33
559
+ 3ย ย ย ย ย ย ย ย ย ย ย ย ย 2
560
+
561
+ R
562
+ F
563
+
564
+ FRONT = 2, REAR = 2
565
+ REAR = REAR % 6 = 2
566
+ COUNT = 6
567
+
568
+ Circular Q u e u e
569
+
570
+ Now, if we insert an element to the circular queue, as COUNT = MAX we cannot add
571
+ the element to circular queue. So, the circular queue is full.
572
+
573
+ 1.6.ย ย ย ย Source code for Circular Queue operations, using array:
574
+
575
+ #include <stdio.h>
576
+ #include <stdlib.h> // For system() clearScreen
577
+ #define MAX 6
578
+
579
+ // Global variables
580
+ int CQ[MAX];
581
+ int front = 0;
582
+ int rear = 0;
583
+ int count = 0;
584
+
585
+ // Function prototypes
586
+
587
+ int menu();
588
+ void insertCQ();
589
+ void deleteCQ();
590
+ void displayCQ();
591
+
592
+ int main() {
593
+ int ch;
594
+ do {
595
+ system("cls");
596
+ ch = menu();
597
+
598
+ switch(ch) {
599
+ case 1:
600
+ insertCQ();
601
+ break;
602
+ case 2:
603
+ deleteCQ();
604
+ break;
605
+ case 3:
606
+ displayCQ();
607
+ break;
608
+ case 4:
609
+ return 0;
610
+ default:
611
+ printf("\n Invalid Choice ");
612
+ }
613
+
614
+ printf("\nPress any key to continue...");
615
+ getchar(); // Clear input buffer
616
+ getchar(); // Wait for key press
617
+
618
+ } while(1);
619
+ }
620
+
621
+ 8
622
+
623
+ ------------PAGE TALK ABOUT------------
624
+ ุงู„ุตูุญุฉ ุชุดุฑุญ ุจู†ูŠุฉ **ุงู„ู€ Circular Queue** ุจุงุณุชุฎุฏุงู… ู…ุตููˆูุฉ ุจุญุฌู… **MAX = 6**ุŒ ูˆุชูˆุถุญ ุญุงู„ุฉ ุงู„ุงู…ุชู„ุงุก ุนู†ุฏู…ุง ูŠุตุจุญ **COUNT = 6** ูู„ุง ูŠู…ูƒู† ุฅุฏุฎุงู„ ุนู†ุตุฑ ุฌุฏูŠุฏ.
625
+ ูŠูˆุฌุฏ ุฑุณู… ุฏุงุฆุฑูŠ ู…ู‚ุณู… ุฅู„ู‰ 6 ุฎุงู†ุงุช ู…ุฑู‚ู…ุฉ ู…ู† 0 ุฅู„ู‰ 5ุŒ ูˆุชุญุชูˆูŠ ุงู„ู‚ูŠู…: **77, 88, 33, 44, 55, 66**ุŒ ู…ุน ุชูˆุถูŠุญ ุฃู† **FRONT = 2** ูˆ **REAR = 2** ุจุนุฏ ุงู„ุงู„ุชูุงู.
626
+ ูƒู…ุง ุชุนุฑุถ ุงู„ุตูุญุฉ ุจุฏุงูŠุฉ ูƒูˆุฏ ู„ุบุฉ **C** ู„ุชู†ููŠุฐ ุนู…ู„ูŠุงุช ุงู„ุทุงุจูˆุฑ ุงู„ุฏุงุฆุฑูŠ: **insert**, **delete**, **display**ุŒ ู…ุน ุชุนุฑูŠู ุงู„ู…ุชุบูŠุฑุงุช ุงู„ุนุงู…ุฉ ูˆุงู„ุฏุงู„ุฉ **main** ูˆู‚ุงุฆู…ุฉ ุงู„ุฎูŠุงุฑุงุช.
627
+ ุงู„ุฑุณู… ูŠูˆุถุญ ููƒุฑุฉ ุงู„ุงู„ุชูุงู ููŠ ุงู„ุทุงุจูˆุฑ ุงู„ุฏุงุฆุฑูŠ ูˆุฃู† ุงู„ู…ุคุดุฑ ุงู„ุฎู„ููŠ ูŠุนูˆุฏ ู„ู„ุจุฏุงูŠุฉ ุจุงุณุชุฎุฏุงู… ุงู„ุนู…ู„ูŠุฉ **REAR % 6**.
628
+
629
+
630
+ ================================================================================
631
+ PAGE 9 - page_0009.png
632
+ ================================================================================
633
+
634
+ ------------TEXT EXTRACTED------------
635
+ ITGS 220
636
+ Dr. Amna Ali A Mohamedย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย Fall 2025
637
+
638
+ ________________________________________________________________________________
639
+
640
+ int menu() {
641
+ ย ย ย ย int ch;
642
+ ย ย ย ย printf("\n \t Circular Queue Operations using ARRAY..");
643
+ ย ย ย ย printf("\n ----------------*******\n");
644
+ ย ย ย ย printf("\n 1. Insert ");
645
+ ย ย ย ย printf("\n 2. Delete ");
646
+ ย ย ย ย printf("\n 3. Display");
647
+ ย ย ย ย printf("\n 4. Quit ");
648
+ ย ย ย ย printf("\n Enter Your Choice: ");
649
+ ย ย ย ย scanf("%d", &ch);
650
+ ย ย ย ย return ch;
651
+ }
652
+
653
+ void insertCQ() {
654
+ ย ย ย ย if(count == MAX) {
655
+ ย ย ย ย ย ย ย ย printf("\n Circular Queue is Full");
656
+ ย ย ย ย }
657
+ ย ย ย ย else {
658
+ ย ย ย ย ย ย ย ย int data;
659
+ ย ย ย ย ย ย ย ย printf("\n Enter data: ");
660
+ ย ย ย ย ย ย ย ย scanf("%d", &data);
661
+ ย ย ย ย ย ย ย ย CQ[rear] = data;
662
+ ย ย ย ย ย ย ย ย rear = (rear + 1) % MAX;
663
+ ย ย ย ย ย ย ย ย count++;
664
+ ย ย ย ย ย ย ย ย printf("\n Data Inserted in the Circular Queue ");
665
+ ย ย ย ย }
666
+ }
667
+
668
+ void deleteCQ() {
669
+ ย ย ย ย if(count == 0) {
670
+ ย ย ย ย ย ย ย ย printf("\n\nCircular Queue is Empty..");
671
+ ย ย ย ย }
672
+ ย ย ย ย else {
673
+ ย ย ย ย ย ย ย ย printf("\n Deleted element from Circular Queue is %d ", CQ[front]);
674
+ ย ย ย ย ย ย ย ย front = (front + 1) % MAX;
675
+ ย ย ย ย ย ย ย ย count--;
676
+ ย ย ย ย }
677
+ }
678
+
679
+ void displayCQ() {
680
+ ย ย ย ย int i, j;
681
+ ย ย ย ย if(count == 0) {
682
+ ย ย ย ย ย ย ย ย printf("\n\n\t Circular Queue is Empty ");
683
+ ย ย ย ย }
684
+ ย ย ย ย else {
685
+ ย ย ย ย ย ย ย ย printf("\n Elements in Circular Queue are: ");
686
+ ย ย ย ย ย ย ย ย j = count;
687
+ ย ย ย ย ย ย ย ย for(i = front; j != 0; j--) {
688
+ ย ย ย ย ย ย ย ย ย ย ย ย printf("%d\t", CQ[i]);
689
+ ย ย ย ย ย ย ย ย ย ย ย ย i = (i + 1) % MAX;
690
+ ย ย ย ย ย ย ย ย }
691
+ ย ย ย ย }
692
+ }
693
+
694
+ 9
695
+
696
+ ------------PAGE TALK ABOUT------------
697
+ ุงู„ุตูุญุฉ ุชุนุฑุถ ูƒูˆุฏ ุจู„ุบุฉ C ู„ุชู†ููŠุฐ ุนู…ู„ูŠุงุช **ุงู„ุทุงุจูˆุฑ ุงู„ุฏุงุฆุฑูŠ (Circular Queue)** ุจุงุณุชุฎุฏุงู… **ู…ุตููˆูุฉ**.
698
+ ุชุชุถู…ู† ุฏุงู„ุฉ ู‚ุงุฆู…ุฉ `menu()` ุชุนุฑุถ ุงู„ุฎูŠุงุฑุงุช: ุงู„ุฅุฏุฎุงู„ุŒ ุงู„ุญุฐูุŒ ุงู„ุนุฑุถุŒ ูˆุงู„ุฎุฑูˆุฌ.
699
+ ูƒู…ุง ุชุญุชูˆูŠ ุนู„ู‰ ุฏูˆุงู„ `insertCQ()` ูˆ`deleteCQ()` ูˆ`displayCQ()` ู„ุฅุฏุงุฑุฉ ุนู†ุงุตุฑ ุงู„ุทุงุจูˆุฑ ู…ุน ุงุณุชุฎุฏุงู… `front` ูˆ`rear` ูˆ`count` ูˆ`MAX`.
700
+ ู„ุง ุชูˆุฌุฏ ุตูˆุฑ ุฃูˆ ู…ุฎุทุทุงุชุŒ ูู‚ุท ุชู†ุณูŠู‚ ุตูุญุฉ ู…ุญุงุถุฑุฉ ู…ุน ุนู†ูˆุงู† ุงู„ู…ู‚ุฑุฑ ูˆุงุณู… ุงู„ุฏูƒุชูˆุฑุฉ ูˆุงู„ูุตู„ ุงู„ุฏุฑุงุณูŠ ูˆุฑู‚ู… ุงู„ุตูุญุฉ.
701
+
702
+
703
+ ================================================================================
704
+ PAGE 10 - page_0010.png
705
+ ================================================================================
706
+
707
+ ------------TEXT EXTRACTED------------
708
+ ITGS 220
709
+ Dr. Amna Ali A Mohamedย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย Fall 2025
710
+
711
+ Questions
712
+
713
+ 1.ย ย ย ย ย Is it possible to have two designs for the same data structure that provide the
714
+ ย ย ย ย ย ย ย ย same functionality but are implemented differently?
715
+
716
+ 2.ย ย ย ย ย What is the difference between the logical representation of a data structure and
717
+ ย ย ย ย ย ย ย ย the physical representation?
718
+
719
+ 3.ย ย ย ย ย Transform the following infix expressions to reverse polish notation (prefix):
720
+ ย ย ย ย ย ย ย ย a) A โ†‘ B * C โˆ’ D + E / F / (G +H)
721
+ ย ย ย ย ย ย ย ย b) ((A + B) * C โˆ’ (D โˆ’ E)) โ†‘ (F + G)
722
+ ย ย ย ย ย ย ย ย c) A โˆ’ B / (C * D โ†‘E)
723
+ ย ย ย ย ย ย ย ย d) (a + b โ†‘ c โ†‘ d) * (e + f / d))
724
+ ย ย ย ย ย ย ย ย f) 3 โˆ’ 6 * 7 + 2 / 4 * 5 โˆ’ 8
725
+ ย ย ย ย ย ย ย ย g) (A โˆ’ B) / ((D + E) * F)
726
+ ย ย ย ย ย ย ย ย h) ((A + B) / D) โ†‘ ((E โˆ’ F) * G)
727
+
728
+ 4.ย ย ย ย ย Evaluate the following postfix expressions:
729
+ ย ย ย ย ย ย ย ย a) Pโ‚: 5, 3, +, 2, *, 6, 9, 7, -, /, -
730
+ ย ย ย ย ย ย ย ย b) Pโ‚‚: 3, 5, +, 6, 4, -, *, 4, 1, -, 2, โ†‘, +
731
+ ย ย ย ย ย ย ย ย c) Pโ‚ƒ : 3, 1, +, 2, โ†‘, 7, 4, -, 2, *, +, 5,-
732
+
733
+ 5.ย ย ย ย ย Consider the usual algorithm to convert an infix expression to a postfix expression.
734
+ ย ย ย ย ย ย ย ย Suppose that you have read 10 input characters during a conversion and that the
735
+ ย ย ย ย ย ย ย ย stack now contains these symbols:
736
+
737
+ ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย +
738
+ ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย (
739
+ ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย *
740
+
741
+ ย ย ย ย ย ย ย ย bottom
742
+
743
+ ย ย ย ย ย ย ย ย Now, suppose that you read and process the 11th symbol of the input. Draw the
744
+ ย ย ย ย ย ย ย ย stack for the case where the 11th symbol is:
745
+ ย ย ย ย ย ย ย ย A. A number:
746
+ ย ย ย ย ย ย ย ย B. A left parenthesis:
747
+ ย ย ย ย ย ย ย ย C. A right parenthesis:
748
+ ย ย ย ย ย ย ย ย D. A minus sign:
749
+ ย ย ย ย ย ย ย ย E. A division sign:
750
+
751
+ 10
752
+
753
+ ------------PAGE TALK ABOUT------------
754
+ ุงู„ุตูุญุฉ ุชุญุชูˆูŠ ุนู„ู‰ ุฃุณุฆู„ุฉ ู„ู…ุงุฏุฉ ู‡ูŠุงูƒู„ ุงู„ุจูŠุงู†ุงุช/ุงู„ุชุนุงุจูŠุฑ ุงู„ุฑูŠุงุถูŠุฉ ููŠ ู…ู‚ุฑุฑ ITGS 220 ู„ูุตู„ Fall 2025.
755
+ ุชุฑูƒู‘ุฒ ุงู„ุฃุณุฆู„ุฉ ุนู„ู‰ ู…ูุงู‡ูŠู… ุชุตู…ูŠู… ู‡ูŠุงูƒู„ ุงู„ุจูŠุงู†ุงุชุŒ ูˆุงู„ูุฑู‚ ุจูŠู† ุงู„ุชู…ุซูŠู„ ุงู„ู…ู†ุทู‚ูŠ ูˆุงู„ููŠุฒูŠุงุฆูŠุŒ ูˆุชุญูˆูŠู„ ุงู„ุชุนุงุจูŠุฑ ุจูŠู† infix ูˆprefix/postfix ูˆุชู‚ูŠูŠู… postfix.
756
+ ูŠูˆุฌุฏ ุฃูŠุถู‹ุง ุณุคุงู„ ุนู† ุฎูˆุงุฑุฒู…ูŠุฉ ุชุญูˆูŠู„ infix ุฅู„ู‰ postfix ุจุงุณุชุฎุฏุงู… ุงู„ู…ูƒุฏุณ (stack).
757
+ ุงู„ุนู†ุตุฑ ุงู„ุจุตุฑูŠ ุงู„ูˆุญูŠุฏ ู‡ูˆ ุฑุณู… ุจุณูŠุท ู„ู…ูƒุฏุณ ูŠูˆุถู‘ุญ ุฃู† ู…ุญุชูˆูŠุงุชู‡ ุงู„ุญุงู„ูŠุฉ ู…ู† ุงู„ุฃุนู„ู‰ ุฅู„ู‰ ุงู„ุฃุณูู„: + ุซู… ( ุซู… * ู…ุน ูƒู„ู…ุฉ bottom ุจุฌุงู†ุจ ุงู„ู‚ุงุน.
758
+
759
+
760
+ ================================================================================
761
+ PAGE 11 - page_0011.png
762
+ ================================================================================
763
+
764
+ ------------TEXT EXTRACTED------------
765
+ ITGS 220
766
+ Dr. Amna Ali A Mohamedย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย Fall 2025
767
+
768
+ 6.ย ย ย ย Write a program using stack for parenthesis matching. Explain what modifications
769
+ ย ย ย ย ย ย would be needed to make the parenthesis matching algorithm check expressions
770
+ ย ย ย ย ย ย with different kinds of parentheses such as (), [] and {}'s.
771
+
772
+ 7.ย ย ย ย Evaluate the following prefix expressions:
773
+ ย ย ย ย ย ย a) + * 2 + / 14 2 5 1
774
+ ย ย ย ย ย ย b) - * 6 3 - 4 1
775
+ ย ย ย ย ย ย c) + + 2 6 + - 13 2 4
776
+
777
+ 8.ย ย ย ย Convert the following infix expressions to prefix notation:
778
+ ย ย ย ย ย ย a) ((A + 2) * (B + 4)) -1
779
+ ย ย ย ย ย ย b) Z - (((X + 1) * 2) - 5) / Y)
780
+ ย ย ย ย ย ย c) (((c * 2) + 1) / (A + B)
781
+ ย ย ย ย ย ย d) ((A + B) * C โ€“ (D - E)) โ†‘ (F + G)
782
+ ย ย ย ย ย ย e) A โ€“ B / (C * D โ†‘ E)
783
+
784
+ 9.ย ย ย ย Write a โ€œCโ€ function to copy one stack to another assuming
785
+ ย ย ย ย ย ย a) The stack is implemented using array.
786
+
787
+ 10.ย ย Write an algorithm to construct a fully parenthesized infix expression from its
788
+ ย ย ย ย ย ย postfix equivalent. Write a โ€œCโ€ function for your algorithm.
789
+
790
+ 11.ย ย How can one convert a postfix expression to its prefix equivalent and vice-versa?
791
+
792
+ 12.ย ย In a circular queue represented by an array, how can one specify the number of
793
+ ย ย ย ย ย ย elements in the queue in terms of โ€œfrontโ€, โ€œrearโ€ and MAX-QUEUE-SIZE? Write a
794
+ ย ย ย ย ย ย โ€œCโ€ function to delete the K-th element from the โ€œfrontโ€ of a circular queue.
795
+
796
+ 11
797
+
798
+ ------------PAGE TALK ABOUT------------
799
+ ุงู„ุตูุญุฉ ุชุนุฑุถ ุฃุณุฆู„ุฉ ูˆุชู…ุงุฑูŠู† ู…ู† ู…ู‚ุฑุฑ ITGS 220 ู„ูุตู„ Fall 2025 ู…ุน ุงุณู… ุงู„ุฏูƒุชูˆุฑุฉ Amna Ali A Mohamed.
800
+ ุชุฑูƒู‘ุฒ ุงู„ุฃุณุฆู„ุฉ ุนู„ู‰ ู‡ูŠุงูƒู„ ุงู„ุจูŠุงู†ุงุชุŒ ุฎุงุตุฉ ุงู„ู…ูƒุฏุณ (Stack) ูˆุงู„ุทุงุจูˆุฑ ุงู„ุฏุงุฆุฑูŠ (Circular Queue).
801
+ ุชุชุถู…ู† ุชู…ุงุฑูŠู† ุนู† ู…ุทุงุจู‚ุฉ ุงู„ุฃู‚ูˆุงุณุŒ ุชู‚ูŠูŠู… ูˆุชุญูˆูŠู„ ุงู„ุชุนุจูŠุฑุงุช ุจูŠู† Prefix ูˆInfix ูˆPostfixุŒ ูˆูƒุชุงุจุฉ ุฏูˆุงู„ ุจู„ุบุฉ C.
802
+ ู„ุง ุชูˆุฌุฏ ุตูˆุฑ ุฃูˆ ู…ุฎุทุทุงุชุ› ุงู„ุตูุญุฉ ุนุจุงุฑุฉ ุนู† ู†ุต ู…ู†ุณู‚ ุฃูƒุงุฏูŠู…ูŠ ู…ุน ุชุฑู‚ูŠู… ู„ู„ุฃุณุฆู„ุฉ ู…ู† 6 ุฅู„ู‰ 12 ูˆุฑู‚ู… ุงู„ุตูุญุฉ 11.
data_structure/structure.txt ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ "ุฃู†ุช ู†ุธุงู… ุชูˆุฌูŠู‡ ุฐูƒูŠ ู„ู…ุณุงุนุฏ ุชุนู„ูŠู…ูŠ ููŠ ู…ุงุฏุฉ ุงู„ุฑูŠุงุถูŠุงุช.
2
+
3
+ ู…ู‡ู…ุชูƒ: ุชุญู„ูŠู„ ุฑุณุงู„ุฉ ุงู„ุทุงู„ุจ ูˆุงุฎุชูŠุงุฑ ุงู„ู…ู„ู ุงู„ู…ู†ุงุณุจ ู„ู„ุฑุฏ.
4
+
5
+ **ุงู„ู…ู„ูุงุช ุงู„ู…ุชุงุญุฉ:**
6
+ - main.txt: ู„ู„ุชุญูŠุงุชุŒ ุงู„ุฃุณุฆู„ุฉ ุงู„ุนุงู…ุฉุŒ ุงู„ุชุนุฑูŠู ุจุงู„ู†ูุณุŒ ุฃูˆ ุฃูŠ ุดูŠุก ู„ุง ูŠุชุนู„ู‚ ุจูุตูˆู„ ุงู„ูƒุชุงุจ ู…ุจุงุดุฑุฉ
7
+ - p1.txt: ุงู„ูุตู„ ุงู„ุฃูˆู„
8
+ - p2.txt: ุงู„ูุตู„ ุงู„ุซุงู†ูŠ
9
+ - p3.txt: ุงู„ูุตู„ ุงู„ุซุงู„ุซ
10
+ - p4.txt: ุงู„ูุตู„ ุงู„ุฑุงุจุน
11
+ - p5.txt: ุงู„ูุตู„ ุงู„ุฎุงู…ุณ
12
+ etc.....
13
+
14
+
15
+ C & Data Structures
16
+
17
+ Chapter 1: Address, Pointers, Arrays, and Structures
18
+ Chapter 2: Address, Pointers, Arrays, and Structures (part 2)
19
+ Chapter 3: function & recursion
20
+ Chapter 4: stack
21
+ Chapter 5: stack (part 2)
22
+ Chapter 6: Queue
23
+
24
+
25
+
26
+ **ุชุนู„ูŠู…ุงุช ุงู„ุชูˆุฌูŠู‡:**
27
+ 1. ุฅุฐุง ูƒุงู†ุช ุงู„ุฑุณุงู„ุฉ ุชุญูŠุฉ ุฃูˆ ุณุคุงู„ ุนุงู… ู„ุง ูŠุชุนู„ู‚ ุจุชุฑุงูƒูŠุจ ุจูŠุงู†ุงุช โ†’ ุงุฎุชุฑ main.txt
28
+ 2. ุฅุฐุง ูƒุงู†ุช ุงู„ุฑุณุงู„ุฉ ุชุณุฃู„ ุนู† ู…ูˆุถูˆุน ู…ุญุฏุฏ ููŠ ุชุฑุงูƒูŠุจ ุจูŠุงู†ุงุช โ†’ ุงุฎุชุฑ ุงู„ู…ู„ู ุงู„ู…ู†ุงุณุจ ุญุณุจ ุงู„ูู‡ุฑุณ
29
+ 3. ุฅุฐุง ูƒุงู†ุช ุงู„ุฑุณุงู„ุฉ ู…ุชุงุจุนุฉ ู„ู…ูˆุถูˆุน ุณุงุจู‚ (ู…ุซู„ "ุงุดุฑุญ ุฃูƒุซุฑ" ุฃูˆ "ู…ุง ุงู„ู…ู‚ุตูˆุฏ") โ†’ ุงุณุชุฎุฏู… ู†ูุณ ุงู„ู…ู„ู ุงู„ุฃุฎูŠุฑ: {last_file}
30
+ 4. ุฅุฐุง ู‚ุงู„ ุงู„ุทุงู„ุจ "ุงุณุชู…ุฑ" ุฃูˆ "ุฃูƒู…ู„" โ†’ ุงุณุชุฎุฏู… ู†ูุณ ุงู„ู…ู„ู ุงู„ุฃุฎูŠุฑ
31
+ 5. ุฃุฌุจ **ูู‚ุท** ุจุงุณู… ุงู„ู…ู„ู (ู…ุซุงู„: p1.txt ุฃูˆ main.txt)
front_end_road.md ADDED
@@ -0,0 +1,530 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # ๐ŸŽจ Frontend Update Road Map
2
+ ## Guide for Frontend Developer
3
+
4
+ This document explains all backend changes that require frontend updates.
5
+ The backend developer cannot see HTML files, and the frontend developer
6
+ cannot see backend code. This file is the bridge.
7
+
8
+ ---
9
+
10
+ ## ๐Ÿ“Œ CRITICAL CHANGE #1: Board Now Supports Multiple Subjects
11
+
12
+ ### What Changed (Backend)
13
+ - The board is NO LONGER hardcoded to `physics_mechanic`
14
+ - Board now works with ANY subject that is in the `BOARD_ENABLED_SUBJECTS` list
15
+ - Each subject has its own folder with its own data files
16
+ - The board page URL changed from `/` to `/board/<subject_id>`
17
+
18
+ ### What Frontend Must Do
19
+
20
+ #### 1. Dashboard (dashboard.html)
21
+ - Each subject card in "my subjects" now has a property `board_enabled` (true/false)
22
+ - For subjects where `board_enabled` is true, show TWO buttons:
23
+ - **"ู…ุญุงุฏุซุฉ"** (Chat) โ†’ links to `/chat_page` (existing)
24
+ - **"ุณุจูˆุฑุฉ"** (Board) โ†’ links to `/board/{subject_id}` (NEW)
25
+ - For subjects where `board_enabled` is false, show only the Chat button
26
+ - Example:
27
+ ```html
28
+ {% if subject.board_enabled %}
29
+ <a href="/board/{{ subject.id }}" class="btn btn-board">๐Ÿ“‹ ุณุจูˆุฑุฉ</a>
30
+ {% endif %}
31
+ <a href="/chat_page" class="btn btn-chat"
32
+ onclick="selectSubject('{{ subject.id }}')">๐Ÿ’ฌ ู…ุญุงุฏุซุฉ</a>
33
+ ```
34
+
35
+ #### 2. Board Page (board.html)
36
+ - The board page now receives these template variables:
37
+ - `{{ username }}` - current user
38
+ - `{{ subject_id }}` - e.g. "physics_mechanic"
39
+ - `{{ subject_name }}` - e.g. "ุงู„ููŠุฒูŠุงุก ุงู„ู…ูŠูƒุงู†ูŠูƒูŠุฉ"
40
+ - Display the subject name in the board header/title
41
+ - The board page URL is now `/board/physics_mechanic` instead of `/`
42
+
43
+ ---
44
+
45
+ ## ๐Ÿ“Œ CRITICAL CHANGE #2: Board API Endpoints Changed
46
+
47
+ ### Old Endpoints (REMOVE)
48
+ ```
49
+ POST /api/message โ†’ REMOVED
50
+ POST /api/replay โ†’ REMOVED
51
+ GET /api/board/state โ†’ REMOVED
52
+ POST /api/board/clear โ†’ REMOVED
53
+ POST /api/chat/clear โ†’ REMOVED
54
+ POST /api/board/sync โ†’ REMOVED
55
+ ```
56
+
57
+ ### New Endpoints (USE THESE)
58
+ ```
59
+ POST /api/board/message โ†’ Send message to board AI
60
+ POST /api/board/replay โ†’ Replay last response (voice only)
61
+ GET /api/board/state โ†’ Get board state
62
+ POST /api/board/clear โ†’ Clear board
63
+ POST /api/board/chat/clear โ†’ Clear board chat history
64
+ POST /api/board/sync โ†’ Sync board state
65
+ POST /api/board/set-subject โ†’ Set/switch board subject
66
+ ```
67
+
68
+ ### New Request Format for /api/board/message
69
+ ```json
70
+ {
71
+ "message": "student text here",
72
+ "board_state": [... current board items ...],
73
+ "subject_id": "physics_mechanic"
74
+ }
75
+ ```
76
+ - `subject_id` is OPTIONAL if already set via `/board/<subject_id>` page
77
+ - `board_state` is the current board items array from frontend (source of truth)
78
+ - Response format is UNCHANGED (same sequence array)
79
+
80
+ ### JavaScript Update Example
81
+ ```javascript
82
+ // OLD CODE (remove this):
83
+ fetch('/api/message', {
84
+ method: 'POST',
85
+ headers: {'Content-Type': 'application/json'},
86
+ body: JSON.stringify({
87
+ message: userMessage,
88
+ board_state: currentBoardState
89
+ })
90
+ })
91
+
92
+ // NEW CODE (use this):
93
+ fetch('/api/board/message', {
94
+ method: 'POST',
95
+ headers: {'Content-Type': 'application/json'},
96
+ body: JSON.stringify({
97
+ message: userMessage,
98
+ board_state: currentBoardState,
99
+ subject_id: CURRENT_SUBJECT_ID // from template: "{{ subject_id }}"
100
+ })
101
+ })
102
+ ```
103
+
104
+ ---
105
+
106
+ ## ๐Ÿ“Œ CRITICAL CHANGE #3: Board Page Gets Subject Info
107
+
108
+ ### Template Variables Available in board.html
109
+ ```html
110
+ <!-- These are injected by the backend -->
111
+ <script>
112
+ const CURRENT_USER = "{{ username }}";
113
+ const CURRENT_SUBJECT_ID = "{{ subject_id }}";
114
+ const CURRENT_SUBJECT_NAME = "{{ subject_name }}";
115
+ </script>
116
+ ```
117
+
118
+ ### Use them in:
119
+ 1. Page title: `<title>{{ subject_name }} - ุงู„ุณุจูˆุฑุฉ</title>`
120
+ 2. Header: Show subject name prominently
121
+ 3. API calls: Include `subject_id` in board message requests
122
+ 4. Back button: Link back to `/dashboard`
123
+
124
+ ---
125
+
126
+ ## ๐Ÿ“Œ CHANGE #4: Exam Page Per Subject
127
+
128
+ ### What Changed
129
+ - Exam page URL: `/exam/<subject_id>` (unchanged)
130
+ - No changes needed in exam.html if it already uses `{{ subject_id }}`
131
+
132
+ ---
133
+
134
+ ## ๐Ÿ“Œ CHANGE #5: Chat Page Subject Selection
135
+
136
+ ### What Changed
137
+ - No changes to chat API endpoints
138
+ - Chat still uses `/select-subject`, `/switch-subject`, `/chat`, `/stream`
139
+ - All unchanged
140
+
141
+ ---
142
+
143
+ ## ๐Ÿ“Œ CHANGE #6: Static Files
144
+
145
+ ### What Changed
146
+ - Audio files still served from `/static/audio/`
147
+ - No changes needed
148
+
149
+ ---
150
+
151
+ ## ๐Ÿ“Œ NEW: Subject Folder Structure
152
+
153
+ Each subject that supports the board must have a folder like:
154
+ ```
155
+ physics_mechanic/
156
+ โ”œโ”€โ”€ main.txt # General info + AI persona
157
+ โ”œโ”€โ”€ structure.txt # Book index/table of contents
158
+ โ”œโ”€โ”€ p1.txt - pN.txt # Chapter content files
159
+ โ””โ”€โ”€ pages_base_url.txt # NEW: URL template for book page images
160
+ ```
161
+
162
+ ### pages_base_url.txt Content Example
163
+ ```
164
+ https://huggingface.co/spaces/CORVO-AI/pages/resolve/main/ู…ูŠูƒุงู†ูŠูƒุง/page_{page_num}.png
165
+ ```
166
+ - Must contain `{page_num}` placeholder
167
+ - Each subject has its own URL pattern
168
+ - If this file is missing, `<page>` tags won't resolve to images
169
+
170
+ ---
171
+
172
+ ## ๐Ÿ“Œ SUMMARY OF FRONTEND FILES TO UPDATE
173
+
174
+ | File | Priority | Changes |
175
+ |------|----------|---------|
176
+ | `dashboard.html` | ๐Ÿ”ด HIGH | Add board button per subject, use `board_enabled` flag |
177
+ | `board.html` | ๐Ÿ”ด HIGH | Update API URLs, add subject_id to requests, show subject name |
178
+ | `chat.html` | ๐ŸŸข NONE | No changes needed |
179
+ | `exam.html` | ๐ŸŸข NONE | No changes needed |
180
+ | `market.html` | ๐ŸŸข NONE | No changes needed |
181
+ | `login.html` | ๐ŸŸข NONE | No changes needed |
182
+ | `signup.html` | ๐ŸŸข NONE | No changes needed |
183
+
184
+ ---
185
+
186
+ ## ๐Ÿ“Œ TESTING CHECKLIST
187
+
188
+ After frontend updates, test these flows:
189
+
190
+ 1. โœ… Login โ†’ Dashboard shows subjects with board/chat buttons
191
+ 2. โœ… Click "ุณุจูˆุฑุฉ" on physics_mechanic โ†’ Opens `/board/physics_mechanic`
192
+ 3. โœ… Board shows subject name in header
193
+ 4. โœ… Send message on board โ†’ AI responds with voice + board elements
194
+ 5. โœ… Board elements appear correctly (notes, text, shapes, icons, page images)
195
+ 6. โœ… Replay works (voice only, no board duplication)
196
+ 7. โœ… Clear board works
197
+ 8. โœ… Navigate back to dashboard
198
+ 9. โœ… Click "ุณุจูˆุฑุฉ" on different subject โ†’ Opens that subject's board
199
+ 10. โœ… Chat page still works independently
200
+ 11. โœ… Exam page still works independently
201
+ 12. โœ… Subjects without board_enabled don't show board button
202
+
203
+ ---
204
+
205
+ ## ๐Ÿ“Œ API RESPONSE FORMAT REFERENCE
206
+
207
+ ### /api/board/message Response (UNCHANGED)
208
+ ```json
209
+ {
210
+ "success": true,
211
+ "chosen_file": "p1.txt",
212
+ "sequence": [
213
+ {
214
+ "type": "board_update",
215
+ "action": "add",
216
+ "items": [
217
+ {"type": "note", "content": "...", "x": 100, "y": 100, ...},
218
+ {"type": "text", "content": "...", "x": 300, "y": 100, ...}
219
+ ]
220
+ },
221
+ {
222
+ "type": "voice",
223
+ "text": "ุฃู‡ู„ุงู‹ ุจูƒ ูŠุง ุทุงู„ุจูŠ...",
224
+ "audio_url": "/static/audio/voice_abc123.mp3"
225
+ },
226
+ {
227
+ "type": "board_update",
228
+ "action": "add",
229
+ "items": [...]
230
+ },
231
+ {
232
+ "type": "voice",
233
+ "text": "...",
234
+ "audio_url": "/static/audio/voice_def456.mp3"
235
+ }
236
+ ],
237
+ "board_state": [... full updated board state ...]
238
+ }
239
+ ```
240
+
241
+ ### /api/board/replay Response
242
+ ```json
243
+ {
244
+ "success": true,
245
+ "sequence": [
246
+ {
247
+ "type": "voice",
248
+ "text": "ุฃู‡ู„ุงู‹ ุจูƒ ูŠุง ุทุงู„ุจูŠ...",
249
+ "audio_url": "/static/audio/voice_abc123.mp3"
250
+ },
251
+ {
252
+ "type": "voice",
253
+ "text": "ู„ุงุญุธ ุงู„ู…ุนุงุฏู„ุฉ ุนู„ู‰ ุงู„ุณุจูˆุฑุฉ...",
254
+ "audio_url": "/static/audio/voice_def456.mp3"
255
+ }
256
+ ]
257
+ }
258
+ ```
259
+ Note: Replay returns ONLY voice segments. Board items are NOT included
260
+ because they are already on the board from the original response.
261
+
262
+ ### /api/board/set-subject Response
263
+ ```json
264
+ {
265
+ "success": true,
266
+ "subject_id": "physics_mechanic",
267
+ "subject_name": "ุงู„ููŠุฒูŠุงุก ุงู„ู…ูŠูƒุงู†ูŠูƒูŠุฉ",
268
+ "message": "ุชู… ุชุญุฏูŠุฏ ู…ุงุฏุฉ 'ุงู„ููŠุฒูŠุงุก ุงู„ู…ูŠูƒุงู†ูŠูƒูŠุฉ' ู„ู„ุณุจูˆุฑุฉ"
269
+ }
270
+ ```
271
+
272
+ ### /api/board/clear Response
273
+ ```json
274
+ {
275
+ "success": true,
276
+ "board_state": []
277
+ }
278
+ ```
279
+
280
+ ### /api/board/chat/clear Response
281
+ ```json
282
+ {
283
+ "success": true
284
+ }
285
+ ```
286
+
287
+ ---
288
+
289
+ ## ๐Ÿ“Œ DASHBOARD SUBJECT CARD DATA FORMAT
290
+
291
+ Each subject in `my_subjects` now has these fields available in the template:
292
+
293
+ ```python
294
+ {
295
+ "id": "physics_mechanic", # Subject ID
296
+ "name": "ุงู„ููŠุฒูŠุงุก ุงู„ู…ูŠูƒุงู†ูŠูƒูŠุฉ", # Display name
297
+ "price": 5, # Price (0 = free)
298
+ "icon": "gear", # FontAwesome icon name
299
+ "free": False, # Is it free?
300
+ "board_enabled": True # NEW: Does it support the board?
301
+ }
302
+ ```
303
+
304
+ ### Dashboard Template Example
305
+ ```html
306
+ {% for subject in my_subjects %}
307
+ <div class="subject-card">
308
+ <div class="subject-icon">
309
+ <i class="fas fa-{{ subject.icon }}"></i>
310
+ </div>
311
+ <h3>{{ subject.name }}</h3>
312
+
313
+ <div class="subject-actions">
314
+ <!-- Chat button - always shown -->
315
+ <a href="/chat_page"
316
+ class="btn btn-chat"
317
+ onclick="localStorage.setItem('selected_subject', '{{ subject.id }}')">
318
+ ๐Ÿ’ฌ ู…ุญุงุฏุซุฉ
319
+ </a>
320
+
321
+ <!-- Board button - only if board_enabled -->
322
+ {% if subject.board_enabled %}
323
+ <a href="/board/{{ subject.id }}" class="btn btn-board">
324
+ ๐Ÿ“‹ ุณุจูˆุฑุฉ ุชูุงุนู„ูŠุฉ
325
+ </a>
326
+ {% endif %}
327
+
328
+ <!-- Exam button - always shown -->
329
+ <a href="/exam/{{ subject.id }}" class="btn btn-exam">
330
+ ๐Ÿ“ ุงุฎุชุจุงุฑ
331
+ </a>
332
+ </div>
333
+ </div>
334
+ {% endfor %}
335
+ ```
336
+
337
+ ---
338
+
339
+ ## ๐Ÿ“Œ BOARD.HTML FULL JAVASCRIPT UPDATE GUIDE
340
+
341
+ ### Step 1: Add Subject Variables (top of script)
342
+ ```javascript
343
+ // These come from the Jinja template
344
+ const CURRENT_SUBJECT_ID = "{{ subject_id }}";
345
+ const CURRENT_SUBJECT_NAME = "{{ subject_name }}";
346
+ const CURRENT_USER = "{{ username }}";
347
+ ```
348
+
349
+ ### Step 2: Update sendMessage Function
350
+ ```javascript
351
+ async function sendMessage() {
352
+ const message = document.getElementById('messageInput').value.trim();
353
+ if (!message) return;
354
+
355
+ // Disable input while processing
356
+ setLoading(true);
357
+
358
+ try {
359
+ const response = await fetch('/api/board/message', {
360
+ method: 'POST',
361
+ headers: {'Content-Type': 'application/json'},
362
+ body: JSON.stringify({
363
+ message: message,
364
+ board_state: getCurrentBoardState(), // Your existing function
365
+ subject_id: CURRENT_SUBJECT_ID // NEW: include subject
366
+ })
367
+ });
368
+
369
+ const data = await response.json();
370
+
371
+ if (data.success) {
372
+ processSequence(data.sequence); // Your existing function
373
+ } else {
374
+ showError(data.error || 'ุญุฏุซ ุฎุทุฃ');
375
+ }
376
+ } catch (err) {
377
+ showError('ุฎุทุฃ ููŠ ุงู„ุงุชุตุงู„ ุจุงู„ุฎุงุฏู…');
378
+ console.error(err);
379
+ } finally {
380
+ setLoading(false);
381
+ }
382
+ }
383
+ ```
384
+
385
+ ### Step 3: Update Replay Function
386
+ ```javascript
387
+ async function replayLast() {
388
+ try {
389
+ const response = await fetch('/api/board/replay', {
390
+ method: 'POST',
391
+ headers: {'Content-Type': 'application/json'}
392
+ });
393
+
394
+ const data = await response.json();
395
+
396
+ if (data.success) {
397
+ // Play ONLY voice segments - no board updates
398
+ processVoiceSequence(data.sequence);
399
+ } else {
400
+ showError(data.error || 'ู„ุง ูŠูˆุฌุฏ ุฑุฏ ุณุงุจู‚');
401
+ }
402
+ } catch (err) {
403
+ showError('ุฎุทุฃ ููŠ ุงู„ุงุชุตุงู„');
404
+ }
405
+ }
406
+ ```
407
+
408
+ ### Step 4: Update Clear Functions
409
+ ```javascript
410
+ async function clearBoard() {
411
+ try {
412
+ await fetch('/api/board/clear', {
413
+ method: 'POST',
414
+ headers: {'Content-Type': 'application/json'}
415
+ });
416
+ // Clear board visually on frontend
417
+ clearBoardVisual();
418
+ } catch (err) {
419
+ console.error(err);
420
+ }
421
+ }
422
+
423
+ async function clearChatHistory() {
424
+ try {
425
+ await fetch('/api/board/chat/clear', {
426
+ method: 'POST',
427
+ headers: {'Content-Type': 'application/json'}
428
+ });
429
+ } catch (err) {
430
+ console.error(err);
431
+ }
432
+ }
433
+ ```
434
+
435
+ ### Step 5: Update Page Title and Header
436
+ ```html
437
+ <title>{{ subject_name }} - ุงู„ุณุจูˆุฑุฉ ุงู„ุชูุงุนู„ูŠุฉ</title>
438
+
439
+ <!-- In the header/navbar -->
440
+ <div class="board-header">
441
+ <a href="/dashboard" class="back-btn">โ†’ ุงู„ุนูˆุฏุฉ</a>
442
+ <h1>๐Ÿ“‹ {{ subject_name }}</h1>
443
+ <span class="user-badge">{{ username }}</span>
444
+ </div>
445
+ ```
446
+
447
+ ---
448
+
449
+ ## ๐Ÿ“Œ BOARD ENABLED SUBJECTS LIST
450
+
451
+ Currently these subjects support the interactive board:
452
+ - `physics_mechanic` - ุงู„ููŠุฒูŠุงุก ุงู„ู…ูŠูƒุงู†ูŠูƒูŠุฉ
453
+ - `physics_electric` - ุงู„ููŠุฒูŠุงุก ุงู„ูƒู‡ุฑุจุงุฆูŠุฉ
454
+ - `chemistry` - ุงู„ูƒูŠู…ูŠุงุก
455
+ - `math` - ุงู„ุฑูŠุงุถูŠุงุช
456
+ - `biology` - ุงู„ุฃุญูŠุงุก
457
+ - `statistics` - ุฃุณุงุณ ุงู„ุฅุญุตุงุก
458
+
459
+ To add more subjects to the board, the backend developer adds the subject ID
460
+ to `BOARD_ENABLED_SUBJECTS` in `subjects/definitions.py` and creates the
461
+ subject folder with the required files.
462
+
463
+ The frontend does NOT need to change when new subjects are added - it just
464
+ checks the `board_enabled` flag.
465
+
466
+ ---
467
+
468
+ ## ๐Ÿ“Œ ERROR HANDLING
469
+
470
+ ### Board API Errors
471
+ All board API endpoints return errors in this format:
472
+ ```json
473
+ {
474
+ "success": false,
475
+ "error": "Error message in Arabic",
476
+ "sequence": [
477
+ {
478
+ "type": "voice",
479
+ "text": "ุนุฐุฑุงู‹ุŒ ุญุฏุซ ุฎุทุฃ...",
480
+ "audio_url": null
481
+ }
482
+ ],
483
+ "board_state": [... unchanged board state ...]
484
+ }
485
+ ```
486
+
487
+ ### HTTP Status Codes
488
+ - `200` - Success
489
+ - `400` - Bad request (missing data, invalid subject)
490
+ - `401` - Unauthorized (session expired)
491
+ - `403` - Forbidden (no access to subject)
492
+ - `404` - Not found (subject folder missing)
493
+ - `500` - Server error
494
+
495
+ ### Frontend Should Handle
496
+ 1. `401` โ†’ Redirect to login page
497
+ 2. `403` with `"code": "no_access"` โ†’ Show "buy subject" prompt
498
+ 3. `400` with `"need_subject": true` โ†’ Show subject selection
499
+ 4. `500` โ†’ Show generic error message
500
+ 5. Voice with `audio_url: null` โ†’ Show text only, skip audio playback
501
+
502
+ ---
503
+
504
+ ## ๐Ÿ“Œ MIGRATION STEPS (Order of Operations)
505
+
506
+ 1. **Backend deploys new code** (all the new files)
507
+ 2. **Frontend updates dashboard.html** (add board buttons)
508
+ 3. **Frontend updates board.html** (new API URLs + subject support)
509
+ 4. **Test board with physics_mechanic** (existing subject)
510
+ 5. **Test board with another subject** (e.g. chemistry)
511
+ 6. **Test chat still works** (should be unchanged)
512
+ 7. **Test exam still works** (should be unchanged)
513
+ 8. **Done!**
514
+
515
+ ---
516
+
517
+ ## ๐Ÿ“Œ CONTACT
518
+
519
+ If anything is unclear or you need more details about a specific
520
+ endpoint or data format, create a question in the shared document
521
+ or contact the backend developer.
522
+
523
+ Backend files you should NEVER modify:
524
+ - Everything in `database/`, `auth/`, `chat/`, `board/`, `exam/`,
525
+ `media/`, `market/`, `websocket/`, `subjects/`
526
+ - `app.py`, `config.py`, `json_processor.py`
527
+
528
+ Frontend files the backend will NEVER modify:
529
+ - Everything in `templates/`
530
+ - Everything in `static/` (except `static/audio/` which is auto-managed)
json_processor.py ADDED
@@ -0,0 +1,162 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import requests
2
+ import json
3
+ import re
4
+ from typing import Optional, Dict, Any, List
5
+
6
+ class BoardProcessor:
7
+ def __init__(self, api_url: str = "https://corvo-ai-claude-4-6-opus.hf.space/chat"):
8
+ self.api_url = api_url
9
+ self.system_prompt = self._load_system_prompt()
10
+
11
+ def _load_system_prompt(self) -> str:
12
+ """Load system prompt from system.txt file"""
13
+ try:
14
+ with open('system.txt', 'r', encoding='utf-8') as f:
15
+ return f.read()
16
+ except FileNotFoundError:
17
+ # Provide a default system prompt if file not found
18
+ return """You are a converter that transforms XML board data into JSON format.
19
+
20
+ Convert the given XML to JSON following these rules:
21
+ 1. Extract all elements from the XML
22
+ 2. Convert them to proper JSON structure
23
+ 3. Wrap your JSON output in <json></json> tags
24
+
25
+ Example:
26
+ Input: <board><note color="yellow" x="100" y="200">Hello</note></board>
27
+ Output: <json>{"board": {"notes": [{"color": "yellow", "x": 100, "y": 200, "text": "Hello"}]}}</json>
28
+
29
+ Always wrap your final JSON output in <json></json> tags."""
30
+
31
+ def _call_ai_api(
32
+ self,
33
+ user_input: Optional[str] = None,
34
+ chat_history: Optional[List[Dict[str, Any]]] = None,
35
+ temperature: float = 0.9,
36
+ top_p: float = 0.95,
37
+ max_tokens: Optional[int] = None
38
+ ) -> str:
39
+ """Call the AI API and return the assistant's response"""
40
+
41
+ payload = {
42
+ "user_input": user_input,
43
+ "chat_history": chat_history or [],
44
+ "temperature": temperature,
45
+ "top_p": top_p,
46
+ "max_tokens": max_tokens
47
+ }
48
+
49
+ try:
50
+ response = requests.post(self.api_url, json=payload, timeout=120)
51
+ response.raise_for_status()
52
+ result = response.json()
53
+ return result.get("assistant_response", "")
54
+ except requests.exceptions.RequestException as e:
55
+ raise Exception(f"API request failed: {str(e)}")
56
+
57
+ def _extract_json_from_response(self, response: str) -> str:
58
+ """Extract JSON from <json></json> tags in the AI response and return as text"""
59
+
60
+ # Print the raw response for debugging
61
+ print("\n๐Ÿ” DEBUG - Raw AI Response:")
62
+ print("=" * 80)
63
+ print(response)
64
+ print("=" * 80)
65
+
66
+ # Try multiple patterns to find JSON
67
+ patterns = [
68
+ r'<json>(.*?)</json>', # Standard <json></json> tags
69
+ r'```json\s*(.*?)\s*```', # Markdown code blocks
70
+ r'```\s*(.*?)\s*```', # Generic code blocks
71
+ ]
72
+
73
+ for pattern in patterns:
74
+ json_match = re.search(pattern, response, re.DOTALL)
75
+ if json_match:
76
+ json_str = json_match.group(1).strip()
77
+ try:
78
+ json.loads(json_str) # Validate
79
+ return json_str
80
+ except json.JSONDecodeError:
81
+ continue
82
+
83
+ # If no tags found, try to find JSON directly in the response
84
+ try:
85
+ # Look for JSON object pattern
86
+ json_match = re.search(r'\{.*\}', response, re.DOTALL)
87
+ if json_match:
88
+ json_str = json_match.group(0).strip()
89
+ json.loads(json_str) # Validate
90
+ return json_str
91
+ except json.JSONDecodeError:
92
+ pass
93
+
94
+ raise ValueError("No valid JSON found in AI response. Check the debug output above.")
95
+
96
+ def convert_xml_to_json(
97
+ self,
98
+ xml_text: str,
99
+ temperature: float = 0.9,
100
+ top_p: float = 0.95,
101
+ max_tokens: Optional[int] = None
102
+ ) -> str:
103
+ """
104
+ Convert XML text to Board JSON text
105
+
106
+ Args:
107
+ xml_text: The XML string to convert
108
+ temperature: AI temperature parameter (default: 0.9)
109
+ top_p: AI top_p parameter (default: 0.95)
110
+ max_tokens: Maximum tokens for AI response (default: None)
111
+
112
+ Returns:
113
+ JSON string (as text)
114
+ """
115
+
116
+ # Prepare chat history with system prompt
117
+ chat_history = [
118
+ {"role": "system", "content": self.system_prompt}
119
+ ]
120
+
121
+
122
+
123
+ # Call AI API with XML input
124
+ ai_response = self._call_ai_api(
125
+ user_input=xml_text,
126
+ chat_history=chat_history,
127
+ temperature=temperature,
128
+ top_p=top_p,
129
+ max_tokens=max_tokens
130
+ )
131
+ print(xml_text)
132
+
133
+ # Extract and return JSON as text
134
+ json_text = self._extract_json_from_response(ai_response)
135
+
136
+ return json_text
137
+
138
+
139
+ # Example usage
140
+ if __name__ == "__main__":
141
+ processor = BoardProcessor()
142
+
143
+ xml_input = """
144
+ <board>
145
+ <note color="yellow" x="100" y="200" w="280" h="140">ู‚ุงู†ูˆู† ู†ูŠูˆุชู† ุงู„ุซุงู†ูŠ:
146
+ ุงู„ู‚ูˆุฉ = ุงู„ูƒุชู„ุฉ ร— ุงู„ุชุณุงุฑุน
147
+ F = m ร— a</note>
148
+ <svg>ball</svg>
149
+ </board>
150
+ """
151
+
152
+ try:
153
+ json_output = processor.convert_xml_to_json(xml_input)
154
+ print("\nโœ… Conversion successful!")
155
+ print("\nJSON Output (as text):")
156
+ print(json_output)
157
+
158
+ # Optionally pretty print
159
+ print("\n๐Ÿ“‹ Pretty printed:")
160
+ print(json.dumps(json.loads(json_output), indent=2, ensure_ascii=False))
161
+ except Exception as e:
162
+ print(f"\nโŒ Error: {str(e)}")
system.txt ADDED
@@ -0,0 +1,826 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <script>
2
+ // โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
3
+ // MICANICA AI BOARD โ€” COMPLETE ENGINE
4
+ // โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
5
+
6
+ const $ = id => document.getElementById(id);
7
+ const canvas = $('canvas');
8
+ const canvasArea = $('canvas-area');
9
+ const contextMenu = $('context-menu');
10
+ const emptyState = $('emptyState');
11
+ const zoomDisplay = $('zoomDisplay');
12
+ const minimapCanvas = $('minimap-canvas');
13
+ const minimapCtx = minimapCanvas.getContext('2d');
14
+ const modalOverlay = $('modal-overlay');
15
+ const modalTextarea = $('modalTextarea');
16
+ const modalTitle = $('modalTitle');
17
+ const imageInput = $('imageInput');
18
+ const importFileInput = $('importFileInput');
19
+ const chatInput = $('chatInput');
20
+ const btnSend = $('btnSend');
21
+ const aiStatus = $('ai-status');
22
+ const statusText = aiStatus.querySelector('.status-text');
23
+ const voicePlayer = $('voicePlayer');
24
+ const playbackControls = $('playback-controls');
25
+ const iconPlay = $('iconPlay');
26
+ const iconPause = $('iconPause');
27
+ const progressFill = $('progressFill');
28
+ const stepInfo = $('stepInfo');
29
+
30
+ // โ”€โ”€โ”€ STATE โ”€โ”€โ”€
31
+ let items = [];
32
+ let itemIdCounter = 0;
33
+ let selectedItemId = null;
34
+ let contextItemId = null;
35
+ let scale = 1;
36
+ let panX = 0, panY = 0;
37
+ let isPanning = false;
38
+ let panStartX = 0, panStartY = 0;
39
+ let panStartPanX = 0, panStartPanY = 0;
40
+ let sidebarOpen = false;
41
+ let currentMaxZ = 10;
42
+ let lastTouchDist = 0;
43
+ let lastTouchMid = {x:0, y:0};
44
+ let lastTapTime = 0;
45
+
46
+ // AI Playback
47
+ let currentSequence = [];
48
+ let currentStepIndex = 0;
49
+ let isPlaying = false;
50
+ let playbackPaused = false;
51
+ let voiceResolve = null; // to resolve voice promise on skip
52
+
53
+ // โ”€โ”€โ”€ UTILS โ”€โ”€โ”€
54
+ const WOBBLY = [
55
+ '255px 15px 225px 15px / 15px 225px 15px 255px',
56
+ '15px 225px 15px 255px / 225px 15px 255px 15px',
57
+ '225px 15px 255px 15px / 15px 255px 15px 225px',
58
+ '15px 255px 15px 225px / 255px 15px 225px 15px',
59
+ ];
60
+ function randomWobbly() { return WOBBLY[Math.floor(Math.random() * WOBBLY.length)]; }
61
+ function randomRotation() { return (Math.random() * 4 - 2).toFixed(1); }
62
+ function nextZ() { return ++currentMaxZ; }
63
+ function sleep(ms) { return new Promise(r => setTimeout(r, ms)); }
64
+
65
+ function updateCanvasTransform() {
66
+ canvas.style.transform = `translate(${panX}px, ${panY}px) scale(${scale})`;
67
+ zoomDisplay.textContent = Math.round(scale * 100) + '%';
68
+ updateMinimap();
69
+ }
70
+
71
+ function hideEmptyState() {
72
+ emptyState.style.display = items.length > 0 ? 'none' : '';
73
+ }
74
+
75
+ function canvasXYFromClient(cx, cy) {
76
+ const rect = canvasArea.getBoundingClientRect();
77
+ return { x: (cx - rect.left - panX) / scale, y: (cy - rect.top - panY) / scale };
78
+ }
79
+
80
+ function centerCanvasXY() {
81
+ const rect = canvasArea.getBoundingClientRect();
82
+ return canvasXYFromClient(rect.left + rect.width / 2, rect.top + rect.height / 2);
83
+ }
84
+
85
+ function setStatus(status, text) {
86
+ aiStatus.className = 'ai-status ' + status;
87
+ statusText.textContent = text;
88
+ }
89
+
90
+ // โ”€โ”€โ”€ SHAPE SVGs โ”€โ”€โ”€
91
+ function getShapeSVG(shape, size = 80) {
92
+ const s = size;
93
+ const m = {
94
+ 'rectangle': `<svg width="${s}" height="${s*.7}" viewBox="0 0 48 34"><rect x="2" y="2" width="44" height="30" rx="2"/></svg>`,
95
+ 'circle': `<svg width="${s}" height="${s}" viewBox="0 0 48 48"><circle cx="24" cy="24" r="20"/></svg>`,
96
+ 'triangle': `<svg width="${s}" height="${s}" viewBox="0 0 48 48"><polygon points="24,4 44,44 4,44"/></svg>`,
97
+ 'diamond': `<svg width="${s}" height="${s}" viewBox="0 0 48 48"><polygon points="24,4 44,24 24,44 4,24"/></svg>`,
98
+ 'star': `<svg width="${s}" height="${s}" viewBox="0 0 48 48"><polygon points="24,4 29,18 44,18 32,27 36,42 24,33 12,42 16,27 4,18 19,18"/></svg>`,
99
+ 'hexagon': `<svg width="${s}" height="${s}" viewBox="0 0 48 48"><polygon points="24,4 42,14 42,34 24,44 6,34 6,14"/></svg>`,
100
+ 'pentagon': `<svg width="${s}" height="${s}" viewBox="0 0 48 48"><polygon points="24,4 44,18 36,42 12,42 4,18"/></svg>`,
101
+ 'square': `<svg width="${s}" height="${s}" viewBox="0 0 48 48"><rect x="6" y="6" width="36" height="36" rx="2"/></svg>`,
102
+ 'oval': `<svg width="${s}" height="${s*.7}" viewBox="0 0 48 34"><ellipse cx="24" cy="17" rx="22" ry="15"/></svg>`,
103
+ 'heart': `<svg width="${s}" height="${s}" viewBox="0 0 48 48"><path d="M24,42 C16,34 4,26 4,16 A10,10 0 0 1 24,12 A10,10 0 0 1 44,16 C44,26 32,34 24,42z"/></svg>`,
104
+ 'arrow-right': `<svg width="${s}" height="${s*.5}" viewBox="0 0 48 24" stroke-width="3"><line x1="4" y1="12" x2="38" y2="12"/><polyline points="30,4 38,12 30,20"/></svg>`,
105
+ 'arrow-left': `<svg width="${s}" height="${s*.5}" viewBox="0 0 48 24" stroke-width="3"><line x1="44" y1="12" x2="10" y2="12"/><polyline points="18,4 10,12 18,20"/></svg>`,
106
+ 'arrow-up': `<svg width="${s*.5}" height="${s}" viewBox="0 0 24 48" stroke-width="3"><line x1="12" y1="44" x2="12" y2="10"/><polyline points="4,18 12,10 20,18"/></svg>`,
107
+ 'arrow-down': `<svg width="${s*.5}" height="${s}" viewBox="0 0 24 48" stroke-width="3"><line x1="12" y1="4" x2="12" y2="38"/><polyline points="4,30 12,38 20,30"/></svg>`,
108
+ 'arrow-double-h': `<svg width="${s}" height="${s*.5}" viewBox="0 0 48 24" stroke-width="3"><line x1="10" y1="12" x2="38" y2="12"/><polyline points="18,4 10,12 18,20"/><polyline points="30,4 38,12 30,20"/></svg>`,
109
+ 'process': `<svg width="${s}" height="${s*.6}" viewBox="0 0 48 28"><rect x="2" y="2" width="44" height="24" rx="2"/></svg>`,
110
+ 'decision': `<svg width="${s}" height="${s*.7}" viewBox="0 0 48 34"><polygon points="24,2 46,17 24,32 2,17"/></svg>`,
111
+ 'speech': `<svg width="${s}" height="${s}" viewBox="0 0 48 48"><path d="M6,8 h28 a4,4 0 0 1 4,4 v14 a4,4 0 0 1 -4,4 h-14 l-8,8 v-8 h-6 a4,4 0 0 1 -4,-4 v-14 a4,4 0 0 1 4,-4z"/></svg>`,
112
+ 'cloud': `<svg width="${s}" height="${s*.75}" viewBox="0 0 48 36"><path d="M10,30 A8,8 0 0 1 8,14 A10,10 0 0 1 26,10 A8,8 0 0 1 38,18 A6,6 0 0 1 36,30z"/></svg>`,
113
+ 'checkmark': `<svg width="${s}" height="${s}" viewBox="0 0 48 48" stroke-width="4"><polyline points="10,26 20,36 38,14"/></svg>`,
114
+ 'cross': `<svg width="${s}" height="${s}" viewBox="0 0 48 48" stroke-width="3"><line x1="10" y1="10" x2="38" y2="38"/><line x1="38" y1="10" x2="10" y2="38"/></svg>`,
115
+ 'lightning': `<svg width="${s*.6}" height="${s}" viewBox="0 0 30 48"><polygon points="18,4 8,22 16,22 12,44 26,18 18,18"/></svg>`,
116
+ };
117
+ return m[shape] || m['circle'];
118
+ }
119
+
120
+ // โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
121
+ // BOARD ITEM CREATORS
122
+ // โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
123
+
124
+ function addNote(color='yellow', x, y, text='', w=220, h=180, isAI=false) {
125
+ const id = ++itemIdCounter;
126
+ if (x === undefined || y === undefined) { const c = centerCanvasXY(); x = c.x - 110 + Math.random()*60-30; y = c.y - 90 + Math.random()*60-30; }
127
+ const rot = randomRotation(), wob = randomWobbly(), z = nextZ();
128
+ const deco = Math.random() > 0.5 ? 'tape' : (Math.random() > 0.5 ? 'pin' : 'none');
129
+
130
+ const el = document.createElement('div');
131
+ el.className = `workspace-item note-paper${color==='yellow'?'':' '+color}${isAI?' ai-placed':''}`;
132
+ el.id = `item-${id}`;
133
+ el.dataset.itemId = id;
134
+ el.style.cssText = `left:${x}px;top:${y}px;width:${w}px;height:${h}px;transform:rotate(${rot}deg);border-radius:${wob};z-index:${z};`;
135
+
136
+ let decoHTML = '';
137
+ if (deco==='tape') decoHTML = `<div class="note-tape" style="transform:translateX(-50%) rotate(${(Math.random()*6-3).toFixed(1)}deg)"></div>`;
138
+ else if (deco==='pin') decoHTML = `<div class="note-pin"></div>`;
139
+
140
+ el.innerHTML = `${decoHTML}
141
+ <div class="note-header" data-drag-handle="${id}">
142
+ <div style="display:flex;gap:4px;">
143
+ <div class="note-color-dot" style="background:var(--postit)" data-color-btn="yellow" data-for="${id}"></div>
144
+ <div class="note-color-dot" style="background:var(--postit-blue)" data-color-btn="blue" data-for="${id}"></div>
145
+ <div class="note-color-dot" style="background:var(--postit-pink)" data-color-btn="pink" data-for="${id}"></div>
146
+ <div class="note-color-dot" style="background:var(--postit-green)" data-color-btn="green" data-for="${id}"></div>
147
+ </div>
148
+ <button class="note-close" data-close-btn="${id}">โœ•</button>
149
+ </div>
150
+ <div class="note-body"><textarea placeholder="ุงูƒุชุจ ู‡ู†ุง...">${text}</textarea></div>
151
+ <div class="note-resize" data-resize-handle="${id}"><svg viewBox="0 0 16 16"><path d="M14,2 L2,14 M14,8 L8,14 M14,14 L14,14"/></svg></div>`;
152
+
153
+ canvas.appendChild(el);
154
+ items.push({id, type:'note', el, x, y, color, w, h, rotation:rot, text});
155
+ if(!isAI) selectItem(id);
156
+ hideEmptyState(); updateMinimap();
157
+ return id;
158
+ }
159
+
160
+ function addBoardText(content='', x, y, size=20, color='#2d2d2d', font='Kalam', isAI=false) {
161
+ const id = ++itemIdCounter;
162
+ if (x===undefined||y===undefined) { const c=centerCanvasXY(); x=c.x-100; y=c.y-15; }
163
+ const z = nextZ();
164
+
165
+ const el = document.createElement('div');
166
+ el.className = `workspace-item board-text${isAI?' ai-placed':''}`;
167
+ el.id = `item-${id}`;
168
+ el.dataset.itemId = id;
169
+ el.style.cssText = `left:${x}px;top:${y}px;z-index:${z};font-size:${size}px;color:${color};font-family:'${font}',cursive;`;
170
+ el.contentEditable = true;
171
+ el.textContent = content;
172
+
173
+ const closeBtn = document.createElement('button');
174
+ closeBtn.className = 'text-close-btn';
175
+ closeBtn.dataset.closeBtn = id;
176
+ closeBtn.textContent = 'โœ•';
177
+ el.appendChild(closeBtn);
178
+
179
+ canvas.appendChild(el);
180
+ items.push({id, type:'text', el, x, y, content, size, color, font, w:el.offsetWidth||200, h:size+20});
181
+ hideEmptyState(); updateMinimap();
182
+ return id;
183
+ }
184
+
185
+ function placeShape(shape, x, y, size=80, isAI=false) {
186
+ const id = ++itemIdCounter;
187
+ if (x===undefined||y===undefined) { const c=centerCanvasXY(); x=c.x-40+Math.random()*40-20; y=c.y-40+Math.random()*40-20; }
188
+ const rot = randomRotation(), z = nextZ();
189
+
190
+ const el = document.createElement('div');
191
+ el.className = `workspace-item canvas-shape${isAI?' ai-placed':''}`;
192
+ el.id = `item-${id}`;
193
+ el.dataset.itemId = id;
194
+ el.style.cssText = `left:${x}px;top:${y}px;transform:rotate(${rot}deg);z-index:${z};padding:4px;`;
195
+ el.innerHTML = getShapeSVG(shape, size);
196
+
197
+ canvas.appendChild(el);
198
+ items.push({id, type:'shape', shape, el, x, y, rotation:rot, size});
199
+ hideEmptyState(); updateMinimap();
200
+ return id;
201
+ }
202
+
203
+ function addSvgImage(url, x, y, w=120, h=120, name='', isAI=false) {
204
+ const id = ++itemIdCounter;
205
+ if (x===undefined||y===undefined) { const c=centerCanvasXY(); x=c.x-w/2; y=c.y-h/2; }
206
+ const z = nextZ();
207
+
208
+ const el = document.createElement('div');
209
+ el.className = `workspace-item canvas-svg-image${isAI?' ai-placed':''}`;
210
+ el.id = `item-${id}`;
211
+ el.dataset.itemId = id;
212
+ el.style.cssText = `left:${x}px;top:${y}px;width:${w}px;height:${h}px;z-index:${z};`;
213
+ el.innerHTML = `<button class="img-close" data-close-btn="${id}">โœ•</button>
214
+ <img src="${url}" alt="${name}" draggable="false">
215
+ <div class="note-resize" data-resize-handle="${id}"><svg viewBox="0 0 16 16"><path d="M14,2 L2,14 M14,8 L8,14 M14,14 L14,14"/></svg></div>`;
216
+
217
+ canvas.appendChild(el);
218
+ items.push({id, type:'image', subtype:'svg_icon', el, x, y, w, h, url, name, no_bg:true});
219
+ hideEmptyState(); updateMinimap();
220
+ return id;
221
+ }
222
+
223
+ function addPageImage(url, x, y, w=300, h=400, pageNumber='', isAI=false) {
224
+ const id = ++itemIdCounter;
225
+ if (x===undefined||y===undefined) { const c=centerCanvasXY(); x=c.x-w/2; y=c.y-h/2; }
226
+ const z = nextZ();
227
+
228
+ const el = document.createElement('div');
229
+ el.className = `workspace-item canvas-page-image${isAI?' ai-placed':''}`;
230
+ el.id = `item-${id}`;
231
+ el.dataset.itemId = id;
232
+ el.style.cssText = `left:${x}px;top:${y}px;width:${w}px;height:${h}px;z-index:${z};`;
233
+ el.innerHTML = `<div class="page-curl"></div>
234
+ <div class="page-label">๐Ÿ“– ุตูุญุฉ ${pageNumber}</div>
235
+ <button class="img-close" data-close-btn="${id}">โœ•</button>
236
+ <img src="${url}" alt="ุตูุญุฉ ${pageNumber}" draggable="false">
237
+ <div class="note-resize" data-resize-handle="${id}"><svg viewBox="0 0 16 16"><path d="M14,2 L2,14 M14,8 L8,14 M14,14 L14,14"/></svg></div>`;
238
+
239
+ canvas.appendChild(el);
240
+ items.push({id, type:'image', subtype:'page', el, x, y, w, h, url, pageNumber, is_page:true});
241
+ hideEmptyState(); updateMinimap();
242
+ return id;
243
+ }
244
+
245
+ function addImage(dataUrl, x, y, w, h) {
246
+ const id = ++itemIdCounter;
247
+ if (x===undefined||y===undefined) { const c=centerCanvasXY(); x=c.x-(w||200)/2; y=c.y-(h||150)/2; }
248
+ w=w||240; h=h||180;
249
+ const rot = randomRotation(), z = nextZ();
250
+
251
+ const el = document.createElement('div');
252
+ el.className = 'workspace-item canvas-image';
253
+ el.id = `item-${id}`;
254
+ el.dataset.itemId = id;
255
+ el.style.cssText = `left:${x}px;top:${y}px;width:${w}px;height:${h}px;transform:rotate(${rot}deg);z-index:${z};`;
256
+ el.innerHTML = `<button class="img-close" data-close-btn="${id}">โœ•</button>
257
+ <img src="${dataUrl}" alt="image" draggable="false">
258
+ <div class="note-resize" data-resize-handle="${id}"><svg viewBox="0 0 16 16"><path d="M14,2 L2,14 M14,8 L8,14 M14,14 L14,14"/></svg></div>`;
259
+
260
+ canvas.appendChild(el);
261
+ items.push({id, type:'image', subtype:'upload', el, x, y, w, h, rotation:rot, dataUrl});
262
+ hideEmptyState(); updateMinimap();
263
+ return id;
264
+ }
265
+
266
+ function addBoardItems(itemsData, isAI=true) {
267
+ itemsData.forEach(d => {
268
+ if (d.type==='note') addNote(d.color||'yellow', d.x, d.y, d.text||'', d.w||220, d.h||180, isAI);
269
+ else if (d.type==='text') addBoardText(d.content||'', d.x, d.y, d.size||20, d.color||'#2d2d2d', d.font||'Kalam', isAI);
270
+ else if (d.type==='shape') placeShape(d.shape||'circle', d.x, d.y, d.size||80, isAI);
271
+ else if (d.type==='image') {
272
+ if (d.is_page||d.subtype==='page') addPageImage(d.url, d.x, d.y, d.w||300, d.h||400, d.pageNumber||'', isAI);
273
+ else if (d.no_bg||d.subtype==='svg_icon') addSvgImage(d.url, d.x, d.y, d.w||120, d.h||120, d.name||'', isAI);
274
+ else addImage(d.dataUrl||d.url, d.x, d.y, d.w||240, d.h||180);
275
+ }
276
+ });
277
+ deselectAll(); hideEmptyState(); updateMinimap();
278
+ }
279
+
280
+ // โ”€โ”€โ”€ SELECTION / REMOVE / COLOR โ”€โ”€โ”€
281
+ function changeNoteColor(id, color) {
282
+ const el = $(`item-${id}`); if(!el) return;
283
+ el.classList.remove('blue','pink','green','orange','white','purple');
284
+ if(color!=='yellow') el.classList.add(color);
285
+ const item = items.find(i=>i.id===id); if(item) item.color=color;
286
+ }
287
+
288
+ function selectItem(id) {
289
+ if (selectedItemId!==null) { const p=$(`item-${selectedItemId}`); if(p) p.classList.remove('selected'); }
290
+ selectedItemId = id;
291
+ const el = $(`item-${id}`);
292
+ if(el) { el.classList.add('selected'); el.style.zIndex = nextZ(); }
293
+ }
294
+
295
+ function deselectAll() {
296
+ if (selectedItemId!==null) { const el=$(`item-${selectedItemId}`); if(el) el.classList.remove('selected'); }
297
+ selectedItemId = null;
298
+ }
299
+
300
+ function removeItem(id) {
301
+ const el = $(`item-${id}`); if(el) el.remove();
302
+ items = items.filter(i=>i.id!==id);
303
+ if(selectedItemId===id) selectedItemId=null;
304
+ if(contextItemId===id) contextItemId=null;
305
+ hideEmptyState(); updateMinimap(); syncBoardState();
306
+ }
307
+
308
+ // โ”€โ”€โ”€ DRAG / RESIZE โ”€โ”€โ”€
309
+ function startItemDrag(id, cx, cy) {
310
+ selectItem(id);
311
+ const el = $(`item-${id}`); if(!el) return;
312
+ const r = el.getBoundingClientRect();
313
+ const ox = cx-r.left, oy = cy-r.top;
314
+
315
+ function mv(ex,ey) { const p=canvasXYFromClient(ex,ey); const nx=p.x-ox/scale, ny=p.y-oy/scale; el.style.left=nx+'px'; el.style.top=ny+'px'; const it=items.find(i=>i.id===id); if(it){it.x=nx;it.y=ny;} }
316
+ function mm(e){mv(e.clientX,e.clientY);}
317
+ function tm(e){if(e.touches.length===1){e.preventDefault();mv(e.touches[0].clientX,e.touches[0].clientY);}}
318
+ function up(){window.removeEventListener('mousemove',mm);window.removeEventListener('mouseup',up);window.removeEventListener('touchmove',tm);window.removeEventListener('touchend',up);window.removeEventListener('touchcancel',up);updateMinimap();syncBoardState();}
319
+ window.addEventListener('mousemove',mm);window.addEventListener('mouseup',up);
320
+ window.addEventListener('touchmove',tm,{passive:false});window.addEventListener('touchend',up);window.addEventListener('touchcancel',up);
321
+ }
322
+
323
+ function startItemResize(id, cx, cy) {
324
+ const el = $(`item-${id}`); if(!el) return;
325
+ const sw=el.offsetWidth, sh=el.offsetHeight, sx=cx, sy=cy;
326
+ function mv(ex,ey){const dx=(ex-sx)/scale,dy=(ey-sy)/scale; el.style.width=Math.max(80,sw+dx)+'px'; el.style.height=Math.max(60,sh+dy)+'px'; const it=items.find(i=>i.id===id);if(it){it.w=Math.max(80,sw+dx);it.h=Math.max(60,sh+dy);}}
327
+ function mm(e){mv(e.clientX,e.clientY);}
328
+ function tm(e){if(e.touches.length===1){e.preventDefault();mv(e.touches[0].clientX,e.touches[0].clientY);}}
329
+ function up(){window.removeEventListener('mousemove',mm);window.removeEventListener('mouseup',up);window.removeEventListener('touchmove',tm);window.removeEventListener('touchend',up);updateMinimap();}
330
+ window.addEventListener('mousemove',mm);window.addEventListener('mouseup',up);
331
+ window.addEventListener('touchmove',tm,{passive:false});window.addEventListener('touchend',up);
332
+ }
333
+
334
+ // โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
335
+ // PAN / ZOOM
336
+ // โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
337
+
338
+ canvasArea.addEventListener('mousedown', e => {
339
+ if(e.target.closest('.workspace-item')||e.target.closest('#chat-bar')||e.button!==0) return;
340
+ deselectAll(); isPanning=true; panStartX=e.clientX; panStartY=e.clientY; panStartPanX=panX; panStartPanY=panY; canvasArea.style.cursor='grabbing';
341
+ });
342
+ window.addEventListener('mousemove', e => { if(!isPanning)return; panX=panStartPanX+(e.clientX-panStartX); panY=panStartPanY+(e.clientY-panStartY); updateCanvasTransform(); });
343
+ window.addEventListener('mouseup', () => { if(isPanning){isPanning=false;canvasArea.style.cursor='crosshair';} });
344
+
345
+ canvasArea.addEventListener('touchstart', e => {
346
+ const t=e.target;
347
+ if(t.closest('#chat-bar')||t.closest('#playback-controls')) return;
348
+ const ws=t.closest('.workspace-item');
349
+
350
+ const rh=t.closest('[data-resize-handle]');
351
+ if(rh){e.preventDefault();startItemResize(parseInt(rh.dataset.resizeHandle),e.touches[0].clientX,e.touches[0].clientY);return;}
352
+ const cb=t.closest('[data-close-btn]');
353
+ if(cb){e.preventDefault();removeItem(parseInt(cb.dataset.closeBtn));return;}
354
+ const co=t.closest('[data-color-btn]');
355
+ if(co){e.preventDefault();changeNoteColor(parseInt(co.dataset.for),co.dataset.colorBtn);return;}
356
+ if(t.tagName==='TEXTAREA'||t.contentEditable==='true') return;
357
+ const dh=t.closest('[data-drag-handle]');
358
+ if(dh&&e.touches.length===1){e.preventDefault();startItemDrag(parseInt(dh.dataset.dragHandle),e.touches[0].clientX,e.touches[0].clientY);return;}
359
+ if(ws&&!dh&&e.touches.length===1){e.preventDefault();startItemDrag(parseInt(ws.dataset.itemId),e.touches[0].clientX,e.touches[0].clientY);return;}
360
+
361
+ if(!ws){
362
+ e.preventDefault(); deselectAll();
363
+ if(e.touches.length===1){isPanning=true;panStartX=e.touches[0].clientX;panStartY=e.touches[0].clientY;panStartPanX=panX;panStartPanY=panY;}
364
+ else if(e.touches.length===2){isPanning=false;const dx=e.touches[1].clientX-e.touches[0].clientX,dy=e.touches[1].clientY-e.touches[0].clientY;lastTouchDist=Math.hypot(dx,dy);lastTouchMid={x:(e.touches[0].clientX+e.touches[1].clientX)/2,y:(e.touches[0].clientY+e.touches[1].clientY)/2};}
365
+ }
366
+ },{passive:false});
367
+
368
+ canvasArea.addEventListener('touchmove', e => {
369
+ if(e.target.tagName==='TEXTAREA'||e.target.contentEditable==='true'||e.target.closest('#chat-bar')) return;
370
+ if(e.touches.length===1&&isPanning){e.preventDefault();panX=panStartPanX+(e.touches[0].clientX-panStartX);panY=panStartPanY+(e.touches[0].clientY-panStartY);updateCanvasTransform();}
371
+ else if(e.touches.length===2){
372
+ e.preventDefault();isPanning=false;
373
+ const dx=e.touches[1].clientX-e.touches[0].clientX,dy=e.touches[1].clientY-e.touches[0].clientY;
374
+ const dist=Math.hypot(dx,dy);
375
+ const mid={x:(e.touches[0].clientX+e.touches[1].clientX)/2,y:(e.touches[0].clientY+e.touches[1].clientY)/2};
376
+ if(lastTouchDist>0){const rect=canvasArea.getBoundingClientRect();const mx=mid.x-rect.left,my=mid.y-rect.top;const os=scale;scale=Math.min(3,Math.max(0.2,scale*(dist/lastTouchDist)));panX=mx-(mx-panX)*(scale/os)+(mid.x-lastTouchMid.x);panY=my-(my-panY)*(scale/os)+(mid.y-lastTouchMid.y);updateCanvasTransform();}
377
+ lastTouchDist=dist;lastTouchMid=mid;
378
+ }
379
+ },{passive:false});
380
+
381
+ canvasArea.addEventListener('touchend', e => {
382
+ if(e.touches.length===0){isPanning=false;lastTouchDist=0;}
383
+ else if(e.touches.length===1){isPanning=true;panStartX=e.touches[0].clientX;panStartY=e.touches[0].clientY;panStartPanX=panX;panStartPanY=panY;lastTouchDist=0;}
384
+ });
385
+
386
+ // Mouse on canvas items
387
+ canvas.addEventListener('mousedown', e => {
388
+ const t=e.target;
389
+ const rh=t.closest('[data-resize-handle]');if(rh){e.preventDefault();e.stopPropagation();startItemResize(parseInt(rh.dataset.resizeHandle),e.clientX,e.clientY);return;}
390
+ const cb=t.closest('[data-close-btn]');if(cb){e.preventDefault();e.stopPropagation();removeItem(parseInt(cb.dataset.closeBtn));return;}
391
+ const co=t.closest('[data-color-btn]');if(co){e.preventDefault();e.stopPropagation();changeNoteColor(parseInt(co.dataset.for),co.dataset.colorBtn);return;}
392
+ if(t.tagName==='TEXTAREA'||t.contentEditable==='true') return;
393
+ const dh=t.closest('[data-drag-handle]');if(dh&&e.button===0){e.preventDefault();e.stopPropagation();startItemDrag(parseInt(dh.dataset.dragHandle),e.clientX,e.clientY);return;}
394
+ const ws=t.closest('.workspace-item');if(ws&&e.button===0){e.preventDefault();e.stopPropagation();startItemDrag(parseInt(ws.dataset.itemId),e.clientX,e.clientY);return;}
395
+ });
396
+
397
+ // Wheel zoom
398
+ canvasArea.addEventListener('wheel', e => {
399
+ if(e.target.closest('#chat-bar')) return;
400
+ e.preventDefault();const rect=canvasArea.getBoundingClientRect();const mx=e.clientX-rect.left,my=e.clientY-rect.top;const os=scale;scale=Math.min(3,Math.max(0.2,scale+(e.deltaY>0?-0.08:0.08)));panX=mx-(mx-panX)*(scale/os);panY=my-(my-panY)*(scale/os);updateCanvasTransform();
401
+ },{passive:false});
402
+
403
+ // Zoom buttons
404
+ $('btnZoomIn').addEventListener('click',()=>{const r=canvasArea.getBoundingClientRect();const cx=r.width/2,cy=r.height/2;const os=scale;scale=Math.min(3,scale+0.15);panX=cx-(cx-panX)*(scale/os);panY=cy-(cy-panY)*(scale/os);updateCanvasTransform();});
405
+ $('btnZoomOut').addEventListener('click',()=>{const r=canvasArea.getBoundingClientRect();const cx=r.width/2,cy=r.height/2;const os=scale;scale=Math.max(0.2,scale-0.15);panX=cx-(cx-panX)*(scale/os);panY=cy-(cy-panY)*(scale/os);updateCanvasTransform();});
406
+
407
+ // Double click โ†’ add note
408
+ canvasArea.addEventListener('dblclick', e => {
409
+ if(e.target.closest('.workspace-item')||e.target.closest('#chat-bar')) return;
410
+ const p=canvasXYFromClient(e.clientX,e.clientY); addNote('yellow',p.x-110,p.y-90);
411
+ });
412
+
413
+ // โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
414
+ // CONTEXT MENU
415
+ // โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
416
+
417
+ function showContextMenu(x,y){contextMenu.style.left=Math.min(x,window.innerWidth-180)+'px';contextMenu.style.top=Math.min(y,window.innerHeight-160)+'px';contextMenu.classList.add('show');}
418
+
419
+ document.addEventListener('contextmenu', e => {
420
+ const ws=e.target.closest('.workspace-item');
421
+ if(ws){e.preventDefault();contextItemId=parseInt(ws.dataset.itemId);selectItem(contextItemId);showContextMenu(e.clientX,e.clientY);}
422
+ else{contextMenu.classList.remove('show');contextItemId=null;}
423
+ });
424
+ document.addEventListener('click', e => {if(!e.target.closest('#context-menu'))contextMenu.classList.remove('show');});
425
+ document.addEventListener('touchstart', e => {if(!e.target.closest('#context-menu'))contextMenu.classList.remove('show');},{passive:true});
426
+
427
+ $('ctxDelete').addEventListener('click',()=>{if(contextItemId!==null)removeItem(contextItemId);contextMenu.classList.remove('show');});
428
+ $('ctxDuplicate').addEventListener('click',()=>{
429
+ if(contextItemId===null)return;const it=items.find(i=>i.id===contextItemId);if(!it)return;
430
+ if(it.type==='note'){const ta=it.el.querySelector('textarea');addNote(it.color||'yellow',it.x+30,it.y+30,ta?ta.value:'');}
431
+ else if(it.type==='text') addBoardText(it.el.textContent||'',it.x+30,it.y+30,it.size,it.color,it.font);
432
+ else if(it.type==='shape') placeShape(it.shape,it.x+30,it.y+30,it.size);
433
+ else if(it.type==='image'){
434
+ if(it.is_page||it.subtype==='page') addPageImage(it.url,it.x+30,it.y+30,it.w,it.h,it.pageNumber);
435
+ else if(it.no_bg||it.subtype==='svg_icon') addSvgImage(it.url,it.x+30,it.y+30,it.w,it.h,it.name);
436
+ else addImage(it.dataUrl||it.url,it.x+30,it.y+30,it.w,it.h);
437
+ }
438
+ contextMenu.classList.remove('show');
439
+ });
440
+ $('ctxFront').addEventListener('click',()=>{if(contextItemId!==null){const el=$(`item-${contextItemId}`);if(el)el.style.zIndex=nextZ();}contextMenu.classList.remove('show');});
441
+ $('ctxBack').addEventListener('click',()=>{if(contextItemId!==null){const el=$(`item-${contextItemId}`);if(el)el.style.zIndex=1;}contextMenu.classList.remove('show');});
442
+
443
+ // โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
444
+ // TOOLBAR BUTTONS
445
+ // โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
446
+
447
+ $('btnNote').addEventListener('click', () => addNote('yellow'));
448
+
449
+ $('btnShapes').addEventListener('click', () => {
450
+ const sb = $('sidebar');
451
+ sidebarOpen = !sidebarOpen;
452
+ if(sidebarOpen){sb.classList.remove('collapsed');canvasArea.classList.remove('sidebar-collapsed');canvasArea.classList.add('sidebar-open');}
453
+ else{sb.classList.add('collapsed');canvasArea.classList.add('sidebar-collapsed');canvasArea.classList.remove('sidebar-open');}
454
+ });
455
+
456
+ $('btnImage').addEventListener('click', () => imageInput.click());
457
+
458
+ $('btnClear').addEventListener('click', () => {
459
+ if(items.length===0)return;
460
+ if(confirm('ู…ุณุญ ูƒู„ ุดูŠุก ู…ู† ุงู„ุณุจูˆุฑุฉุŸ')){items.forEach(i=>i.el.remove());items=[];selectedItemId=null;hideEmptyState();updateMinimap();fetch('/api/board/clear',{method:'POST'}).catch(()=>{});}
461
+ });
462
+
463
+ document.querySelectorAll('.shape-item').forEach(el=>{
464
+ el.addEventListener('click',()=>{placeShape(el.dataset.shape);if(window.innerWidth<=768){sidebarOpen=false;$('sidebar').classList.add('collapsed');canvasArea.classList.add('sidebar-collapsed');canvasArea.classList.remove('sidebar-open');}});
465
+ });
466
+
467
+ document.querySelectorAll('.color-swatch[data-note-color]').forEach(el=>{
468
+ el.addEventListener('click',()=>{addNote(el.dataset.noteColor);if(window.innerWidth<=768){sidebarOpen=false;$('sidebar').classList.add('collapsed');canvasArea.classList.add('sidebar-collapsed');canvasArea.classList.remove('sidebar-open');}});
469
+ });
470
+
471
+ imageInput.addEventListener('change', e => {
472
+ const files=e.target.files; if(!files||!files.length)return;
473
+ Array.from(files).forEach((file,idx)=>{if(!file.type.startsWith('image/'))return;const r=new FileReader();r.onload=ev=>{const img=new Image();img.onload=()=>{let w=img.naturalWidth,h=img.naturalHeight;const mx=400;if(w>mx||h>mx){const ra=Math.min(mx/w,mx/h);w=Math.round(w*ra);h=Math.round(h*ra);}const c=centerCanvasXY();addImage(ev.target.result,c.x-w/2+idx*30,c.y-h/2+idx*30,w,h);};img.src=ev.target.result;};r.readAsDataURL(file);});
474
+ imageInput.value='';
475
+ });
476
+
477
+ // Keyboard
478
+ document.addEventListener('keydown', e => {
479
+ if(e.target.tagName==='TEXTAREA'||e.target.tagName==='INPUT'||e.target.contentEditable==='true') return;
480
+ if(e.key==='Delete'||e.key==='Backspace'){if(selectedItemId!==null)removeItem(selectedItemId);}
481
+ if(e.key==='Escape'){deselectAll();modalOverlay.classList.remove('show');}
482
+ if((e.ctrlKey||e.metaKey)&&e.key==='d'){e.preventDefault();if(selectedItemId!==null){contextItemId=selectedItemId;$('ctxDuplicate').click();}}
483
+ });
484
+
485
+ // โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
486
+ // EXPORT / IMPORT
487
+ // โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
488
+
489
+ function getWorkspaceData() {
490
+ return items.map(it => {
491
+ const d = {type:it.type, x:parseFloat(it.el.style.left)||0, y:parseFloat(it.el.style.top)||0, w:it.el.offsetWidth, h:it.el.offsetHeight, zIndex:parseInt(it.el.style.zIndex)||10};
492
+ if(it.type==='note'){d.color=it.color||'yellow';const ta=it.el.querySelector('textarea');d.text=ta?ta.value:'';}
493
+ else if(it.type==='text'){d.content=it.el.textContent||'';d.size=it.size;d.color=it.color;d.font=it.font;}
494
+ else if(it.type==='shape'){d.shape=it.shape;d.size=it.size||80;}
495
+ else if(it.type==='image'){d.subtype=it.subtype;d.url=it.url||it.dataUrl;d.no_bg=it.no_bg||false;d.is_page=it.is_page||false;d.name=it.name||'';d.pageNumber=it.pageNumber||'';if(it.dataUrl)d.dataUrl=it.dataUrl;}
496
+ return d;
497
+ });
498
+ }
499
+
500
+ function syncBoardState() {
501
+ fetch('/api/board/sync',{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify({board_state:getWorkspaceData()})}).catch(()=>{});
502
+ }
503
+
504
+ let modalMode = 'export';
505
+
506
+ $('btnExport').addEventListener('click',()=>{
507
+ modalMode='export';modalTitle.textContent='๐Ÿ“ฆ ุชุตุฏูŠุฑ ุงู„ุณุจูˆุฑุฉ';
508
+ modalTextarea.value=JSON.stringify(getWorkspaceData(),null,2);
509
+ modalTextarea.readOnly=false;
510
+ $('modalCopy').style.display='';$('modalDownload').style.display='';
511
+ $('modalLoadFile').style.display='none';$('modalApply').style.display='none';
512
+ modalOverlay.classList.add('show');
513
+ });
514
+
515
+ $('btnImport').addEventListener('click',()=>{
516
+ modalMode='import';modalTitle.textContent='๐Ÿ“ฅ ุงุณุชูŠุฑุงุฏ ุงู„ุณุจูˆุฑุฉ';
517
+ modalTextarea.value='';modalTextarea.readOnly=false;modalTextarea.placeholder='ุงู„ุตู‚ ุจูŠุงู†ุงุช JSON ู‡ู†ุง...';
518
+ $('modalCopy').style.display='none';$('modalDownload').style.display='none';
519
+ $('modalLoadFile').style.display='';$('modalApply').style.display='';
520
+ modalOverlay.classList.add('show');
521
+ });
522
+
523
+ $('modalClose').addEventListener('click',()=>modalOverlay.classList.remove('show'));
524
+ modalOverlay.addEventListener('click',e=>{if(e.target===modalOverlay)modalOverlay.classList.remove('show');});
525
+
526
+ $('modalCopy').addEventListener('click',()=>{
527
+ modalTextarea.select();navigator.clipboard.writeText(modalTextarea.value).then(()=>{$('modalCopy').textContent='โœ… ุชู…!';setTimeout(()=>{$('modalCopy').textContent='๐Ÿ“‹ ู†ุณุฎ';},1500);}).catch(()=>{document.execCommand('copy');});
528
+ });
529
+
530
+ $('modalDownload').addEventListener('click',()=>{
531
+ const blob=new Blob([modalTextarea.value],{type:'application/json'});const url=URL.createObjectURL(blob);const a=document.createElement('a');a.href=url;a.download='micanica-board.json';document.body.appendChild(a);a.click();document.body.removeChild(a);URL.revokeObjectURL(url);
532
+ });
533
+
534
+ $('modalLoadFile').addEventListener('click',()=>importFileInput.click());
535
+ importFileInput.addEventListener('change',e=>{const file=e.target.files[0];if(!file)return;const r=new FileReader();r.onload=ev=>{modalTextarea.value=ev.target.result;};r.readAsText(file);importFileInput.value='';});
536
+
537
+ $('modalApply').addEventListener('click',()=>{
538
+ const txt=modalTextarea.value.trim();if(!txt){alert('ู„ุง ุชูˆุฌุฏ ุจูŠุงู†ุงุช!');return;}
539
+ try{const data=JSON.parse(txt);if(!Array.isArray(data))throw new Error('Expected array');
540
+ if(items.length>0&&!confirm('ุณูŠุชู… ุงุณุชุจุฏุงู„ ุงู„ู…ุญุชูˆู‰ ุงู„ุญุงู„ูŠ. ู…ุชุงุจุนุฉุŸ'))return;
541
+ items.forEach(i=>i.el.remove());items=[];selectedItemId=null;itemIdCounter=0;currentMaxZ=10;
542
+ addBoardItems(data,false);modalOverlay.classList.remove('show');
543
+ }catch(err){alert('ุจูŠุงู†ุงุช JSON ุบูŠุฑ ุตุงู„ุญุฉ: '+err.message);}
544
+ });
545
+
546
+ // โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
547
+ // MINIMAP
548
+ // โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
549
+
550
+ function updateMinimap() {
551
+ const ctx=minimapCtx, cw=140, ch=100;
552
+ ctx.clearRect(0,0,cw,ch);ctx.fillStyle='#fdfbf7';ctx.fillRect(0,0,cw,ch);
553
+ if(!items.length) return;
554
+ const CW=6000,CH=6000,s=Math.min(cw/CW,ch/CH);
555
+ const cols={blue:'#d4e4ff',pink:'#ffd4e4',green:'#d4ffd4',orange:'#ffe4c4',white:'#fff',yellow:'#fff9c4',purple:'#e4d4ff'};
556
+ items.forEach(it=>{
557
+ const ix=parseFloat(it.el.style.left)||0,iy=parseFloat(it.el.style.top)||0,iw=it.el.offsetWidth||80,ih=it.el.offsetHeight||80;
558
+ ctx.fillStyle=it.type==='note'?(cols[it.color]||'#fff9c4'):it.type==='text'?'rgba(100,100,200,0.3)':'rgba(45,45,45,0.15)';
559
+ ctx.fillRect(ix*s,iy*s,Math.max(iw*s,2),Math.max(ih*s,2));
560
+ ctx.strokeStyle='#2d2d2d';ctx.lineWidth=0.5;ctx.strokeRect(ix*s,iy*s,Math.max(iw*s,2),Math.max(ih*s,2));
561
+ });
562
+ const rect=canvasArea.getBoundingClientRect();
563
+ ctx.strokeStyle='#ff4d4d';ctx.lineWidth=1.5;ctx.setLineDash([3,2]);
564
+ ctx.strokeRect((-panX/scale)*s,(-panY/scale)*s,(rect.width/scale)*s,(rect.height/scale)*s);
565
+ ctx.setLineDash([]);
566
+ }
567
+
568
+ // โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
569
+ // AI CHAT & PLAYBACK
570
+ // โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
571
+
572
+ // โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
573
+ // FIX 1: sendMessage must include board_state from frontend
574
+ // โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
575
+
576
+ async function sendMessage() {
577
+ const msg = chatInput.value.trim();
578
+ if(!msg) return;
579
+ chatInput.disabled=true; btnSend.disabled=true; chatInput.value='';
580
+ setStatus('thinking','ุฌุงุฑูŠ ุงู„ุชููƒูŠุฑ...');
581
+
582
+ try {
583
+ // โ˜…โ˜…โ˜… FIXED: Send board_state with message โ˜…โ˜…โ˜…
584
+ const boardState = getCurrentBoardState(); // Get all items from canvas
585
+
586
+ const res = await fetch('/api/message', {
587
+ method: 'POST',
588
+ headers: {'Content-Type': 'application/json'},
589
+ body: JSON.stringify({
590
+ message: msg,
591
+ board_state: boardState // โ† THIS IS THE FIX
592
+ })
593
+ });
594
+
595
+ if(!res.ok) throw new Error(`HTTP ${res.status}`);
596
+ const data = await res.json();
597
+
598
+ if(data.success && data.sequence && data.sequence.length > 0) {
599
+ currentSequence = data.sequence;
600
+ currentStepIndex = 0;
601
+ startPlayback();
602
+ } else {
603
+ setStatus('error','ุฎุทุฃ ููŠ ุงู„ุงุณุชุฌุงุจุฉ');
604
+ setTimeout(() => setStatus('idle','ุฌุงู‡ุฒ'), 3000);
605
+ }
606
+ } catch(err) {
607
+ console.error('Message error:', err);
608
+ setStatus('error','ุฎุทุฃ ููŠ ุงู„ุงุชุตุงู„');
609
+ setTimeout(() => setStatus('idle','ุฌุงู‡ุฒ'), 3000);
610
+ } finally {
611
+ chatInput.disabled=false; btnSend.disabled=false; chatInput.focus();
612
+ }
613
+ }
614
+
615
+
616
+ // โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
617
+ // FIX 2: getCurrentBoardState - reads all items from canvas
618
+ // Returns array of JSON objects representing board items
619
+ // โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
620
+
621
+ function getCurrentBoardState() {
622
+ // โ˜… FIXED: Use correct class name and collect all item data
623
+ return items.map(it => {
624
+ const d = {
625
+ type: it.type,
626
+ x: parseFloat(it.el.style.left) || 0,
627
+ y: parseFloat(it.el.style.top) || 0,
628
+ w: it.el.offsetWidth,
629
+ h: it.el.offsetHeight
630
+ };
631
+
632
+ if(it.type === 'note') {
633
+ d.color = it.color || 'yellow';
634
+ const ta = it.el.querySelector('textarea');
635
+ d.text = ta ? ta.value : '';
636
+ }
637
+ else if(it.type === 'text') {
638
+ d.content = it.el.textContent || '';
639
+ d.size = it.size;
640
+ d.color = it.color;
641
+ d.font = it.font;
642
+ }
643
+ else if(it.type === 'shape') {
644
+ d.shape = it.shape;
645
+ d.size = it.size || 80;
646
+ }
647
+ else if(it.type === 'image') {
648
+ d.subtype = it.subtype;
649
+ d.url = it.url || it.dataUrl;
650
+ d.no_bg = it.no_bg || false;
651
+ d.is_page = it.is_page || false;
652
+ d.name = it.name || '';
653
+ d.pageNumber = it.pageNumber || '';
654
+ if(it.dataUrl) d.dataUrl = it.dataUrl;
655
+ }
656
+
657
+ return d;
658
+ });
659
+ }
660
+
661
+ // โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
662
+ // FIX 3: Replay - voice only, NO board duplication
663
+ // โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
664
+
665
+ async function replayResponse() {
666
+ try {
667
+ setStatus('speaking', 'ุฅุนุงุฏุฉ ุงู„ุชุดุบูŠู„...');
668
+
669
+ // โ˜…โ˜…โ˜… FIXED: Call /api/replay which returns VOICE ONLY โ˜…โ˜…โ˜…
670
+ const res = await fetch('/api/replay', { method: 'POST' });
671
+ const data = await res.json();
672
+
673
+ if(data.success && data.sequence && data.sequence.length > 0) {
674
+ // Play ONLY voice - no board updates in this sequence
675
+ currentSequence = data.sequence;
676
+ currentStepIndex = 0;
677
+ startPlayback(); // Will only encounter "voice" types
678
+ } else {
679
+ setStatus('idle', 'ู„ุง ุชูˆุฌุฏ ุงุณุชุฌุงุจุฉ ุณุงุจู‚ุฉ');
680
+ }
681
+ } catch(err) {
682
+ console.error('Replay error:', err);
683
+ setStatus('error', 'ุฎุทุฃ ููŠ ุฅุนุงุฏุฉ ุงู„ุชุดุบูŠู„');
684
+ setTimeout(() => setStatus('idle', 'ุฌุงู‡ุฒ'), 2000);
685
+ }
686
+ }
687
+
688
+ chatInput.addEventListener('keydown', e => { if(e.key==='Enter'&&!e.shiftKey){e.preventDefault();sendMessage();} });
689
+ btnSend.addEventListener('click', sendMessage);
690
+
691
+ // โ”€โ”€โ”€ PLAYBACK โ”€โ”€โ”€
692
+ function startPlayback() {
693
+ isPlaying=true; playbackPaused=false;
694
+ playbackControls.classList.remove('hidden');
695
+ updatePlaybackUI();
696
+ playNextStep();
697
+ }
698
+
699
+ function updatePlaybackUI() {
700
+ const total=currentSequence.length, cur=currentStepIndex+1;
701
+ stepInfo.textContent=`${Math.min(cur,total)}/${total}`;
702
+ progressFill.style.width=`${(currentStepIndex/Math.max(total-1,1))*100}%`;
703
+ if(isPlaying&&!playbackPaused){iconPlay.style.display='none';iconPause.style.display='block';setStatus('playing','ูŠุดุฑุญ ุงู„ู…ุฏุฑุณ...');}
704
+ else if(playbackPaused){iconPlay.style.display='block';iconPause.style.display='none';setStatus('paused','ู…ุคู‚ุช');}
705
+ else{iconPlay.style.display='block';iconPause.style.display='none';setStatus('idle','ุฌุงู‡ุฒ');}
706
+ }
707
+
708
+ async function playNextStep() {
709
+ if(currentStepIndex>=currentSequence.length){
710
+ isPlaying=false;playbackPaused=false;updatePlaybackUI();setStatus('idle','ุฌุงู‡ุฒ');syncBoardState();
711
+ return;
712
+ }
713
+ if(playbackPaused) return;
714
+
715
+ const step=currentSequence[currentStepIndex];
716
+ updatePlaybackUI();
717
+
718
+ if(step.type==='voice'){setStatus('speaking','๐Ÿ”Š ูŠุชุญุฏุซ...');await playVoice(step);}
719
+ else if(step.type==='board_update'){setStatus('drawing','โœ๏ธ ูŠุฑุณู…...');await applyBoardUpdate(step);}
720
+
721
+ currentStepIndex++;
722
+ if(!playbackPaused){await sleep(300);playNextStep();}
723
+ }
724
+
725
+ function playVoice(step) {
726
+ return new Promise(resolve => {
727
+ voiceResolve = resolve;
728
+ if(step.audio_url){
729
+ voicePlayer.src=step.audio_url;
730
+ voicePlayer.onended=()=>{voiceResolve=null;resolve();};
731
+ voicePlayer.onerror=()=>{voiceResolve=null;resolve();};
732
+ voicePlayer.play().catch(()=>{
733
+ const t=Math.max(2000,(step.text||'').length*80);
734
+ setTimeout(()=>{voiceResolve=null;resolve();},t);
735
+ });
736
+ } else {
737
+ const t=Math.max(1500,(step.text||'').length*60);
738
+ setTimeout(()=>{voiceResolve=null;resolve();},t);
739
+ }
740
+ });
741
+ }
742
+
743
+ async function applyBoardUpdate(step) {
744
+ if(step.action==='add'&&step.items){
745
+ for(const item of step.items){
746
+ addBoardItems([item],true);
747
+ scrollToItem(item);
748
+ await sleep(400);
749
+ }
750
+ }
751
+ }
752
+
753
+ function scrollToItem(item) {
754
+ if(item.x!==undefined&&item.y!==undefined){
755
+ const rect=canvasArea.getBoundingClientRect();
756
+ const tx=rect.width/2-item.x*scale, ty=rect.height/2-item.y*scale;
757
+ const dx=tx-panX, dy=ty-panY;
758
+ if(Math.abs(dx)>200||Math.abs(dy)>200){panX+=dx*0.3;panY+=dy*0.3;updateCanvasTransform();}
759
+ }
760
+ }
761
+
762
+ $('btnPlayPause').addEventListener('click',()=>{
763
+ if(!isPlaying)return;
764
+ playbackPaused=!playbackPaused;
765
+ updatePlaybackUI();
766
+ if(!playbackPaused) playNextStep();
767
+ else voicePlayer.pause();
768
+ });
769
+
770
+ $('btnSkip').addEventListener('click',()=>{
771
+ if(!isPlaying)return;
772
+ voicePlayer.pause();voicePlayer.currentTime=0;
773
+ if(voiceResolve){voiceResolve();voiceResolve=null;}
774
+ });
775
+
776
+ $('btnReplay').addEventListener('click',()=>{
777
+ if(!currentSequence.length) return;
778
+ voicePlayer.pause();voicePlayer.currentTime=0;
779
+ if(voiceResolve){voiceResolve();voiceResolve=null;}
780
+ currentStepIndex=0;playbackPaused=false;isPlaying=true;
781
+ playNextStep();
782
+ });
783
+
784
+ // โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
785
+ // INIT
786
+ // โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
787
+
788
+ updateCanvasTransform();
789
+ hideEmptyState();
790
+ setStatus('idle','ุฌุงู‡ุฒ');
791
+
792
+ // Start with sidebar collapsed
793
+ $('sidebar').classList.add('collapsed');
794
+ canvasArea.classList.add('sidebar-collapsed');
795
+
796
+ // Welcome
797
+ setTimeout(()=>{
798
+ addNote('yellow', 250, 200,
799
+ "๐ŸŽ“ ู…ุฑุญุจุงู‹ ููŠ ุงู„ุณุจูˆุฑุฉ ุงู„ุฐูƒูŠุฉ!\n\nุงูƒุชุจ ุณุคุงู„ูƒ ููŠ ุงู„ุฃุณูู„\nูˆุณูŠุดุฑุญ ุงู„ู…ุฏุฑุณ ุนู„ู‰ ุงู„ุณุจูˆุฑุฉ\nุจุงู„ุตูˆุช ูˆุงู„ุฑุณู…!");
800
+ addNote('blue', 550, 250,
801
+ "๐Ÿ’ก ู†ุตุงุฆุญ:\nโ€ข ุงุณุฃู„ ุนู† ุฃูŠ ู…ูˆุถูˆุน ููŠ ุงู„ู…ูŠูƒุงู†ูŠูƒุง\nโ€ข ูŠู…ูƒู†ูƒ ุฅุถุงูุฉ ู…ู„ุงุญุธุงุชูƒ\nโ€ข ุงู†ู‚ุฑ ู…ุฒุฏูˆุฌ ู„ุฅุถุงูุฉ ู…ู„ุงุญุธุฉ\nโ€ข ุงุณุญุจ ูˆุญุฑูƒ ูƒู„ ุดูŠุก!");
802
+ placeShape('star', 800, 200);
803
+ deselectAll();
804
+ updateMinimap();
805
+ },200);
806
+
807
+ </script>
808
+
809
+
810
+ You are a converter that transforms XML board data into JSON format.
811
+
812
+ Convert the given XML to JSON following these rules:
813
+ 1. Extract all elements from the XML
814
+ 2. Convert them to proper JSON structure
815
+ 3. Wrap your JSON output in <json></json> tags
816
+
817
+ Example:
818
+ Input: <board><note color="yellow" x="100" y="200">Hello</note></board>
819
+ Output: <json>{"board": {"notes": [{"color": "yellow", "x": 100, "y": 200, "text": "Hello"}]}}</json>
820
+
821
+ Always wrap your final JSON output in <json></json> tags
822
+
823
+
824
+ NO any other words about explain what you did etc...... just the JSON
825
+
826
+ ALSO response just with the new board the history dont touch it because it is already added
users.json ADDED
@@ -0,0 +1,43 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "ุณูŠู": {
3
+ "username": "user",
4
+ "password": "123456",
5
+ "student_type": "ุนู„ู…ูŠ",
6
+ "telegram_user_id": "6481568318",
7
+ "session_id": "e88a786f-ebc1-4717-8381-35774604a24a",
8
+ "created_at": "2026-03-29T16:17:51.893566",
9
+ "verified": true,
10
+ "last_login": "2026-04-17T21:17:06.768894",
11
+ "balance": 0,
12
+ "purchased_subjects": [
13
+ "islamic",
14
+ "physics_mechanic",
15
+ "math",
16
+ "physics_electric",
17
+ "it",
18
+ "english",
19
+ "statistics",
20
+ "chemistry",
21
+ "biology",
22
+ "linguistic_studies",
23
+ "literary_studies",
24
+ "data_structure"
25
+ ]
26
+ },
27
+ "omar": {
28
+ "username": "omar",
29
+ "password": "123456",
30
+ "student_type": "ุฃุฏุจูŠ",
31
+ "telegram_user_id": "1475261130",
32
+ "session_id": null,
33
+ "created_at": "2026-04-05T09:27:15.630502",
34
+ "verified": true,
35
+ "last_login": "2026-04-05T09:27:15.630523",
36
+ "balance": 20,
37
+ "purchased_subjects": [
38
+ "islamic",
39
+ "statisticss",
40
+ "history"
41
+ ]
42
+ }
43
+ }