Программа проверки бланковых тестов

Подбор задач для подготовки к олимпиаде по информатике

(Задачи по программированию)  

-----------------------------------------------------------------------------------------------

REM Определить порядковый номер даты с начала года

          DIM A(31)

1  INPUT "введите число: "; N1: IF N1 > 31 THEN 1

2  INPUT "введите номер месяца: "; N2:  IF N2 > 12 THEN 2

   INPUT "введите год: "; N3

    DATA 31,28,31,30,31,30,31,31,30,31,30,31

     FOR I = 1 TO N2

      READ A(I)

      IF N3 = INT(N3 / 4) * 4 THEN A(2) = 29

     NEXT

    FOR I = 1 TO N2 - 1

     s = s + A(I)

    NEXT

    PRINT "порядковый номер ="; s + N1

-----------------------------------------------------------------------------------------------

REM распечатать двумерный массив и найти сумму его элементов

CLS

RANDOMIZE TIMER

DIM a(9, 6)

FOR x = 1 TO 9

  FOR y = 1 TO 6

     a(x, y) = INT(RND(1) * 10)

     LOCATE x, y * 3: PRINT a(x, y)

     s = s + a(x, y)

  NEXT

NEXT

 PRINT "сумма всех элементов таблицы равна"; s

 END

-----------------------------------------------------------------------------------------------

REM задача: распечатать все делители данного натурального числа

CLS

INPUT "введите натуральное число"; m

i = 1

1 IF i <= m THEN 3 ELSE END

3  IF m / i = m \ i THEN PRINT i;  ELSE 5

5 i = i + 1

GOTO 1

-----------------------------------------------------------------------------------------------

REM   Дана таблица. Подсчитать наибисло одинаковых идущих в ней подряд элементов

INPUT "длина  массива"; N

 RANDOMIZE TIMER

 DIM A(N)

 FOR I = 1 TO N

 A(I) = INT(RND(1) * 10)

 PRINT A(I);

 NEXT

  S = 1: K = 1

  FOR I = 2 TO N

  IF A(I) <> A(I - 1) THEN 1 ELSE 2

1 IF K > S THEN S = K

 K = 1

2 K = K + 1

NEXT

PRINT " S="; S - 1

-----------------------------------------------------------------------------------------------

 

REM подсчитайте количество различных чисел, встречающихся в табл. Повторяющиеся числа  учитывать один раз.

INPUT "длина  массива"; n

 RANDOMIZE TIMER

 DIM a(n * 2)

 FOR i = 1 TO n

 a(i) = INT(RND(1) * 10)

 PRINT a(i);

 NEXT

 FOR i = 2 TO n

 d$ = "нет повторения"

 j = 1

   WHILE j <= i - 1 AND d$ = "нет повторения"

    IF a(j) = a(i) THEN d$ = "есть повторения" ELSE j = j + 1

   WEND

 IF d$ = "нет повторения" THEN s = s + 1

 NEXT

 PRINT "таких элементов"; s + 1

-----------------------------------------------------------------------------------------------

 Задача о магическом квадрате

   CLS 

  LOCATE 14, 1: INPUT "размеры таблицы"; n:  LOCATE 14, 1: PRINT "          "

  DIM a(n, n)

  FOR i = 1 TO n

    LOCATE 13, 1: PRINT "ввод "; i; " - ой строки "

  FOR j = 1 TO n

      LOCATE 14, 1:  INPUT a(i, j):  LOCATE 14, 1: PRINT "                     "

  LOCATE i, j * 3: PRINT a(i, j)

  NEXT j

  NEXT i

  FOR i = 1 TO n

  FOR j = 1 TO n

    s(i) = s(i) + a(i, j)

 NEXT

 IF s(i) <> s(1) THEN PRINT "это не магический квадрат" ELSE 11

  GOTO 500

11  NEXT

   PRINT

   FOR j = 1 TO n

   FOR i = 1 TO n

      q(j) = q(j) + a(i, j)

   NEXT

    IF q(j) <> s(1) THEN PRINT "это не магический квадрат" ELSE 22

      GOTO 500

22 NEXT

     PRINT

    FOR i = 1 TO n

   FOR j = 1 TO n

     NEXT

     IF i = j THEN r = r + a(i, j) ELSE 1

1  NEXT

     FOR j = 1 TO n

   FOR i = 1 TO n

     IF j = n + 1 - i THEN t = t + a(i, j) ELSE 21

21 NEXT

   NEXT

  IF r <> s(1) AND t <> s(1) THEN PRINT "это не магический квадрат" ELSE PRINT "магический"

500  END

-----------------------------------------------------------------------------------------------

 

