باسمه تعالی
پاسخ سوالات هفتمین دوره مسابقات آزمایشگاهی و رایانه دانش آموزان سراسر کشور گرگان مرداد ماه 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