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