REM задача 1: Найти все положительные четырехзначные числа abcd(а<=3), для которых выполняются следующие условия: a,b,c,d -  разные цифры; ac-cd=a+b+c+d(здесь ab,cd - двузначные числа) (Районная олимпиада по ИиВТ,2002)

CLS

FOR a = 1 TO 3

  FOR b = 0 TO 9

   FOR c = 0 TO 9

    FOR d = 0 TO 9

     IF a <> b AND a <> c AND a <> d AND b <> d AND b <> c AND c <> d AND a * 10 + b - (c * 10 + d) = a + b + c + d THEN PRINT a, b, c, d

    NEXT

   NEXT

 NEXT

NEXT

END

-----------------------------------------------------------------------------------------------

   REM*  В таблице N x N,где N<13 клетки заполнены некоторым образом цифрами

   ' от 0 до 9.Написать программу поиска маршрута  из клетки А(1,1) в клетку

   ' А(N,N). Маршрут должен удовлетворять следующим требованиям:1)он  состоит

   ' из отрезков;2)длина маршрута минимально возможна;3)сумма  чисел в клетках

   ' максимальна

     CLS

  LOCATE 14, 1: INPUT "размеры таблицы"; N:  LOCATE 14, 1: PRINT "                  "

  DIM a(N, N)

  FOR i = 1 TO N

  FOR j = 1 TO N

     LOCATE 14, 1:  a(i, j) = INT(RND(1) * 10)

     LOCATE i, j * 2: PRINT a(i, j)

  NEXT j

  NEXT i

  PRINT

  i = 1: j = 1: s = a(1, 1)

  LOCATE 1, 3: PRINT " "

16  IF a(i + 1, j) > a(i, j + 1) THEN 17 ELSE 19

17  i = i + 1

GOTO 20

19 j = j + 1

20 s = s + a(i, j)

   LOCATE i, j * 2 + 1: PRINT " "

   FOR g = 1 TO 990000: NEXT                                'задержка

   k = k + 1: IF k = N * 2 - 2 THEN PRINT "s="; s ELSE 27

   END

27  IF i = N THEN 19

   IF j = N THEN 17 ELSE 16

-----------------------------------------------------------------------------------------------

REM Программа нахождения наименьшего (наибольшего) элемента массива

  CLS

  INPUT "введите количество элементов массива"; n

  DIM a(n)

  RANDOMIZE TIMER

  FOR i = 1 TO n

  a(i) = INT(RND(1) * 1000) / 10

  PRINT a(i);

  NEXT

  min = a(1)

  FOR i = 1 TO n

  IF a(i) <= min THEN min = a(i) ELSE 1

  nom = i

1 NEXT

  PRINT

  PRINT "минимальный элемент этого массива"; min

  PRINT "его номер"; nom

  END

-----------------------------------------------------------------------------------------------

 10 REM программа вычисления наибольшего общего делителя двух натуральных чисел

20 INPUT "введите два натуральных числа(через запятую)"; X, Y

30 a = X: b = Y

40 IF a = b THEN 70

50 IF a > b THEN a = a - b ELSE b = b - a

60 GOTO 40

70 PRINT "НОД("; X; ","; Y; ")="; a

80 END

-----------------------------------------------------------------------------------------------

REM ЗАДАЧАроверить является ли данное слово "ПЕРЕВЕРТЫШЕМ"

INPUT "введите Ваше слово"; d$

  FOR i = 1 TO LEN(d$)

   k$ = MID$(d$, i, 1) + k$

  NEXT

IF k$ = d$ THEN PRINT "данное слово является ПЕРЕВЕРТЫШЕМ" ELSE PRINT "данное слово HE является ПЕРЕВЕРТЫШЕМ"

END

-----------------------------------------------------------------------------------------------

CLS

    REM Программа определяет простое или составное натуральное число

    INPUT "введите натисло"; n

    IF n = 1 THEN PRINT "разделение натуральных чисел на простые и составные начинается с числа 2" ELSE 1

     END

1 f = 0

      FOR i = 2 TO n / 2

     IF n MOD i = 0 THEN f = 1

    NEXT

     IF f = 0 THEN PRINT "простое" ELSE PRINT "не простое т.е.составное"

    END

-----------------------------------------------------------------------------------------------

REM задача: распечатать все простые числа  от 5000 до 6000, чтобы они все размещались  на экране

CLS

FOR n = 5000 TO 6000

s = 0

FOR i = 1 TO n

IF n / i = n \ i THEN s = s + 1

NEXT

IF s = 2 THEN PRINT n;

NEXT

REM ********  ДОПОЛНИТЕЛЬНЫЕ ЗАДАНИЯ: **********

REM 1.подсчитать их количество

REM 2.сколько чисел оканчивается на цифру 7

REM 3.образовать массив из всех таких чиселтобы сумма квадратов его цифр равнялась 500

-----------------------------------------------------------------------------------------------

