باسمه تعالي
پاسخ سوالات هفتمين دوره مسابقات آزمايشگاهي و رايانه دانش آموزان سراسر کشور گرگان مرداد ماه 1385
سوال اول برنامه اي بنويسيد که مقلوب هر عدد حقيقي را محاسبه و چاپ کند
مثال:
ورودي ? 5324/153 خروجي ? 3514/235
ورودي ? 7358 خروجي ? 8537
CLS
INPUT A#
K = 1
DO UNTIL INT(A#) = A#
A# = A# * 10
K = K * 10
LOOP
M# = 0
DO
R = A# MOD 10
A# = A# \ 10
M# = M# * 10 + R
LOOP UNTIL A# = 0
H = M# / K
PRINT H
سوال دوم : برنامه اي بنويسيد که n عدد را از ورودي بگيرد و بدون استفاده از حلقه هاي تودر تو آنها را مرتب نموده و چاپ نمايد
CLS
INPUT "How many number . . . "; N
OPTION BASE 1
DIM A(N)
FOR J = 1 TO N
PRINT "Enter "; J; " TH marks";
INPUT A(J)
NEXT
M = N - 1
FOR J = 0 TO M ^ 2 - 1
P = J MOD M + 1
IF A(P) > A(P + 1) THEN SWAP A(P), A(P + 1)
NEXT J
FOR J = 1 TO N
PRINT A(J);
NEXT J
سوال سوم عمل SHIFT ىر رشته ها را به صورت ؤير تعريف مي كنيم
- به اؤاي هر حرف صورت مبناي 2 كى اسكي (ASCII) آنرا در نظر مي گيريم
- همه نمايش هاي ASCII ( حالت هاي مبناي 2 ) را در کنار هم به صورت دنباله اي از 0و 1 ها در نظر مي گيريم
- حال از سمت چپ به تعداد N رقم 0 وارد مي کنيم و همه ارقام را به تعداد N به سمت راست منتقل مي کنيم به اين ترتيب از سمت راست N رقم را حذف مي کنيم
- حال دوباره دنباله 0 و 1 ها را به قسمت هاي 8 تايي (هر کدام معادل يک بايت ) در نظر مي گيريم و به کاراکتر(حروف ASCII ) معادل شان تبديل مي کنيم
برنامه اي بنويسيد که يک رشته و نيز عدد N را بخواند و رشته پس از عمل SHIFT را چاپ نمايد .
ورودي ? ABCD و N=3 مثال :
01000001 01000010 01000011 01000100 كد حروف ورودي در مبناي 2
00001000 00101000 01001000 01101000 SHIFTکد حروف پس از 3 بار عمل
به اين ترتيب در خروجي برنامه کاراکترهاي شماره 8 - 40 - 72 - 104
را چاپ مي کنيم
پاسخ سوال سوم
INPUT "ENTER A STRING . . ."; A$
INPUT "HOW MANY SHIFT . . . "; X
S$ = ""
K = LEN(A$)
FOR i = 1 TO K
B = ASC(MID$(A$, i, 1))
M$ = ""
FOR J = 1 TO 8
F = B MOD 2
B = B \ 2
C$ = LTRIM$(STR$(F))
M$ = C$ + M$
NEXT
S$ = S$ + M$
NEXT
S$ = STRING$(X, "0") + S$: S$ = MID$(S$, 1, K * 8)
RESULT$ = ""
FOR i = 0 TO K - 1
W$ = MID$(S$, i * 8 + 1, 8)
CH = 0
FOR U = 1 TO 8
IF MID$(W$, U, 1) = "1" THEN CH = CH + 2 ^ (8 - U)
NEXT
RESULT$ = RESULT$ + CHR$(CH)
NEXT
PRINT RESULT$
سوال چهارم برنامه اي بنويسيد که عدد N را بگيرد و فاکتوريل آنرا محاسبه و چاپ نمايد (N عددي است طبيعي کوچکتر يا مساوي 500)
CLS
DIM K(1 TO 500) AS INTEGER
DIM P(1 TO 500) AS INTEGER
INPUT "PLEASE ENTER N FOR CALCULATE N! . . . "; N
K(1) = 1
FOR A = 1 TO N
B = A
FOR I = 1 TO 500
P(I) = K(I)
K(I) = 0
NEXT
W = 0
DO
M = B MOD 10
B = B \ 10
FOR U = 1 TO 490
S = K(U + W) + (M * P(U))
K(U + W) = S MOD 10
K(U + W + 1) = K(U + W + 1) + S \ 10
NEXT
W = W + 1
LOOP UNTIL B = 0
NEXT A
F = 0
H = 500
DO
IF K(H) <> 0 THEN F = 1
IF F = 1 THEN PRINT USING "#"; K(H);
H = H - 1
LOOP UNTIL H = 0
+
نوشته شده در چهارشنبه دهم مرداد 1386ساعت 15:7 توسط رسول فضلی
|