Basic - вводный курс

         

Символы и строки

Задача 222

1 Шифровка
CLS
' Запрос количества букв в шифруемом слове
INPUT "Сколько букв в слове"; N
1 Объявление массива для зашифрованного слова
DIM D$ (N)
FOR 1=1 TO N
' Побуквенный запрос исходного слова
PRINT "Введите"; I; "букву";
INPUT C$
' Побуквенная шифровка
D$ (I)=CHR$(ASC(C$)+1) NEXT I
' Вывод на экран зашифрованного слова FOR I = 1 ТО N


PRINT D$(I); NEXT I END
Обратите внимание, что при введении буквы z в результате получается не буква, а символ квадратной скобки. Как избежать этого? Подумайте сами.

Задача 229

' Палиндром
CLS
' Запрос слова с клавиатуры
INPUT "Введите ваше слово"; W$
' Определение длины введенного слова
N=LEN(W$): Wl$=""
' Цикл переворачивания исходного слова задом наперед
FOR I=N TO 1 STEP -I
W1$=W1$+MID$(W$, I, 1) NEXT I
' Вывод исходного и получившегося слов PRINT "Исходное слово - "; W$
PRINT "Исходное слово наоборот - "; Wl$
' Вывод на экран результата
IF W$=W1$ THEN PRINT "Да, это палиндром" ELSE PRINT "Нет, это
не палиндром"
END
Обратите внимание, что программа для фразы "А РОЗА УПАЛА НА ЛАПУ АЗОРА" не сработает. Разберитесь, почему и внесите необходимые поправки.

Задача 231

1 10 слов
DATA STUFF, CAR, SKI, QOIKE, SUN
DATA CARD, PRESS, POOH, GULI, COP
CLS
PRINT "Все слова исходного списка"
FOR 1=1 TO 10
READ W$
PRINT W$; " "; NEXT I
PRINT : PRINT RESTORE
PRINT "Слова списка, отличные от слова SUN" FOR 1=1 ТО 10
READ W$
IF W$O"SUN" THEN PRINT W$; " "; NEXT I
PRINT : PRINT RESTORE
' Определение слова, ближайшего к началу алфавита READ W$ ALFA$=W$ FOR 1=1 TO 9
READ W$
IF W$<ALFA$ THEN ALFA$=W$ NEXT I
PRINT "Слово в списке, ближайшее к началу алфавита - "; PRINT RESTORE
' Определение слова, составленного из последних букв ' всех слов списка

ALFA$
FOR 1=1 ТО 10
READ W$
R$=R$+RIGHT$(WS, 1) NEXT I
PRINT "Слово, составленное из последних букв всех слов списка - "; R$ PRINT RESTORE
PRINT "Все трехбуквенные слова из списка" FOR 1=1 ТО 10
READ W$
IF LEN(W$)=3 THEN PRINT W$; " "; ¦ NEXT I END

Задача 235

' Замена буквосочетаний DATA PHOTO, GRAPH, PHILOPHON, COPHE CLS
FOR 1=1 TO 4 READ W$ FOR J=l TO LEN(W$)
P$=MID$(W$, J, 1): H$=MID$(W$, J + 1, 1)
IF P$o"P" THEN PRINT P$; ELSE IF H$o"H" THEN PRINT H$; ELSE
PRINT "F"; : J=J+1
NEXT J
PRINT NEXT I END

Задача 236

'Столбиковая интерпретация массива
CLS : RANDOMIZE TIMER
INPUT "Сколько чисел будет в массиве"; N
DIM S(N)
' Формирование массива
FOR 1=1 ТО N
S(I)=INT(RND(l)*150)+50
NEXT I
' Графическая интерпретация массива
SCREEN 9
Х=100
FOR 1=1 ТО 10
' Столбик, интерпретирующий элемент массива LINE (X, 300)-(Х+10, 300-S(D), 2, BF ' Белая рамка, обрамляющая столбик LINE (X, 300)-{Х+10, 300-S(I)), 15, В Х=Х+10
NEXT I
' Вывод элементов массива на экран
FOR 1=1 ТО N PRINT S(I) ;
NEXT I
END

Задача 239

1 Вычисление среднего квадратичного элементов
' заданного массива .
DATA 31, 19, 52, 65, 6, 8, 13, 16, 97, 33
CLS
DIM S(10)
' Формирование массива и вывод его элементов на экран
FOR 1=1 ТО 10
READ S(I)
? S(I); NEXT I
' Вычисление среднего арифметического элементов массива Т=0 FOR 1=1 ТО N
T=T+S(I) NEXT I TR=T/N
1 Вычисление среднего квадратичного элементов массива Т=0 FOR 1=1 ТО N
T=T+(S(I)-TR)A2 NEXT I SRKV=S/N
? "Среднее арифметическое элементов массива = "; TR ? "Среднее квадратичное элементов массива = "; SRKV END

