Assignment4-5.pdf

‫ﺑﻪ ﻧﺎﻡ ﺧﺪﺍﻭﻧﺪ ﺩﺍﻧﺎ ﻭ ﺗﻮﺍﻧﺎ‬
‫ﺗﻤﺮﻳﻦ ﺳﺮﯼ ﭼﻬﺎﺭﻡ ﻣﺒﺎﻧﯽ ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﯽ‬
‫ﻣﻬﻠﺖ ﺍﺭﺳﺎﻝ‪ ۱۲ :‬ﻧﻴﻤﻪ ﺷﺐ ‪۸۶/۳/۵‬‬
‫ﺗﻮﺿﻴﺤﺎﺕ ‪:‬‬
‫‪ .۱‬ﻗﺒﻞ ﺍﺯ ﺷﺮﻭﻉ ﻣﻮﺍﺭﺩ ﺯﻳﺮ ﺭﺍ ﺑﻪ ﺩﻗﺖ ﺑﺨﻮﺍﻧﻴﺪ‪.‬‬
‫‪ .۲‬ﺩﺭ ﺧﻂ ﺍﻭﻝ ﻫﺮ ﻳﮏ ﺍﺯ ﺑﺮﻧﺎﻣﻪﻫﺎ ﺷﻤﺎﺭﻩ ﺩﺍﻧﺸﺠﻮﻳﯽ ﺧﻮﺩ ﺭﺍ ﺑﻪ ﻓﺮﻣﺖ ﺯﻳﺮ ﺑﻨﻮﻳﺴﻴﺪ‪:‬‬
‫‪// ID: your Student ID‬‬
‫ﻣﺜﺎﻝ‪:‬‬
‫‪// ID: 87654321‬‬
‫‪ .۳‬ﺑﻌﺪ ﺍﺯ ﻧﻮﺷﺘﻦ ﻫﻤﻪ ﺑﺮﻧﺎﻣﻪﻫﺎ ‪ ،‬ﻫﻤﻪ ﺁﻥﻫﺎ ﺭﺍ ﺩﺭ ﻳﮏ ﻓﻮﻟﺪﺭ ﺑﺎ ﻧﺎﻡ ‪ assignment#4_stdID‬ﻗﺮﺍﺭ ﺩﻫﻴﺪ)‬
‫ﻼ‪ assignment#4_87654321 :‬ﻭ ﺳﭙﺲ‬
‫ﮐﻪ ﺩﺭ ﺁﻥ ‪ stdID‬ﺷﻤﺎﺭﻩ ﺩﺍﻧﺸﺠﻮﻳﯽ ﺷﻤﺎ ﻣﯽ ﺑﺎﺷﺪ‪ (.‬ﻣﺜ ً‬
‫ﺍﻳﻦ ﻓﻮﻟﺪﺭ ﺭﺍ ﻓﺸﺮﺩﻩ ﮐﻨﻴﺪ‪ .‬ﻓﺎﻳﻞ ﻓﺸﺮﺩﻩ ﺷﺪﻩ ﺭﺍ ﺑﻪ ﺁﺩﺭﺱ ‪[email protected]‬‬
‫ﺍﺭﺳﺎﻝ ﻧﻤﺎﻳﻴﺪ‪.‬‬
‫‪ .۴‬ﻋﻨﻮﺍﻥ ﺍﻳﻤﻴﻞ ﺑﺎﻳﺪ ﺑﻪ ﺻﻮﺭﺕ ‪ assignment#4_stdID‬ﺑﺎﺷﺪ ‪ ،‬ﮐﻪ ﺩﺭ ﺁﻥ ‪ stdID‬ﺷﻤﺎﺭﻩ ﺩﺍﻧﺸﺠﻮﻳﯽ‬
‫ﺷﻤﺎ ﻣﯽ ﺑﺎﺷﺪ‪.‬‬
‫‪ .۵‬ﺍﺷﺘﺒﺎﻩ ﺩﺭ ﻧﺎﻡﮔﺬﺍﺭﯼ ﻓﺎﻳﻞ ﺑﺮﻧﺎﻣﻪﻫﺎ ﻭ ﻓﺎﻳﻞ ﻓﺸﺮﺩﻩ ﺷﺪﻩ ﻭ ﻳﺎ ﻋﻨﻮﺍﻥ ﺍﻳﻤﻴﻞ ﻓﺮﺳﺘﺎﺩﻩ ﺷﺪﻩ ‪ ،‬ﻣﻮﺟﺐ ﻋﺪﻡ‬
‫ﺗﺼﺤﻴﺢ ﺗﻤﺮﻳﻦ ﺷﻤﺎ ﻣﯽﺷﻮﺩ‪.‬‬
‫‪ .۶‬ﻓﺮﻣﺖ ﻭﺭﻭﺩﯼ ﻭ ﺧﺮﻭﺟﯽ ﺑﺮﻧﺎﻣﻪﻫﺎﯼ ﺷﻤﺎ ﺑﺎﻳﺪ ﺩﻗﻴﻘ ًﺎ ﺑﻪ ﺻﻮﺭﺕ ﮔﻔﺘﻪ ﺷﺪﻩ ﺩﺭ ﻣﺴﺌﻠﻪ ﺑﺎﺷﺪ ‪ ،‬ﺩﺭ ﻏﻴﺮ ﺍﻳﻦ‬
‫ﺻﻮﺭﺕ ﭼﻮﻥ ﺑﺮﻧﺎﻣﻪﻫﺎﯼ ﺷﻤﺎ ﺑﻪ ﺻﻮﺭﺕ ﺧﻮﺩﮐﺎﺭ ﺗﺼﺤﻴﺢ ﻣﯽ ﺷﻮﺩ‪ ،‬ﺧﺮﻭﺟﯽ ﺑﺮﻧﺎﻣﻪﯼ ﺷﻤﺎ ﺑﺎ ﺧﺮﻭﺟﯽ‬
‫ﺑﺮﻧﺎﻣﻪﯼ ﻣﺼﺤﺢ ﻣﻨﻄﺒﻖ ﻧﺨﻮﺍﻫﺪ ﺑﻮﺩ‪.‬‬
‫‪ .۷‬ﺑﻪ ﻫﺮ ﻳﮏ ﺍﺯ ﺑﺮﻧﺎﻣﻪﻫﺎﯼ ﺷﻤﺎ ﺗﻌﺪﺍﺩﯼ ﺗﺴﺖ ﺩﺍﺩﻩ ﺧﻮﺍﻫﺪ ﺷﺪ‪ .‬ﺗﻮﺻﻴﻪ ﻣﯽ ﺷﻮﺩ ﮐﻪ ﺣﺘﻤ ًﺎ ﻳﮏ ﺑﺎﺭ ﺗﺴﺖﻫﺎﯼ‬
‫ﻧﻤﻮﻧﻪ ﺭﺍ ﺑﻪ ﺑﺮﻧﺎﻣﻪﻫﺎﯼ ﺗﺎﻥ ﺑﺪﻫﻴﺪ‪.‬‬
‫‪ .۸‬ﺑﻪ ﺑﺮﻧﺎﻣﻪﻫﺎﯼ ﻣﺸﺎﺑﻪ ﺑﻪ ﻣﻴﺰﺍﻥ ﻧﻤﺮﻩ ﺳﻮﺍﻝ ‪ ،‬ﻧﻤﺮﻩ ﻣﻨﻔﯽ ﺗﻌﻠﻖ ﺧﻮﺍﻫﺪ ﮔﺮﻓﺖ ‪.‬‬
‫‪ .۹‬ﻣﻮﻓﻖ ﺑﺎﺷﻴﺪ‪.‬‬
--------------------------------------------------------------------------------------- ‫ﻣﺴﺌﻠﻪ اول‬
Domino.cpp : ‫ﻧﺎم ﻓﺎﻳﻞ ﺑﺮﻧﺎﻣﻪ‬
Dominoes – game played with small, rectangular blocks of wood or other material, each
identified by a number of dots, or pips, on its face. The blocks usually are called bones,
dominoes, or pieces and sometimes men, stones, or even cards.
The face of each piece is divided, by a line or ridge, into two squares, each of which is marked as
would be a pair of dice...
The principle in nearly all modern dominoes games is to match one end of a piece to another that
is identically or reciprocally numbered.
Given a set of domino pieces where each side is marked with two digits from 0 to 6. Your task is
to arrange pieces in a line such way, that they touch through equal marked sides. It is possible to
rotate pieces changing left and right side.
Input
The first line of the input contains a single integer N (1 ≤ N ≤ 100) representing the total number
of pieces in the domino set. The following N lines describe pieces. Each piece is represented on a
separate line in a form of two digits from 0 to 6 separated by a space.
Output
Write “No solution” if it is impossible to arrange them described way. If it is possible, write any
of way. Pieces must be written in left-to-right order. Every of N lines must contains number of
current domino piece and sign “+” or “-“ (first means that you not rotate that piece, and second if
you rotate it).
Sample Input
Sample Output
5
1
2
2
6
2
2
5
1
3
4
2
4
4
4
1
+
+
+
-
‫ﻣﺴﺌﻠﻪ ﺩﻭﻡ ‪----------------------------------------------------------‬‬
‫ﻧﺎﻡ ﻓﺎﻳﻞ ﺑﺮﻧﺎﻣﻪ ‪Database.cpp :‬‬
‫ﺩﺭ ﻓﺎﻳﻠﯽ )‪ (input.txt‬ﺍﻃﻼﻋﺎﺕ ﺩﺍﻧﺸﺠﻮﻳﺎﻥ ﺭﺍ ﺫﺧﻴﺮﻩ ﮐﺮﺩﻩﺍﻳﻢ‪ .‬ﺍﻃﻼﻋﺎﺕ ﺷﺎﻣﻞ ﻣﻮﺍﺭﺩ ﺯﻳﺮ ﺍﺳﺖ‪:‬‬
‫ﺷﻤﺎﺭﻩ ﺩﺍﻧﺸﺠﻮﻳﯽ‪ ،‬ﻧﺎﻡ‪ ،‬ﺩﻭﺭﻩ‪ ،‬ﺭﺷﺘﻪ‪ ،‬ﻣﻌﺪﻝ‪ ،‬ﻧﺎﻡ ﺩﺭﻭﺱ ﺍﺧﺬ ﺷﺪﻩ‬
‫ﺷﻤﺎ ﺑﺎﻳﺪ ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ﺍﻃﻼﻋﺎﺕ ﺫﺧﻴﺮﻩ ﺷﺪﻩ‪ ،‬ﺑﻪ ﺳﻮﺍﻻﺕ ﺯﻳﺮ ﭘﺎﺳﺦ ﺩﻫﻴﺪ‪ .‬ﺍﺯ ﻭﺭﻭﺩﯼ ﺷﻤﺎﺭﻩ ﺳﻮﺍﻝ ﻭ ﺳﭙﺲ‬
‫ﻭﺭﻭﺩﯼﻫﺎﯼ ﺁﻥ ﺭﺍ ﺩﺭﻳﺎﻓﺖ ﮐﻨﻴﺪ ﻭ ﺳﭙﺲ ﺧﺮﻭﺟﯽ ﻣﻨﺎﺳﺐ ﺁﻥ ﺭﺍ ﭼﺎﭖ ﻧﻤﺎﻳﻴﺪ‪.‬‬
‫ﺳﺆﺍﻻﺕ‪:‬‬
‫‪ .۰‬ﺧﺮﻭﺝ ﺍﺯ ﺑﺮﻧﺎﻣﻪ‬
‫‪ .۱‬ﺷﻤﺎﺭﻩﯼ ﺩﺍﻧﺸﺠﻮﻳﯽ ﺩﺍﻧﺸﺠﻮﻳﺎﻥ ﻳﮏ ﺭﺷﺘﻪﯼ ﺧﺎﺹ ﺭﺍ ﻫﺮ ﮐﺪﺍﻡ ﺩﺭ ﻳﮏ ﺧﻂ ﺑﻨﻮﻳﺴﻴﺪ‪.‬‬
‫ﻭﺭﻭﺩﯼ‪ :‬ﻧﺎﻡ ﺭﺷﺘﻪ‬
‫‪ .۲‬ﻧﺎﻡ ﺩﺍﻧﺸﺠﻮﻳﺎﻧﯽ ﮐﻪ ﻣﻌﺪﻝ ﺁﻧﻬﺎ ﺑﻴﻦ ‪ ۲‬ﻋﺪﺩ ﺧﺎﺹ ﺍﺳﺖ‪ .‬ﻫﺮ ﮐﺪﺍﻡ ﺩﺭ ﻳﮏ ﺧﻂ ﺑﻨﻮﻳﺴﻴﺪ‪.‬‬
‫ﻭﺭﻭﺩﯼ‪ ۲ :‬ﻋﺪﺩ ﺍﻋﺸﺎﺭﯼ ﺑﻪ ﺗﺮﺗﻴﺐ ﺻﻌﻮﺩﯼ‬
‫‪ .۳‬ﻧﺎﻡ ﻭ ﺷﻤﺎﺭﻩﯼ ﺩﺍﻧﺸﺠﻮﻳﯽ ﺩﺍﻧﺸﺠﻮﻳﺎﻧﯽ ﮐﻪ ﺩﺭﺱ ﺧﺎﺻﯽ ﺭﺍ ﺍﺧﺬ ﮐﺮﺩﻩﺍﻧﺪ‪ .‬ﺩﺭ ﻫﺮ ﺧﻂ ﺍﺑﺘﺪﺍ‬
‫ﻧﺎﻡ ﺳﭙﺲ ﺑﺎ ﻳﮏ ﻓﺎﺻﻠﻪ ﺷﻤﺎﺭﻩﯼ ﺩﺍﻧﺸﺠﻮﻳﯽ ﻳﮏ ﺩﺍﻧﺸﺠﻮ ﺭﺍ ﺑﻨﻮﻳﺴﻴﺪ‪.‬‬
‫ﻭﺭﻭﺩﯼ‪ :‬ﻧﺎﻡ ﺩﺭﺱ‬
‫‪ .۴‬ﻧﺎﻡ ﺩﺍﻧﺸﺠﻮﻳﺎﻥ ﻳﮏ ﺩﻭﺭﻩ ﺗﺤﺼﻴﻠﯽ ﮐﻪ ﺩﺭ ﺭﺷﺘﻪﯼ ﺧﺎﺻﯽ ﺗﺤﺼﻴﻞ ﻣﯽﮐﻨﻨﺪ‪ .‬ﺩﺭ ﻫﺮ ﺧﻂ‬
‫ﻳﮏ ﻧﺎﻡ ﺭﺍ ﺑﻨﻮﻳﺴﻴﺪ‪.‬‬
‫ﻭﺭﻭﺩﯼ‪ :‬ﺩﻭﺭﻩ ﺗﺤﺼﻴﻠﯽ ﻭ ﺳﭙﺲ ﺑﺎ ﻳﮏ ﻓﺎﺻﻠﻪ ﻧﺎﻡ ﺭﺷﺘﻪ‬
‫ﻓﺮﻣﺖ ﻓﺎﻳﻞ ﻭﺭﻭﺩﯼ ﺑﻪ ﺻﻮﺭﺕ ﺯﻳﺮ ﺍﺳﺖ‪:‬‬
‫ﺳﺎﺧﺘﺎﺭ ﻓﺎﻳﻞ‬
input.txt
#‫ﺩﺍﻧﺸﺠﻮ‬
‫ﺷﻤﺎﺭﻩ ﺩﺍﻧﺸﺠﻮﻳﯽ‬
‫ﻧﺎﻡ‬
‫ﺩﻭﺭﻩ‬
‫ﺭﺷﺘﻪ‬
‫ﻣﻌﺪﻝ‬
... ۳‫ ﺩﺭﺱ‬۲‫ ﺩﺭﺱ‬۱‫ﺩﺭﺱ‬
.
.
.
student1
444
George Bush
bs
politics
10.02
Afghanistan Mathematics Iraq N.Korea
Student2
777
Pesare Shoja
bs
computer
16.1
OS Compiler Circuits Network C++
student3
666
???
bs
electrical
19.98
Electronics Circuits C++ Mathematics
student4
333
Pesar Amoo
bs
computer
14.2
Network Ecommerce ProjectManagement
Sample input
1
Computer
4
bs politics
3
Mathematics
0
Sample output
Pesare Shoja
Pesar Amoo
George Bush
George Bush
???
‫ﺗﻤﺮﻳﻦ ﺳﺮﯼ ﭘﻨﺠﻢ ﻣﺒﺎﻧﯽ ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﯽ‬
‫ﻣﻬﻠﺖ ﺍﺭﺳﺎﻝ‪ ۱۲ :‬ﻧﻴﻤﻪ ﺷﺐ ‪۸۶/۳/۱۵‬‬
‫ﺗﻮﺿﻴﺤﺎﺕ ‪:‬‬
‫‪ .۱‬ﻗﺒﻞ ﺍﺯ ﺷﺮﻭﻉ ﻣﻮﺍﺭﺩ ﺯﻳﺮ ﺭﺍ ﺑﻪ ﺩﻗﺖ ﺑﺨﻮﺍﻧﻴﺪ‪.‬‬
‫‪ .۲‬ﺩﺭ ﺧﻂ ﺍﻭﻝ ﻫﺮ ﻳﮏ ﺍﺯ ﻓﺎﻳﻞﻫﺎ ﺷﻤﺎﺭﻩ ﺩﺍﻧﺸﺠﻮﻳﯽ ﺧﻮﺩ ﺭﺍ ﺑﻪ ﻓﺮﻣﺖ ﺯﻳﺮ ﺑﻨﻮﻳﺴﻴﺪ‪:‬‬
‫‪// ID: your Student ID‬‬
‫ﻣﺜﺎﻝ‪:‬‬
‫‪// ID: 87654321‬‬
‫‪ .۳‬ﺑﻌﺪ ﺍﺯ ﻧﻮﺷﺘﻦ ﻫﻤﻪ ﻓﺎﻳﻞﻫﺎ ‪ ،‬ﻫﻤﻪ ﺁﻥﻫﺎ ﺭﺍ ﺩﺭ ﻳﮏ ﻓﻮﻟﺪﺭ ﺑﺎ ﻧﺎﻡ ‪ assignment#5_stdID‬ﻗﺮﺍﺭ ﺩﻫﻴﺪ)‬
‫ﻼ‪ assignment#5_87654321 :‬ﻭ ﺳﭙﺲ‬
‫ﮐﻪ ﺩﺭ ﺁﻥ ‪ stdID‬ﺷﻤﺎﺭﻩ ﺩﺍﻧﺸﺠﻮﻳﯽ ﺷﻤﺎ ﻣﯽ ﺑﺎﺷﺪ‪ (.‬ﻣﺜ ً‬
‫ﺍﻳﻦ ﻓﻮﻟﺪﺭ ﺭﺍ ﻓﺸﺮﺩﻩ ﮐﻨﻴﺪ‪ .‬ﻓﺎﻳﻞ ﻓﺸﺮﺩﻩ ﺷﺪﻩ ﺭﺍ ﺑﻪ ﺁﺩﺭﺱ ‪[email protected]‬‬
‫ﺍﺭﺳﺎﻝ ﻧﻤﺎﻳﻴﺪ‪.‬‬
‫‪ .۴‬ﻋﻨﻮﺍﻥ ﺍﻳﻤﻴﻞ ﺑﺎﻳﺪ ﺑﻪ ﺻﻮﺭﺕ ‪ assignment#5_stdID‬ﺑﺎﺷﺪ ‪ ،‬ﮐﻪ ﺩﺭ ﺁﻥ ‪ stdID‬ﺷﻤﺎﺭﻩ ﺩﺍﻧﺸﺠﻮﻳﯽ‬
‫ﺷﻤﺎ ﻣﯽ ﺑﺎﺷﺪ‪.‬‬
‫‪ .۵‬ﺍﺷﺘﺒﺎﻩ ﺩﺭ ﻧﺎﻡﮔﺬﺍﺭﯼ ﻓﺎﻳﻞ ﺑﺮﻧﺎﻣﻪﻫﺎ ﻭ ﻓﺎﻳﻞ ﻓﺸﺮﺩﻩ ﺷﺪﻩ ﻭ ﻳﺎ ﻋﻨﻮﺍﻥ ﺍﻳﻤﻴﻞ ﻓﺮﺳﺘﺎﺩﻩ ﺷﺪﻩ ‪ ،‬ﻣﻮﺟﺐ ﻋﺪﻡ‬
‫ﺗﺼﺤﻴﺢ ﺗﻤﺮﻳﻦ ﺷﻤﺎ ﻣﯽﺷﻮﺩ‪.‬‬
‫‪ .۶‬ﺑﺮﺍﯼ ﺗﺴﺖ ﺑﺮﻧﺎﻣﻪﯼ ﺷﻤﺎ‪ ،‬ﻳﮏ ﻓﺎﻳﻞ ﺷﺎﻣﻞ ﺗﺎﺑﻊ ‪ main‬ﻧﻮﺷﺘﻪ ﺧﻮﺍﻫﺪ ﺷﺪ‪ .‬ﻓﺎﻳﻞ ‪ map‬ﺷﻤﺎ ﺩﺭ ﺍﻳﻦ ﻓﺎﻳﻞ‬
‫‪ include‬ﺷﺪﻩ ﻭ ﺗﻤﺎﻡ ﺗﻮﺍﺑﻊ ﺷﻤﺎ ﺗﺴﺖ ﺧﻮﺍﻫﺪ ﺷﺪ‪ .‬ﺑﻨﺎﺑﺮﺍﻳﻦ ﻧﻴﺎﺯﯼ ﺑﻪ ﺍﺭﺳﺎﻝ ﻓﺎﻳﻞ ﺣﺎﻭﯼ ﺗﺎﺑﻊ ‪main‬‬
‫ﻧﻴﺴﺖ‪.‬‬
‫‪ .۷‬ﺑﻪ ﻫﺮ ﻳﮏ ﺍﺯ ﺑﺮﻧﺎﻣﻪﻫﺎﯼ ﺷﻤﺎ ﺗﻌﺪﺍﺩﯼ ﺗﺴﺖ ﺩﺍﺩﻩ ﺧﻮﺍﻫﺪ ﺷﺪ‪ .‬ﺗﻮﺻﻴﻪ ﻣﯽ ﺷﻮﺩ ﮐﻪ ﺣﺘﻤ ًﺎ ﻳﮏ ﺑﺎﺭ ﺗﺴﺖﻫﺎﯼ‬
‫ﻧﻤﻮﻧﻪ ﺭﺍ ﺑﻪ ﺑﺮﻧﺎﻣﻪﻫﺎﯼ ﺗﺎﻥ ﺑﺪﻫﻴﺪ‪.‬‬
‫‪ .۸‬ﺑﻪ ﺑﺮﻧﺎﻣﻪﻫﺎﯼ ﻣﺸﺎﺑﻪ ﺑﻪ ﻣﻴﺰﺍﻥ ﻧﻤﺮﻩ ﺳﻮﺍﻝ ‪ ،‬ﻧﻤﺮﻩ ﻣﻨﻔﯽ ﺗﻌﻠﻖ ﺧﻮﺍﻫﺪ ﮔﺮﻓﺖ ‪.‬‬
‫ﻧﮑﺘﻪ ﻣﻬﻢ‪ :‬ﭘﻴﺎﺩﻩﺳﺎﺯﯼ ﺑﺮﻧﺎﻣﻪ ﺩﺭ ﺩﻭ ﻓﺎﻳﻞ ‪ map.h‬ﻭ ‪ map.cpp‬ﺍﻟﺰﺍﻣﯽ ﺍﺳﺖ‪.‬‬
‫‪ .۹‬ﻣﻮﻓﻖ ﺑﺎﺷﻴﺪ‪.‬‬
‫ﻧﺎﻡ ﻓﺎﻳﻞ ﺑﺮﻧﺎﻣﻪ ‪ Map.cpp :‬ﻭ ‪Map.h‬‬
‫‪ Map‬ﻳﮏ ﺩﺍﺩﻩ ﺳﺎﺧﺘﺎﺭ ﺍﺳﺖ ﮐﻪ ﺩﻭ ﻋﺪﺩ ﺭﺍ ﺑﻪ ﻫﻢ ﻧﮕﺎﺷﺖ ﻣﯽﮐﻨﺪ‪ .‬ﻋﺪﺩ ﺍﻭﻝ ﺭﺍ ﮐﻠﻴﺪ ﻭ ﻋﺪﺩ ﺩﻭﻡ ﺭﺍ ﻣﻘﺪﺍﺭ‬
‫ﻣﯽﻧﺎﻣﻨﺪ‪ .‬ﺩﺭ ﻳﮏ ﻧﻤﻮﻧﻪ ﺍﺯ ‪ map‬ﻫﻴﭻ ﺩﻭ ﮐﻠﻴﺪ ﻣﺸﺎﺑﻬﯽ ﻭﺟﻮﺩ ﻧﺪﺍﺭﺩ ﺍﻣﺎ ﻣﻤﮑﻦ ﺍﺳﺖ ﻣﻘﺎﺩﻳﺮ ﺗﮑﺮﺍﺭﯼ ﺑﺎﺷﻨﺪ‪.‬‬
‫ﻣﯽﺗﻮﺍﻧﻴﻢ ﻫﺮ ﺗﻌﺪﺍﺩ ﻋﻨﺼﺮ ﮐﻪ ﺑﺨﻮﺍﻫﻴﻢ ﺑﻪ ﺁﻥ ﺍﺿﺎﻓﻪ ﮐﻨﻴﻢ‪ .‬ﺩﺭ ‪ map‬ﺗﺮﺗﻴﺐ ﻋﻨﺎﺻﺮ ﻣﻬﻢ ﻧﻴﺴﺖ ﻭ ﺗﻨﻬﺎ‬
‫ﺷﺮﻁ ﻋﺪﻡ ﺗﺸﺎﺑﻪ ﮐﻠﻴﺪﻫﺎ ﻻﺯﻡ ﺍﺳﺖ‪.‬‬
‫ﻳﮏ ﮐﻼﺱ ﺑﻪ ﻧﺎﻡ ‪ map‬ﭘﻴﺎﺩﻩﺳﺎﺯﯼ ﮐﻨﻴﺪ ﮐﻪ ﺑﺘﻮﺍﻥ ﺑﺎ ﺁﻥ ﻋﻤﻠﻴﺎﺕ ﻻﺯﻡ ﺭﺍ ﺑﺮﺍﯼ ﮐﻨﺘﺮﻝ ‪ map‬ﺍﻧﺠﺎﻡ ﺩﻫﻴﻢ‪.‬‬
‫‪ copy constructor ،constructor‬ﻭ ‪ destructor‬ﺭﺍ ﭘﻴﺎﺩﻩﺳﺎﺯﯼ ﮐﻨﻴﺪ‪ .‬ﻣﺘﺪﻫﺎﯼ ﺯﻳﺮ ﺭﺍ ﻧﻴﺰ ﭘﻴﺎﺩﻩ‪-‬‬
‫ﺳﺎﺯﯼ ﮐﻨﻴﺪ‪:‬‬
‫;)(‪Map‬‬
‫;)‪Map(Map &m‬‬
‫;)(‪~Map‬‬
‫;)‪void insert(char *key, char *value‬‬
‫ﻋﻨﺼﺮ ﺟﺪﻳﺪ ﺭﺍ ﺑﺎ ﮐﻠﻴﺪ ﻭ ﻣﻘﺪﺍﺭ ﺩﺍﺩﻩ ﺷﺪﻩ ﺩﺭ ﺻﻮﺭﺕ ﺍﻣﮑﺎﻥ ﺍﺿﺎﻓﻪ ﻣﯽﮐﻨﺪ‪.‬‬
‫;)‪void insert(Map addThis‬‬
‫ﻋﻨﺎﺻﺮ ‪ map‬ﻭﺭﻭﺩﯼ ﺭﺍ ﺑﻪ ﺍﺯﺍﯼ ﮐﻠﻴﺪﻫﺎﯼ ﻏﻴﺮ ﻣﺸﺎﺑﻪ ﺑﻪ ‪ map‬ﻓﻌﻠﯽ ﺍﺿﺎﻓﻪ ﻣﯽﮐﻨﺪ‪.‬‬
‫;)‪void remove(char *key‬‬
‫ﺍﮔﺮ ﻋﻨﺼﺮﯼ ﺑﺎ ﮐﻠﻴﺪ ﻣﻮﺭﺩ ﻧﻈﺮ ﻣﻮﺟﻮﺩ ﺑﺎﺷﺪ‪ ،‬ﺁﻥ ﺭﺍ ﺣﺬﻑ ﻣﯽﮐﻨﺪ‪.‬‬
‫;)(‪int size‬‬
‫ﺍﻧﺪﺍﺯﻩﯼ ﮐﻞ ‪ map‬ﺭﺍ ﺑﺮﻣﯽﮔﺮﺩﺍﻧﺪ‪.‬‬
‫;)(‪bool isEmpty‬‬
‫ﺍﮔﺮ ‪ map‬ﺧﺎﻟﯽ ﺑﺎﺷﺪ ﻣﻘﺪﺍﺭ ‪ true‬ﻭ ﺍﮔﺮ ﻧﻪ ‪ false‬ﺑﺮﻣﯽﮔﺮﺩﺍﻧﺪ‪.‬‬
‫;)‪int getValue(char *key‬‬
‫ﻣﻘﺪﺍﺭ ﻣﺘﻨﺎﻇﺮ ﺑﺎ ﮐﻠﻴﺪ ﺭﺍ ﺑﺮﻣﯽﮔﺮﺩﺍﻧﺪ‪.‬‬
‫;)‪int getIndex(char *key‬‬
‫ﺍﻧﺪﻳﺲ ﮐﻠﻴﺪ ﻣﻮﺭﺩ ﻧﻈﺮ ﺭﺍ ﺑﺮﻣﯽﮔﺮﺩﺍﻧﺪ‪.‬‬
‫;)(‪char** getKeys‬‬
‫ﺁﺭﺍﻳﻪﺍﯼ ﺍﺯ ﮐﻠﻴﺪﻫﺎ ﺭﺍ ﺑﺮﻣﯽﮔﺮﺩﺍﻧﺪ‪.‬‬
‫;)(‪char** getValues‬‬
‫ﺁﺭﺍﻳﻪﺍﯼ ﺍﺯ ﻣﻘﺎﺩﻳﺮ ﺭﺍ ﺑﺮﻣﯽﮔﺮﺩﺍﻧﺪ‪.‬‬
‫ﺑﻪ ﺑﺮﻧﺎﻣﻪﻫﺎﻳﯽ ﮐﻪ ﮐﻼﺱ ﺭﺍ ﺑﻪ ﺻﻮﺭﺕ ‪ template‬ﭘﻴﺎﺩﻩﺳﺎﺯﯼ ﮐﻨﻨﺪ )ﻧﻮﻉ ﮐﻠﻴﺪ ﻭ ﻣﻘﺪﺍﺭ(‪ ،‬ﻧﻤﺮﻩﯼ‬
‫ﺍﺿﺎﻓﯽ ﺗﻌﻠﻖ ﺧﻮﺍﻫﺪ ﮔﺮﻓﺖ‪.‬‬