٩۶ ﺰﯿﯾﺎﭘ - یزﺎﺳ ﻪﻣﺎﻧﺮﺑ ﯽﻧﺎﺒﻣ مﺮﺘﻧﺎﯾﺎﭘ نﺎﺤﺘﻣا
مﺎﺠﻧا ﮏﯿﻧ ﺮﺘﮐد ﻦﮐ ﺖﺤﯿﺼﻧ ﺮﺘﮐد
٩۶ ﻦﻤﻬﺑ :ﯽﯾﻮﺠﺸﻧاد هرﺎﻤﺷ :مﺎﻧ
● رد (indentation) ﺎﻫ ﯽﮕﺘﻓرﻮﺗ ندﺮﮐ ﺖﯾﺎﻋر یاﺮﺑ ﻪﮐ ﺎﻤﺷ هداد راﺮﻗ یدﻮﻤﻋ یﺎﻬﻧﻮﺘﺳ ﯽﺴﯾﻮﻧ ﻪﻣﺎﻧﺮﺑ تﻻاﻮﺳ رد
.ﺪﺷ ﺪﻫاﻮﺧ ﺮﺴﮐ هﺮﻤﻧ زا ﯽﺘﻤﺴﻗ ﺎﻫ ﯽﮕﺘﻓر ﻮﺗ ندﺮﮑﻧ ﺖﯾﺎﻋر ترﻮﺻ رد .ﺖﺳﺎﻤﺷ یﺎﻫ ﻪﻣﺎﻧﺮﺑ
ناﻮﻨﻋ ﻪﺑ ﺎﻫﺮﺘﮐارﺎﮐ زا یا ﻪﯾارآ ترﻮﺻ ﻪﺑ ار ﯽﻓﺮﺣ ﻪﺘﺷر ود ﻪﮐ ﻢﯿﺴﯾﻮﻨﺑ capitalize مﺎﻧ ﻪﺑ ﯽﻌﺑﺎﺗ ﻢﯿﻫاﻮﺧ ﯽﻣ -١ لاﻮﺳ ﻪﻤﻠﮐ ﻒﯾﺮﻌﺗ .دﻮﺷ عوﺮﺷ گرﺰﺑ فوﺮﺣ ﺎﺑ مود ﻪﺘﺷر رد ﻪﻤﻠﮐ ﺮﻫ ﯽﺗرﻮﺻ ﻪﺑ ﺪﻨﮐ ﯽﭙﮐ ﯽﻣود رد ار ﯽﻟوا و دﺮﯿﮕﺑ نﺎﻣﻮﮔرآ زا ﯽﻟﺎﺜﻣ ﺮﯾز رد .ﺪﻧﻮﺷ ﯽﻣ اﺪﺟ ﻢﻫ زا ﯽﻓﺮﺣ ﺮﯿﻏ یﺎﻫﺮﺘﮐارﺎﮐ ﺎﺑ و ﺪﻨﺘﺴﻫ ﻢﻫ ﺮﺳ ﺖﺸﭘ ﻪﮐ ﺖﺳا ﯽﺴﯿﻠﮕﻧا فوﺮﺣ زا یا ﻪﻟﺎﺒﻧد لوا ﻪﺘﺷر یﺎﻫﺮﺘﮐارﺎﮐ نﺎﻤﻫ مود ﻪﺘﺷر یﺎﻫﺮﺘﮐارﺎﮐ مﺎﻤﺗ .ﺪﯿﻨﯿﺑ ﯽﻣ ﻪﻣﺎﻧﺮﺑ ﯽﺟوﺮﺧ هاﺮﻤﻫ ﻪﺑ ار capitalize ﻊﺑﺎﺗ زا هدﺎﻔﺘﺳا .هﺪﺷ ﻪﺘﺷﻮﻧ گرﺰﺑ فوﺮﺣ ﺎﺑ مود ﻪﺘﺷر رد ﻪﻤﻠﮐ ﺮﻫ عوﺮﺷ یﺎﻫ ﺮﺘﮐارﺎﮐ ﻂﻘﻓ .ﺖﺳا
int main() {
char s1[] = "salaam, be emtehan+!khoSH Amadid!!!";
char s2[100];
capitalize(s2,s1);
printf("%s\n", s1);
printf("%s\n", s2);
return 0;
}
:ﯽﺟوﺮﺧ salaam, be emtehan+!khoSH Amadid!!!
Salaam, Be Emtehan+!KhoSH Amadid!!!
- (ﻪﻘﯿﻗد ١۵ نﺎﻣز ،هﺮﻤﻧ ١٠) .ﺪﯿﺴﯾﻮﻨﺑ ار capitalize ﻊﺑﺎﺗ ﻪﻧﺪ ﺑ
void capitalize(char *dest, char *src) { int isletter = 0;
while (*src != '\0') { char c = *src++;
if (!isletter && c >= 'a' && c <= 'z') c += 'A' - 'a';
*dest++ = c;
isletter = (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z');
}
*dest = '\0';
}
:ﺖﺳا هﺪﺷ اﺮﺟا main ﻊﺑﺎﺗ رد ﺮﯾز ﺪﮐ ﻪﻌﻄﻗ ﺪﯿﻨﮐ ضﺮﻓ -٢ لاﻮﺳ
struct PayTime { int hour;
int min;
struct PayTime *prev;
};
int main() {
struct PayTime times[8];
struct PayTime *p, *q;
int i;
times[0].min = 0;
times[0].hour = 9;
times[0].prev = NULL;
p = ×[0];
for (i = 1; i < 8; i++) {
times[i].min = times[i-1].min + 40;
times[i].hour = times[i-1].hour;
times[i].prev = p;
if (times[i].min >= 60) { times[i].min -= 60;
times[i].hour += 1;
p = ×[i];
} }
ﺮﮔا .دﻮﺷ ﯽﻣ پﺎﭼ یﺰﯿﭼ ﻪﭼ ﻢﯿﻨﮐ اﺮﺟا ﻞﺒﻗ تارﻮﺘﺳد ﻪﻣادا رد ار ﺮﯾز لوﺪﺟ ﭗﭼ ﺖﻤﺳ تارﻮﺘﺳد زا ماﺪﮐ ﺮﻫ ﺮﮔا (ﻪﻘﯿﻗد ٢٠ نﺎﻣز ،هﺮﻤﻧ ١۵) .ﺪﯿﯾﺎﻤﻧ ﺮﮐذ ار ﺖﻠﻋ نآ یﻮﻠﺟ دراد ﻞﯾﺎﭙﻣﺎﮐ یﺎﻄﺧ تارﻮﺘﺳد
● :ﺪﻨﻟدﺎﻌﻣ ﺮﯾز رﻮﺘﺳد ود رﺎﺘﺧﺎﺳ ﻪﺑ ﺮﮔ هرﺎﺷا ﮏﯾ یاﺮﺑ ﻪﮐ ﺪﯿﻨﮐ ﻪﺟﻮﺗ p->min
(*p).min
printf("%02d:%02d\n", times[0].hour, times[0].min); 09:00 for (i = 0; i < 8; i++)
printf("%02d:%02d\n",times[i].hour,times[i].min); 09:00 09:40 10:20 11:00 11:40 12:20 13:00 13:40 q = ×[4];
q--;
printf("%02d:%02d\n", q->hour, q->min);
11:00
q = ×[4];
printf("%02d:%02d\n", q[2].hour, q[2].min); 13:00
q = times;
q += 4;
printf("%d\n", q-×[1]);
3
for (i = 1; i < 8; i++)
printf("%02d:%02d\n",times[i].prev->hour, times[i].prev->min);
09:00 09:00 10:20 11:00 11:00 12:20 13:00
printf("%02d:%02d\n",times[3]->hour,times[3]->min); Compile error times[3] is not a pointer, the
operator -> cannot be used
printf("%02d:%02d\n", p.hour, p.min); Compile error p is pointer to struct
the operator "."
cannot be used
printf("%02d:%02d\n", p->hour, p->min); 13:00 for (q = p; q != NULL; q = q->prev) {
printf("%02d:%02d\n", q->hour, q->min);
}
13:00 12:20 11:00 10:20 09:00 q = p->prev->prev->prev;
printf("%02d:%02d\n", q->hour, q->min);
10:20
ﻪﺟاﻮﺧ هﺎﮕﺸﻧاد نﺎﯾﻮﺠﺸﻧاد مﺎﻤﺗ ﺖﺴﯿﻟ نآ رد ﻪﮐ هﺪﺷ هداد studentList.txt مﺎﻧ ﻪﺑ ﻞﯾﺎﻓ ﮏﯾ ﺎﻤﺷ ﻪﺑ ﺪﯿﻨﮐ ضﺮﻓ -٣ لاﻮﺳ ﺲﭙﺳ و ﯽﮔداﻮﻧﺎﺧ مﺎﻧ ﺲﭙﺳ ،ﮏﭼﻮﮐ مﺎﻧ اﺪﺘﺑا ﻞﯾﺎﻓ زا ﻂﺧ ﺮﻫ رد و ﺖﺳا ﯽﻨﺘﻣ ﯽﻠﯾﺎﻓ ﮏﯾ ﻞﯾﺎﻓ ﻦﯾا .ﺖﺳا هﺪﺷ ﻪﺘﺷﻮﻧ ﺮﯿﺼﻧ .ﺖﺳا ﺮﯾز ترﻮﺻ ﻪﺑ ﻞﯾﺎﻓ لوا ﻂﺧ ﺪﻨﭼ تﺎﯾﻮﺘﺤﻣ .هﺪﺷ ﻪﺘﺷﻮﻧ نﺎﯾﻮﺠﺸﻧاد ﯽﯾﻮﺠﺸﻧاد هرﺎﻤﺷ
Akram Zamani 9612345 Kamran Borooji 9634253 Ahmad Saeedi 9612444 Ramin Saeedi 9694835 Pavin Etesami 9619877 Pavin Etesami 9619876 Abbas Daee 9619871 Korosh Daee 9685734 Paviz Etesami 9618876
ترﻮﺻ ﻪﺑ ﻞﯾﺎﻓ ﻪﮑﻨﯾا مود .ﺪﻧا هﺪﺸﻧ هﺪﯿﭼ ﺖﺴﯿﻟ ﻦﯾا رد ﯽﺻﺎﺧ ﺐﯿﺗﺮﺗ ﻪﺑ نﺎﯾﻮﺠﺸﻧاد ﻪﮑﻨﯾا لوا .دراد ﻞﮑﺸﻣ ود ﻞﯾﺎﻓ ﻦﯾا درﻮﮐر ﺮﻫ لﻮﻃ و ﺪﺷﺎﺑ (random access) ﯽﻗﺎﻔﺗا ﯽﺳﺮﺘﺳد ترﻮﺻ ﻪﺑ ﻞﯾﺎﻓ ﻢﯿﻫاﻮﺧ ﯽﻣ ﺎﻣ ﻪﮐ ﯽﺗرﻮﺻ رد ،ﺖﺳا ﯽﻨﺘﻣ .ﺪﺷﺎﺑ ﺖﺑﺎﺛ
:ﻢﯿﻨﮐ ﯽﻣ ﻒﯾﺮﻌﺗ ﺮﯾز ترﻮﺻ ﻪﺑ Student مﺎﻧ ﻪﺑ یرﺎﺘﺧﺎﺳ اﺪﺘﺑا تﻼﮑﺸﻣ ﻦﯾا ﻊﻓر یاﺮﺑ
struct Student { char fname[20];
char lname[20];
int id;
};
.ﺪﻨﻫد ﯽﻣ نﺎﺸﻧ ار ﻮﺠﺸﻧاد ﮏﯾ ﯽﯾﻮﺠﺸﻧاد هرﺎﻤﺷ و ﯽﮔداﻮﻧﺎﺧ مﺎﻧ ،ﮏﭼﻮﮐ مﺎﻧ ﺐﯿﺗﺮﺗ ﻪﺑ id و lname و fname نآ رد ﻪﮐ :ﻢﯿﺴﯾﻮﻧ ﯽﻣ ار ﺮﯾز ﻪﻣﺎﻧﺮﺑ ﺲﭙﺳ int main() {
struct Student students[40000];
int n;
n = readStudents(students);
sortStudents(students, n);
writeStudents(students,n);
return 0;
}
ﺲﭙﺳ .ﺖﺳا struct Student عﻮﻧ زا نآ ﻮﻀﻋ ﺮﻫ ﻪﮐ هﺪﺷ ﻒﯾﺮﻌﺗ 40000لﻮﻃ ﺮﺜﮐاﺪﺣﺎﺑ ﻪﯾارآ ﮏﯾ اﺪﺘﺑا ﻪﻣﺎﻧﺮﺑ ﻦﯾا رد ﻪﯾارآ رد و ﺪﻧاﻮﺧ ﯽﻣ studentList.txt ﻞﯾﺎﻓ زا ﻂﺧ ﻪﺑ ﻂﺧ ار نﺎﯾﻮﺠﺸﻧاد ﻪﺑ طﻮﺑﺮﻣ تﺎﻋﻼﻃا readStudents ﻊﺑﺎﺗ .ﺪﻧادﺮﮔ ﯽﻣ ﺮﺑ ار studentList.txt ﻞﯾﺎﻓ رد نﺎﯾﻮﺠﺸﻧاد داﺪﻌﺗ ﯽﺘﺸﮔﺮﺑ راﺪﻘﻣ ناﻮﻨﻋ ﻪﺑ ﻦﯿﻨﭽﻤﻫ .دﺰﯾر ﯽﻣ students ﻪﯾارآ sortStudents ﻊﺑﺎﺗ .نﺎﯾﻮﺠﺸﻧاد ﯽﻌﻗاو داﺪﻌﺗ ﻪﻧ و ﺖﺳا نﺎﯾﻮﺠﺸﻧاد داﺪﻌﺗ ﺮﺜﮐاﺪﺣ 40000 دﺪﻋ ﻪﮐ ﺪﯿﻨﮐ ﺖﻗد ترﻮﺻ ﻪﺑ ار ﻪﯾارآ ﻦﯾا writeStudents ﻊﺑﺎﺗ ﺖﯾﺎﻬﻧ رد و ﺪﻨﮐ ﯽﻣ ﺐﺗﺮﻣ ﺪﺷ ﺪﻫاﻮﺧ ﻪﺘﻔﮔ ﻪﮐ ﯽﺒﯿﺗﺮﺗ ﻪﺑ ار students ۴ لاﻮﺳ ﻦﯾا .ﺪﻨﮐ ﯽﻣ هﺮﯿﺧذ studentList.bin ﻪﻣﺎﻧ ﺎﺑ ﯽﻠﯾﺎﻓ رد fwrite ﻊﺑﺎﺗ ﻂﺳﻮﺗ (ﺖﯾﺎﺑ ﻪﺑ ﺖﯾﺎﺑ) ﯽﻓدﺎﺼﺗ ﯽﺳﺮﺘﺳد .ﺪﯿﻫد باﻮﺟ ،ﺮﮕﯾد یﺎﻫ ﺖﻤﺴﻗ ﻪﺑ نداد باﻮﺟ زا ﻞﻘﺘﺴﻣ ﺪﯿﻧاﻮﺗ ﯽﻣ ﺎﻬﻧآ زا ماﺪﮐ ﺮﻫ ﻪﺑ ﻪﮐ دراد ﺖﻤﺴﻗ
: (ﻪﻘﯿﻗد ١٠ نﺎﻣز ،هﺮﻤﻧ ١٠) ﺪﯿﺴﯾﻮﻨﺑ ار readStudents ﻊﺑﺎﺗ (ﻒﻟا
int readStudents(struct Student students[]) { FILE *f = fopen("studentlist.txt", "r");
int n;
for (n = 0; fscanf(f, "%s %s %d", l->fname, l->lname, &l->id)!=EOF; n++, l++) ;
fclose(f);
return n;
}
ار ﯽﮔداﻮﻧﺎﺧ مﺎﻧ اﺪﺘﺑا رد :ﻢﯿﻨﮐ ﯽﻣ ﻒﯾﺮﻌﺗ ترﻮﺻ ﻦﯾا ﻪﺑStudent رﺎﺘﺧﺎﺳ ود یاﺮﺑ ار ﺮﺘﮔرﺰﺑ و ﺮﺘﮑﭼﻮﮐ ﻪﻄﺑار (ب ﻪﺑ) وا ﯽﮔداﻮﻧﺎﺧ مﺎﻧ ﻪﮐ ﺖﺳا ﺮﺘﮔرﺰﺑ ﯽﯾﻮﺠﺸﻧاد ،دﻮﺑ توﺎﻔﺘﻣ ﻢﻫ ﺎﺑ ﻮﺠﺸﻧاد ود ﯽﮔداﻮﻧﺎﺧ مﺎﻧ ﺮﮔا .ﻢﯿﻫد ﯽﻣ راﺮﻗ ﺎﻨﺒﻣ ﮏﭼﻮﮐ مﺎﻧ ﻪﮐ ﺖﺳا ﺮﺘﮔرﺰﺑ ﯽﯾﻮﺠﺸﻧاد ،دﻮﺑ یوﺎﺴﻣ ﯽﮔداﻮﻧﺎﺧ یﺎﻫ مﺎﻧ ﺮﮔا .ﺪﺷﺎﺑ ﺮﺘﮔرﺰﺑ (ﺎﻫﺮﺘﮐارﺎﮐ زا یا ﻪﯾارآ ترﻮﺻ ﻪﮐ ﺖﺳا ﺮﺘﮔرﺰﺑ ﯽﯾﻮﺠﺸﻧاد ﺪﻧدﻮﺑ یوﺎﺴﻣ ﺰﯿﻧ ﮏﭼﻮﮐ یﺎﻫ مﺎﻧ ﺮﮔا .ﺖﺳا ﺮﺘﮔرﺰﺑ (ﺎﻫﺮﺘﮐارﺎﮐ زا یا ﻪﯾارآ ترﻮﺻ ﻪﺑ) وا ﻊﺑﺎﺗ ﺪﯾﺎﺑ ﺎﻤﺷ .ﺖﺳا ﺮﺘﮔرﺰﺑ ( ﺢﯿﺤﺻ دﺪﻋ ﮏﯾ ناﻮﻨﻋ ﻪﺑ) وآ ﯽﯾﻮﺠﺸﻧاد هرﺎﻤﺷ
int cmpStudent(struct Student st1, struct Student st2);
ﺮﺘﮔرﺰﺑ st1ﺮﮔا ،ﯽﻔﻨﻣ دﺪﻋ ﮏﯾ دﻮﺑ ﺮﺘﮑﭼﻮﮐ st2 زا st1 ﺮﮔا .ﺪﻨﮐ ﻪﺴﯾﺎﻘﻣ ار st2 و st1 ﻪﮐ ﺪﯿﺴﯾﻮﻨﺑ یرﻮﻃ ار ﻪﺘﺷر ﻪﺴﯾﺎﻘﻣ یاﺮﺑ .ﺪﻧادﺮﮔﺮﺑ ﯽﺘﺸﮔزﺎﺑ راﺪﻘﻣ ناﻮﻨﻋ ﻪﺑ ار ﺮﻔﺻ دﺪﻋ ﺪﻧدﻮﺑ یوﺎﺴﻣ st2وst1ﺮﮔا و ﺖﺒﺜﻣ دﺪﻋ ﮏﯾ دﻮﺑ :ﺪﯿﻨﮐ هدﺎﻔﺘﺳا strcmp دراﺪﻧﺎﺘﺳا ﻊﺑﺎﺗ زا ﺪﯿﻧاﻮﺗ ﯽﻣ ﺎﻫ int strcmp(char s1[], char s2[]);
ﮏﯾ ،ﺖﺒﺜﻣ دﺪﻋ ﮏﯾ ﺐﯿﺗﺮﺗ ﻪﺑ دﻮﺑ یوﺎﺴﻣ نآ ﺎﺑ ﺎﯾ ﺮﺘﮑﭼﻮﮐ ،ﺮﺘﮔرﺰﺑs2زاs1ﺮﮔا ،دﺮﯿﮔ ﯽﻣ ار ﯽﻓﺮﺣ ﻪﺘﺷر ود ﻊﺑﺎﺗ ﻦﯾا (ﻪﻘﯿﻗد ١٠ نﺎﻣز ،هﺮﻤﻧ ١٠) .ﺪﻧادﺮﮔ ﯽﻣ ﺮﺑ ﺮﻔﺻ و ﯽﻔﻨﻣ دﺪﻋ
int cmpStudent(struct Student st1, struct Student st2) { int cmp;
if ((cmp = strcmp(s1.lname, s2.lname)) != 0) return cmp;
if ((cmp = strcmp(s1.fname, s2.fname)) != 0) return cmp;
return s1.id - s2.id;
}
یدﻮﻌﺻ ﺐﯿﺗﺮﺗ ﻪﺑ ار ﺎﻬﻧآ و دﺮﯿﮕﺑ ار Student یﺎﻫرﺎﺘﺧﺎﺳ زا یا ﻪﯾارآ ﻪﮐ ﺪﯿﺴﯾﻮﻨﺑ ﯽﻌﺑﺎﺗ ﻻﺎﺑ ﻊﺑﺎﺗ زا هدﺎﻔﺘﺳا ﺎﺑ (ج (ﻪﻘﯿﻗد ١٠ نﺎﻣز ،هﺮﻤﻧ ١٠) .ﺪﻨﮐ ﺐﺗﺮﻣ void sortStudents(struct Student l[], int n) {
for (int m = n-1; m > 1; m--) for (int i = 0; i < m; i++)
if (cmpStudent(l[i], l[i+1]) > 0) { struct Student tmp = l[i];
l[i] = l[i+1];
l[i+1] = tmp;
} }
ﺎﺑ و دﺮﯿﮔ ﯽﻣ نﺎﻣﻮﮔرآ ناﻮﻨﻋ ﻪﺑ ﻪﯾارآ لﻮﻃ هﻼﻌﺑ ار Student یﺎﻫرﺎﺘﺧﺎﺳ زا یا ﻪﯾارآ writeStudents ﻊﺑﺎﺗ (د ﯽﻣ هﺮﯿﺧذ studentList.bin مﺎﻧ ﺎﺑ ﯽﻠﯾﺎﻓ رد (ﺖﯾﺎﺑ ﻪﺑ ﺖﯾﺎﺑ) ﯽﻗﺎﻔﺗا ﯽﺳﺮﺘﺳد ترﻮﺻ ﻪﺑ ار نآ fwrite ﻊﺑﺎﺗ زا هدﺎﻔﺘﺳا :ﺖﺳا ﺮﯾز ترﻮﺻ ﻪﺑ fwrite ﻊﺑﺎﺗ ﭗﯾﺎﺗﻮﺗوﺮﭘ .ﺪﻨﮐ size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream)
(ﻪﻘﯿﻗد ۵ نﺎﻣز ،هﺮﻤﻧ ۵) .ﺪﯿﺴﯾﻮﻨﺑ ار writeStudents ﻊﺑﺎﺗ ﻪﻧﺪﺑ void writeStudents(struct Student l[], int n) {
FILE *f = fopen("studentlist.bin", "w");
fwrite(l, sizeof(struct Student), n, f);
fclose(f);
}
.ﻢﯿﻫد ﯽﻣ نﺎﺸﻧ (ﺪﻧا ﻪﺘﻓﺎﯾ نﺎﯾﺎﭘ 0 ﺎﺑ ﻪﮐ ﺎﻫﺮﺘﮐارﺎﮐ زا یا ﻪﯾارآ) C ﻪﺘﺷر ترﻮﺻ ﻪﺑ ار ١۶ یﺎﻨﺒﻣ داﺪﻋا ﺪﯿﻨﮐ ضﺮﻓ -۴ لاﻮﺳ ﯽﻣ ضﺮﻓ ﺎﻤﺷ رﺎﮐ ﯽﺘﺣار یاﺮﺑ ﻦﯿﻨﭽﻤﻫ .ﺪﻧﻮﺷ ﯽﻣ هداد ﺶﯾﺎﻤﻧ دﻮﺧ ASCII ﺪﮐ ﺎﺑ F ﺎﺗ A و 9 ﺎﺗ 0 مﺎﻗرا ﻪﮐ ﺐﯿﺗﺮﺗ ﻦﯾﺪﺑ ترﻮﺻ ﻪﺑ داﺪﻋا ﻦﯾاﺮﺑﺎﻨﺑ .دﻮﺷ ﯽﻣ هداد راﺮﻗ …و ﻪﯾارآ ١ ﻪﻧﺎﺧ رد نﺎﮔ هدﺰﻧﺎﺷ ﻢﻗر ،ﻪﯾارآ ﺮﻔﺻ ﻪﻧﺎﺧ رد نﺎﮑﯾ ﻢﻗر ﻢﯿﻨﮐ تارﻮﺘﺳد لﺎﺜﻣ یاﺮﺑ .ﺪﻧﻮﺷ ﯽﻣ ﻪﺘﺷﻮﻧ ﺲﮑﻋﺮﺑ
char a[] = "9CA2";
char b[] = "ABCDF8";
دﺪﻋ ود ﻪﮐ ﻢﯿﺴﯾﻮﻨﺑ add مﺎﻧ ﻪﺑ ﯽﻌﺑﺎﺗ ﻢﯿﻫاﻮﺧ ﯽﻣ .ﺪﻨﻫد نﺎﺸﻧ ار ١۶ یﺎﻨﺒﻣ رد 8FDCBA و 2AC9 دﺪﻋ ود ﺖﺳا راﺮﻗ :ﺪﯿﻨﯿﺑ ﯽﻣ ار add ﻊﺑﺎﺗ زا هدﺎﻔﺘﺳا زا ﯽﻟﺎﺜﻣ ﺮﯾز ﺪﮐ رد .ﺪﻫد راﺮﻗ ﯽﻣﻮﺳ ﻪﯾارآ رد و ﺪﻨﮐ ﻊﻤﺟ ﻢﻫ ﺎﺑ ار ﻻﺎﺑ عﻮﻧ زا
int main() {
char a[] = "9CA2";
char b[] = "ABCDF8";
char c[100];
add(c,a,b);
puts(a);
puts(b);
puts(c);
}
(ﻪﻘﯿﻗد ٣٠ نﺎﻣز ،هﺮﻤﻧ ٢۵) .ﺪﯿﺴﯾﻮﻨﺑ ار add ﻊﺑﺎﺗ ﻪﻧﺪﺑ ﺪﯾﺎﺑ ﺎﻤﺷ
ﺮﮕﻠﻤﻋ زا هدﺎﻔﺘﺳا نوﺪﺑ و ﺮﮔ هرﺎﺷا زا هدﺎﻔﺘﺳا ﺎﺑ ﺎﻓﺮﺻ ار add ﻊﺑﺎﺗ ﻪﮐ ﺪﺷ ﺪﻫاﻮﺧ رﻮﻈﻨﻣ ﯽﻧﺎﺴﮐ یاﺮﺑ ﯽﻓﺎﺿا هﺮﻤﻧ ۵ .ﺪﻨﺴﯾﻮﻨﺑ [ ] ﺖﮐاﺮﺑ
void add(char *c, char *a, char *b) { int carry = 0;
int i;
for (i = 0; a[i] != 0 && b[i] != 0; i++) {
int da = a[i] >= '0' && a[i] <= '9' ? a[i] - '0' : a[i] - 'A' + 10;
int db = b[i] >= '0' && b[i] <= '9' ? b[i] - '0' : b[i] - 'A' + 10;
int dc = da + db + carry;
carry = dc / 16;
dc = dc % 16;
c[i] = dc < 10 ? '0' + dc : 'A' + dc - 10;
}
if (a[i] == 0) a = b;
for (; a[i] != 0 ; i++) {
int da = a[i] >= '0' && a[i] <= '9' ? a[i] - '0' : a[i] - 'A' + 10;
int dc = da + carry;
carry = dc / 16;
dc = dc % 16;
c[i] = dc < 10 ? '0' + dc : 'A' + dc - 10;
}
if (carry) c[i++] = '1';
c[i] = 0;
}
ار M*N ﺎﺗ 1 داﺪﻋا و دﺮﯿﮕﺑ نﺎﻣﻮﮔرآ ناﻮﻨﻋ ﻪﺑ ار نﻮﺘﺳ N و ﺮﻄﺳ M ﺎﺑ یﺪﻌﺑ ود ﻪﯾارآ ﮏﯾ ﻪﮐ ﺪﯿﺴﯾﻮﻨﺑ ﯽﻌﺑﺎﺗ -۵لاﻮﺳ و M ﺪﯿﻨﮐ ضﺮﻓ .ﺖﺳا هﺪﺷ ﻪﺘﺷﻮﻧ N=4 و M=5 یاﺮﺑ ﺮﯾز لﺎﺜﻣ .ﺪﻨﮐ هﺮﯿﺧذ نآ رد (ﺮﯾز ﻞﮑﺷ ﺪﻨﻧﺎﻣ) ﭻﯿﭘرﺎﻣ ترﻮﺻ ﻪﺑ (ﻪﻘﯿﻗد ٢٠ نﺎﻣز ،هﺮﻤﻧ ١۵) .ﺪﻧا هﺪﺷ ﻒﯾﺮﻌﺗ define ﻪﻠﯿﺳﻮﺑ N
#define M 7363
#define N 54221
4 3 2 1
5 16 15 14
6 17 20 13
7 18 19 12
8 9 10 11
void spiral(int A[M][N]) {
// {left,down,right, up}
int di[] = {0, 1, 0, -1};
int dj[] = {-1, 0, 1, 0};
int endi[] = {0, M-1, M-1, 1};
int endj[] = {0, 0, N-1, N-1};
int counter = 1;
int i = 0;
int j = N-1;
int k = 0;
while (counter <= M*N) { A[i][j] = counter++;
if (i == endi[k] && j == endj[k]) { int next_k = (k+1)%4;
endi[k] -= di[k];
endj[k] -= dj[k];
endi[k] += di[next_k];
endj[k] += dj[next_k];
k = next_k;
}
i += di[k];
j += dj[k];
} }