Задача 240

' Вывод на экран элементов массива по заданному критерию
CLS: RANDOMIZE TIMER
INPUT "Сколько чисел будет в массиве"; N
DIM S(N)
' Формирование массива и вывод его на экран
FOR 1=1 ТО N
S(I)=INT(RND(1)*21)+2 ? S(I); NEXT I
FOR 1=1 TO INT(SQR(N))
? "Значение элемента массива №"; 1Л2; "равно"; 3(1Л2) NEXT I END

Задача 242

' Вывод массива в строки по 6 элементов, начиная с последнего
CLS: RANDOMIZE TIMER
INPUT "Сколько чисел будет в массиве"; N
DIM S(N)
' Формирование массива и вывод его на экран
FOR 1=1 ТО N
S(I)=INT(RND(1)*90)+10
? 3(1); NEXT I ?: ?
9 Вывод массива в строки по 6 элементов, начиная с последнего I = N WHILE IO6
FOR I=N TO N-5 STEP -1 ? S(I);
NEXT I
N=N-6
9
WEND END

Задача 245

'Столбиковая интерпретация массива, его максимума и минимума
CLS : RANDOMIZE TIMER
' Объявление и формирование массива
INPUT "Сколько чисел будет в массиве"; N
DIM S(N)
FOR 1=1 ТО N
S(I)=INT(RND(1)*150)+50 NEXT I
'Поиск максимального элемента массива и его индекса MAX=S(1): NMAX=1 FOR 1=2 ТО N
IF S(I)>MAX THEN MAX=S(I): NMAX=I NEXT I
'Поиск минимального элемента массива и его индекса MIN=S(1): NMIN=1 FOR 1=2 ТО N
IF S{I)<MIN THEN MIN=S(I): NMIN=I NEXT I
' Графическая интерпретация массива» SCREEN 9 X=100 FOR 1=1 TO 10
LINE (X, 300)-(X+10, 300-S(I)), 14, BF
IF I = NMAX THEN LINE (X, 300)-(X+10, 300-S(I)), 4, BF
IF I = NMIN THEN LINE (X, 300)-(X+10, 300-S(D), 2, BF
LINE (X, 300)-(X+10, 300-S(I)), 15, В
X=X+10 NEXT I
' Вывод на экран элементов массива, его максимума и минимума FOR 1=1 ТО N
PRINT S(I) ; NEXT I PRINT
PRINT "Максимальный элемент массива - "; MAX; "Его индекс -"; NMAX
PRINT "Минимальный элемент массива - "; MIN; "Его индекс - "; NMIN
END

Задача 247

62 55 29
1 Формула Герона
DATA 13, 48, 35, 90,
DATA 35, 40, 20, 71,
DATA 27, 68, 41, 54,
CLS
DIM A(5), B(5), C(5), P(5), S(5)
FOR 1=1 TO 5: READ A(I): NEXT I
FOR 1=1 TO 5: READ B(I): NEXT I
FOR 1=1 TO 5: READ С(I): NEXT I
FOR 1=1 TO 5
PP=P(I)/2
S(I)=SQR (PP*(PP-A(I))*(PP-B(I))*(PP-C(I)))
? "Периметр"; I; "треугольника равен"; Р(1); "см"
? "Площадь"; I; "треугольника равна"; S(I); "кв.см"
NEXT I END

Задача 251

' Расстояния между точками
DATA 120, 58, 280, 440, 157, 99, 350, 290, 500,159
DATA 271, 279, 35, 100, 160, 234, 45, 170, 200, 66
DATA 271, 279, 35, 100, 360, 234, 545, 170, 200, 266
DATA 120, 58, 280, 240, 157, 99, 150, 290, 50, 159
SCREEN 9
1 Объявление и формирование массивов
DIM XI(10), Yl(10), X2(10), Y2(10)
FOR 1=1 TO 10: READ XI (I) : NEXT I
FOR 1=1 TO 10: READ Y1(I): NEXT I
FOR 1=1 TO 10: READ X2(I): NEXT I
FOR 1=1 TO 10: READ Y2(I): NEXT I
' Формирование массива расстояний между точками
FOR 1=1 ТО 10
S(I)=SQR((X1(I)-X2(I))Л2+(У1(I)-Y2(I))Л2) NEXT I
' Поиск максимальной и минимальной длины MAX=S(1): NMAX=1
FOR 1=2 TO 10
IF S{I)>MAX THEN MAX=S(I): NMAX=I NEXT I
MIN=S(1): NMIN=1 FOR 1=2 TO 10
IF S(I)<MIN THEN MIN=S(I): NMIN=I NEXT I
' Графическая интерпретация FOR 1=1 TO 10
LINE (XI (I), Yl (I) )- (X2 (I) , Y2(I)), 15
IF I=NMAX THEN LINE (XI (I) , Yl (I) ) - (X2 (I) , Y2(U), 4
IF I=NMIN THEN LINE (X1(I), Yl (I) ) - (X2 (I) , Y2(D), 2 NEXT I END

Задача 256

1 Сборщики компьютеров
1 Понедельник
DATA 37, 14, 48, 24, 80, 60, 56
' Вторник .
DATA 77, 34, 45, 23, 45, 39, 51
' Среда
DATA 58, 65, 49, 49, 56, 45, 38
' Четверг
DATA 61, 57, 55, 89, 33, 52, 60
' Пятница
DATA 80, 67, 77, 70, 55, 76, 81
CLS
' Объявление и формирование массивов для каждого сборщика DIMA(5), B(5), C(5), D(5), E(5), F(5), G(5), S(7), SR(5) FOR 1=1 TO 5
READA(I), B(I), C(I), D(I), E(I), F(I), G(I) NEXT I
' Общее количество компьютеров за неделю для каждого сборщика
FOR J=l TO 7: S(J)=0: NEXT J
J-l: FOR 1=1 TO 5: S (J) =S (J)+A (I) : NEXT I
J=2: FOR 1=1 TO 5: S (J) =S (J)+B (I) : NEXT I
J=3: FOR 1=1 TO 5: S (J) =S (J)+C (I) : NEXT I
J=4: FOR 1=1 TO 5: S(J)=S(J)+D(I): NEXT I
J=5: FOR 1=1 ТО 5: S(J)=S(J)+E(I): NEXT I
J=6: FOR 1=1 TO 5: S(J)=S(J)+F(I): NEXT I
J=7: FOR 1=1 TO 5: S (J) =S (J)+G (I) : NEXT I
' Максимальное количество за неделю одним сборщиком
MAX=S(1): К=1
FOR J=2 TO 7
IF S(J) > MAX THEN MAX=S(J): K=J NEXT J
PRINT "Максимальное количество компьютеров за неделю: PRINT "собрал рабочий №"; К PRINT
' Среднее количество за каждый день недели FOR 1=1 ТО 5
; МАХ
PRINT "В"; I; "день в среднем собрано"; SR(I); "компьютеров" NEXT I PRINT
' Лучший результат за один день, номер сборщика и день недели RESTORE READ DAY MX=DAY: K=l FOR 1=2 TO 35
READ DAY
IF DAY>MX THEN MX=DAY: K=I NEXT I
PRINT "Максимальное количество компьютеров за один день: " ;
MX
N=K MOD 7
Nl=K/7
IF N1<=1 AND Nl>0 THEN 0$="Понедельник"
IF Nl<=2 AND N1>1 THEN 0$="Вторник"
IF Nl<=3 AND Nl>2 THEN D$="Cpefla"
IF Nl<=4 AND Nl>3 THEN D$="4eTBepr"
IF Nl<=5 AND Nl>4 THEN О$="Пятница"
PRINT "собрал рабочий №"; N
PRINT "Это был день недели "; D$
END

Задача 267

' Сортировка выбором
CLS : RANDOMIZE TIMER
INPUT "Сколько чисел будет в массиве"; N
' Объявление, формирование массива и вывод его на экран
DIM S(N)
FOR 1=1 ТО N
S(I)=INT(RND{1)*150)+50
PRINT S(I) ; NEXT I PRINT
1 Сортировка с использованием вложенных циклов FOR 1=1 ТО N-1
MIN=S(N)
K=N
FOR J=N TO I STEP -1
IF S(J)<MIN THEN MIN=S(J): K=J
NEXT J
SWAP S(K), S(I) NEXT I
' Вывод отсортированного массива FOR 1=1 TO N
PRINT S (I); NEXT I END

Задача 269

' Сортировка методом "пузырька"
CLS
DATA Q,W,E,R,T,Y,U,I,O,P
DATA A, S, D, F, G, H, J, K, L, Z
DATA X,C,V,B,N,M
' Объявление, формирование и вывод исходного массива на экран
N=26: DIM ENG$(N)
PRINT "Исходный массив"
FOR 1=1 ТО N
READ ENG$(I)
PRINT ENG$(I); " ";
NEXT I
PRINT
FOR 1=1 TO N-l
FOR J=l TO N-l
IF ENG$(J)>ENG$(J+1) THEN SWAP ENG$(J), ENG$(J+1)
NEXT J NEXT I PRINT
' Вывод отсортированного массива PRINT "Отсортированный массив" FOR 1=1 ТО N
PRINT ENG$(I); " "; NEXT I END

Содержание раздела