REM программа перевода  чисел из одной системы счисления в другую

20 INPUT "введите число"; n$

30 INPUT "введите входную систему счисления-"; si

40 INPUT "введите выходную систему счисления-"; so

50 IF si = 10 THEN d = VAL(n$): GOTO 130

60  d = 0: k$ = ""

70  FOR i = 1 TO LEN(n$)

80  q = ASC(MID$(n$, i, 1))

90  IF q > 64 THEN r = q - 55: GOTO 110

100 r = VAL(MID$(n$, i, 1))

110  d = d + r * si ^ (LEN(n$) - 1)

120  NEXT

125  IF so = 10 THEN k$ = STR$(d): GOTO 180

130 IF d = 0 THEN PRINT "ошибка": GOTO 180

140 r = d - INT(d / so) * so + .5

150 IF INT(r) > 9 THEN q = INT(r) + 55: k$ = CHR$(q) + k$: GOTO 170

160 k$ = STR$(INT(r)) + k$

170 IF d >= so THEN d = INT(d / so): GOTO 140

180 PRINT "результат :  "; k$

190 END

-----------------------------------------------------------------------------------------------

   REM программа вычисления совершенных чисел: натуральное число называют совершенным, если оно равно сумме своих делителей, не считая его самого, напримерисло 6 совершенное,т.к 6=1+2=3

    CLS

1   FOR n = 1 TO 1000

2   M = n

3   i = 1

4  IF i < M THEN 5 ELSE 9

5  IF M / i = M \ i THEN  ELSE 7

6  s = s + i

7  i = i + 1

8   GOTO 4

9  IF s = n THEN PRINT n; "данное число совершенное"

10  s = 0

11  NEXT

12  END

-----------------------------------------------------------------------------------------------

 

REM программа: сумма цифр данного  числа

CLS

INPUT "введите число"; z

h$ = STR$(z)   '*************переведит введенное число в литерную величину***

n = LEN(h$)    'определяет длину лителичины,т.е.кол-во цифр

s = 0

FOR i = 2 TO n

b$ = MID$(h$, i, 1)  'вырезает из литерной величины i-ый символ

r = VAL(b$)          'переводит из литерной величины в целый тип

PRINT r

s = s + r

NEXT

PRINT "сумма цифр"; s

-----------------------------------------------------------------------------------------------

  REM упорядочение элементов массива по возрастанию(убыванию)

   INPUT "введите длину одномерного массива(таблицы)"; N

  DIM A(N)

  CLS : RANDOMIZE TIMER

              PRINT "данный массив:"

 FOR I = 1 TO N

  A(I) = INT(RND(1) * 100)

  PRINT A(I);

 NEXT

   FOR J = 1 TO N

    MIN = A(J)

     FOR I = J TO N

      IF A(I) < MIN THEN MIN = A(I) ELSE 1

        R = A(I)

        A(I) = A(J)

        A(J) = R

1    NEXT

   NEXT

 PRINT

 

  PRINT " упорядоченный по возрастанию"

 FOR I = 1 TO N

   PRINT A(I);

 NEXT

-----------------------------------------------------------------------------------------------

REM составить программу вычисления факториала: n!=1*2*3*...*(n-1)*n

INPUT " введите натуральное число"; n

k = 1

FOR i = 1 TO n

k = k * i

NEXT

PRINT "факториал равен "; k

END

-----------------------------------------------------------------------------------------------

REM Данная программа выделяет цифры натурального числа

CLS

INPUT "введите исследуемое число:", z

 m = z

   DO WHILE m > 0

      C = m MOD 10

      m = m \ 10

      T = T + 1

      C(T) = C

   LOOP

 m = C

 PRINT

 FOR I = T TO 1 STEP -1

 K(I) = C(I)

 PRINT K(I);

 NEXT

 -----------------------------------------------------------------------------------------------

 

 Задача Определить, является ли данное число ДРУЖЕСТВЕННЫМ

INPUT n

INPUT m

i = 2

3 IF i <= n THEN 4 ELSE 7

4 IF n / i = n \ i THEN s1 = s1 + n / i ELSE 5

PRINT "делители первого числа"; n \ i

5 i = i + 1

GOTO 3

PRINT "                                "

7 i = 2

8 IF i <= m THEN 9 ELSE 12

9  IF m / i = m \ i THEN s2 = s2 + m / i ELSE 10

PRINT "делители второо числа"; m \ i

10 i = i + 1

GOTO 8

12   IF s1 = m AND s2 = n THEN PRINT дружественные" ELSE PRINT "недружественные"

PRINT s1, s2

-----------------------------------------------------------------------------------------------

 REM  Число Армстронга

FOR z = 1 TO 10000

h$ = STR$(z)

n = LEN(h$)

