|
|
Решение типовых задач на строковые массивыРассмотрим простейшие типовые задачи на строковые массивы. 1) Поиск максимального и минимального элементов массива.
|
|
Программа (QBasic). |
Программа (Pascal). |
|
INPUT "Сколько слов"; n DIM mas(n) AS STRING FOR i = 1 TO n PRINT "Введите след. слово "; INPUT mas(i) NEXT i max$ = "": nm = 0 FOR i = 1 TO n IF LEN(mas(i)) > nm THEN max$ = mas(i) nm = LEN(mas(i)) END IF NEXT PRINT "Слово максимальной длины - "; max$, nm |
Var i,n,nm:integer; max: string; mas: array[1..100] of string; Begin Write ('Сколько слов?'); readln( n); FOR i := 1 TO n Do Begin Write ('Введите след. слово '); Readln (mas); End; max:= ''; nm := 0; FOR i := 1 TO n do IF Length(mas) > nm THEN Begin max := mas; nm := Length(mas); END; Writeln ('Слово максимальной длины - ', max) END. |
|
Программа (QBasic). |
Программа (Pascal). |
|
INPUT "Сколько слов"; n DIM mas(n) AS STRING FOR i = 1 TO n PRINT "Введите след. слово "; INPUT mas(i) NEXT i INPUT "Буква "; b$ k = 0 FOR i = 1 TO n IF LEFT$(mas(i), 1) = b$ THEN k = k + 1 NEXT PRINT "Слов на букву "; b$; k |
Var i,n,k:integer; b: string; mas:array[1..100] of string; Begin Write('Сколько слов'); Readln(n); FOR i := 1 TO n do begin Write ('Введите след. слово '); Readln (mas) end; Write ('Введите букву '); Readln (b); k := 0; FOR i := 1 TO n do IF mas[1] = b THEN k := k + 1; Writeln ('Слов на букву ', b,' - ', k); End. |
|
Программа (QBasic). |
Программа (Pascal). |
|
INPUT "Сколько слов"; n DIM mas(n) AS STRING FOR i = 1 TO n PRINT "Введите след. слово "; INPUT mas(i) NEXT i
k = 0 FOR i = 1 TO n sl$ = "" FOR j = 1 TO LEN(mas(i)) b$ = MID$(mas(i), j, 1) sl$ = b$ + sl$ NEXT j IF sl$ = mas(i) THEN k = k + 1: PRINT mas(i) NEXT
PRINT "Слов-палиндромов "; k |
Var s:array[1..100] of String; s1,s2:String[1]; n,i,j,m,kp:Integer; pr:boolean; Begin Write('Enter number: '); ReadLn(n); For i:=1 To n Do begin Write('Word - '); Readln(s); end; For i:=1 To n Do Begin pr:=false; m:=length(s) div 2; For j:=1 to m do begin s1:=s[j]; s2:=s[Length(s)+1-j]; If s1<>s2 Then begin pr:=true;Break; End; End; If not(pr) then begin inc(kp); Writeln(s); End; end; Writeln(kp,' words-palindromov'); END. |
Задача 2. Определить, является ли натуральное число палиндромом
|
Алгоритм 1 Алгоритм 2 Программы |
Предлагается два подхода к решению задачи, в зависимости от типа входных данных: |
|
|
| Сообщение о результате выводится на экран |
Алгоритмы
Промежуточные данные:
В качестве счётчиков цикла используются переменные i, j
Р - разряд очередной цифры числа, N1 - хранит исходное число
Цифры числа N заносятся в массив Mb, затем переставляются в обратном порядке.
Формируется новое число N2, которое используется для сравнения с исходным

Промежуточные данные: sw - буферная переменная
Символы строки размещаются в обратном порядке в строке s1, которая сравнивается с исходной строкой s
Условие задачи
QBASIC
|
Способ 1 |
Способ 2 |
DEFLNG I-N, P
DIM Mb(10000) AS LONG
CLS
INPUT "Задайте натуральное число"; N
N1 = N
i = 1
DO
Mb(i) = N - INT(N / 10) * 10
N = N \ 10
i = i + 1
LOOP UNTIL N <= 0
N2 = 0: P = 1
FOR j = i - 1 TO 1 STEP -1
N2 = N2 + Mb(j) * P: P = P * 10
NEXT j
IF N2 = N1 THEN
PRINT "ЭТО ЧИСЛО - ПАЛИНДРОМ"
ELSE
PRINT N1; "ЭТО ЧИСЛО - НЕ ПАЛИНДРОМ"
END IF
END
|
DEFLNG I-N
DEFSTR S
DIM mb(10000) AS LONG
CLS
INPUT "Задайте натуральное число"; s
s1 = s
FOR i = 1 TO LEN(s) / 2 'перевернули строку
sw = MID$(s1, i, 1)
MID$(s1, i, 1) = MID$(s1, LEN(s) - i + 1)
MID$(s1, LEN(s) - i + 1) = sw
NEXT i
IF s = s1 THEN
PRINT "ЭТО ЧИСЛО - ПАЛИНДРОМ"
ELSE
PRINT "ЭТО ЧИСЛО - НЕ ПАЛИНДРОМ"
END IF
END
|
Условие задачи Алгоритмы
PASCAL
|
Способ 1 |
Способ 2 |
program ZADANIE2;
uses crt;
var N,N1,N2: longint;
Mb: array [0..10000] of integer;
i,j,p: integer;
begin
clrscr;
Write('Задайте натуральное число');
Readln(N);
N1:=N; i:=1;
repeat
Mb:=N mod 10;
N:=N div 10;
i:=i+1
until N<=0;
N2:=0;p:=1;
for j:= i-1 downto 1 do begin
N2:=N2+Mb[j]*p; p:=p*10
end;
if N2=N1 then
Writeln('Это число-палиндром')
else
Writeln('Это число-НЕ палиндром');
Readln
end.
|
program ZADANIE2;
uses crt;
var s,s1: string;
sw:char;
i: integer;
begin
Clrscr;
Write('Задайте натуральное число');
Readln(s);
s1:=s;
for i:=1 to Length(s) div 2 do begin
sw:=s;
s:=s[length(s)-i+1];
s[length(s)-i+1]:=sw
end;
if s=s1 then
Writeln('Это число-палиндром')
else
Writeln('Это число-НЕ палиндром');
Readln
end.
|
Условие задачи Алгоритмы