Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл: Источник:
Скачиваний:
286
Добавлен:
04.03.2014
Размер:
1.68 Кб
Скачать
Задача:
Двумерный массив MxN заполнить случайными символами английского алфавита (заглавные). Вывести на экран сколько раз встречается каждый символ.

Алгоритм решения задачи:
Программа написана с учетом того, что неизвестно какие номера по таблице символов имеют буквы A и Z, а также неизвестна длина алфавита. Это делает программу немного сложнее, но придает ей гибкость (достаточно поменять символы, код менять не надо).

Выражение ord('Z')-ord('A')+1 вычисляет длину диапазона. Например, порядковый номер Z равен 90, A = 65. Тогда 90 - 65 = 25, однако всего букв 26 (границы диапазона входят в него), поэтому следует прибавить единицу.

В массиве let первой букве алфавита соответствует индекс 1, второй - 2 и т. д. Если известно, какой порядковый номер имеет буква, то можно установить соответствие между индексами и номерами: arr[i,j]-ord('A')+1. Например, arr[i,j] равно 67, буква A имеет номер 65. 67 - 65 = 2. 2 + 1 = 3. Т.е. букве C будет соответствовать третий элемент массива let.

Программа на языке Паскаль:
const m = 25; n = 15;
var
arr: array[1..n,1..m] of byte;
let: array[1..30] of byte;
i,j: byte;
begin
randomize;
for i:=1 to n do begin
for j:=1 to m do begin
arr[i,j] := ord('A') + random(ord('Z')-ord('A')+1);
write(chr(arr[i,j]):2)
end;
writeln;
end;

for i:=1 to n do
for j:=1 to m do
let[arr[i,j]-ord('A')+1] := let[arr[i,j]-ord('A')+1] + 1;

for i:=1 to (ord('Z')-ord('A')+1) do begin
write(chr(i+ord('A')-1):3, ' - ', let[i]:2);
if i mod 5 = 0 then
writeln;
end;

readln;
end.
Соседние файлы в папке Циклы в массивах и строках