s = 0

FOR i = 2 TO n

b$ = MID$(h$, i, 1)

r = VAL(b$)

s = s + r ^ 4

IF s = z THEN PRINT "============"; z

IF s = z THEN t = t + 1

 NEXT i

NEXT z

  PRINT " таких чисел в указанном промежутке"; t

-----------------------------------------------------------------------------------------------

REM cумма чисел Фибоначчи

DIM x(20)

x(1) = 1

x(2) = 1

 FOR n = 3 TO 20

x(n) = x(n - 1) + x(n - 2)

NEXT

 FOR n = 1 TO 10

s = s + x(n)

NEXT n

 PRINT " Сумма равна:"; s

END

-----------------------------------------------------------------------------------------------

REM составить программу вычисления факториала: n!=1*2*3*...*(n-1)*n

INPUT " введите натуральное число"; n

k = 1

FOR i = 1 TO n

k = k * i

NEXT

PRINT "факториал равен "; k

END

-----------------------------------------------------------------------------------------------

 

' программа вычисления СОВЕРШЕННЫХ чисел: натуральное число называют

 ' совершенным, если оно равно сумме своих делителей, не считая его самого,

 ' например, число 6 совершенное, т числа 1,2,3 делители числа 6 и  6=1+2+3

    CLS

1   FOR n = 1 TO 1000

2   M = n

3   i = 1

4  IF i < M THEN 5 ELSE 9

5  IF M / i = M \ i THEN  ELSE 7

6  s = s + i

7  i = i + 1

8   GOTO 4

9  IF s = n THEN PRINT n; "данное число совершенное"

10  s = 0

11  NEXT

12  END

-----------------------------------------------------------------------------------------------

 CLS приближенное решение уравнения

INPUT "задать х1"; x1

 INPUT "задать х2"; x2

 INPUT "укажите точность"; pogr

 PRINT

1 x0 = (x1 + x2) / 2

 f1 = (LOG(x1)) ^ 2 / (x1) - 3 * x1

 f0 = (LOG(x0)) ^ 2 / (x0) - 3 * x0

 PRINT x0

 IF x2 - x1 < pogr THEN PRINT "корень уравнения с указанной точностью равен "; x0 ELSE 2

 END

2 IF f1 * f0 < 0 THEN x2 = x0 ELSE x1 = x0

 GOTO 1

-----------------------------------------------------------------------------------------------

 Задача Дано целое число k и последовательность цифр в которой выписаны все подряд трехзначные числа. Какая цифра стоит на k-ом месте?

 Input k

For i = 100 To 999

d = d + Str(i)

Next

Print d, Len(d)

For i = 1 To Len(d)

If Mid(d, i, 1) <> " " Then q = q + Mid(d, i, 1)

Next

Print q, Len(q)

Print Mid(q, k, 1)

   На каком месте в этой последовательности находится первая цифра 9

For i = 1 To Len(q)

If Mid(q, i, 1) = 9 And l < 1 Then g = i Else GoTo 1

l = l + 1

1 Next

Print g

-----------------------------------------------------------------------------------------------

 Задача из ЕГЭ по информатике  1 112 1121123 112112311211234 Какая цифра на 113 ом месте

Input k

Dim a(9)

f = ""

For i = 1 To 9

a(i) = i

Next

For i = 1 To 9

f = f + f + Str(a(i))

Print f, Len(f)

Next

 For i = 1 To Len(f)

If Mid(f, i, 1) <> " " Then ff = ff + Mid(f, i, 1)

Next

 Print Mid(ff, k, 1)

-----------------------------------------------------------------------------------------------

      Программа рисования звезды  вписанной в окружность

  pi = 3.141592

  k = 2.5

input x0, y0,r     x0,y0 центр окружности, к радиус окружности

  for i = 0 To 2 * pi Step pi / k

    line (x0 + r * cos(i), y0 + r * sin(i))-(x0 + r * cos(i + k), y0 + r * sin(i + k))

    circle (x0, y0), r

  next-----------------------------------------------------------------------------------------------

В данном натуральном числе переставить цифры таким образом, чтобы получилось наибольшее число, записанное теми же цифрами

(например, если N=10513, то ОТВЕТ: 53110)

Input n

f$ = Str$(n)

d = Len(f$) 1 

Dim  A(d)  

                                 

For i = d To 1 Step -1

A(i) = Int(n / 10 ^ (i - 1))                         

n = n - A(i) * 10 ^ (i - 1)

Next

 

   For i = 1 To d

   For j = i + 1 To d

     If a(j) > a(i)    Then t = a(j)     Else GoTo 1

                                   a(j) = a(i)

                                    a(i) = t          

1  Next

    Next

 

For i = 1 To d

Print a(i);

Next

 

Сайт управляется системой uCoz