Практика программирования (Бейсик, Си, Паскаль)


Задачи, советы и ответы


Задание 3.01. Формирование таблицы ASCII

Сформировать на экране таблицу ASCII таким образом, чтобы в ней были представлены все отображаемые символы 866-й кодовой страницы и их числовые коды. Один из возможных вариантов заполнения экрана такой таблицей представлен на рис. 3.1.

Совет 1 (общий)

Приведенная выше таблица содержит 21 кодовую строку, и смещение начальных кодов в смежных колонках равно 21. Поэтому внешний цикл повторяется 21 раз, начинаясь с первого отображаемого кода (32 — код пробела). Так как заголовок отделен от таблицы одной пустой строкой, вывод начинается с 3-й строки (3 = 32 - 29). А дальше остается только перебирать все коды отображаемого диапазона (от 32 до 255) и выводить пары "символ-код" по фиксированному формату — одна позиция под символ, разделяющий пробел, три позиции — под числовой код и пара пробелов между колонками.

Рис. 3.1. Таблица ASCII

Программа 3_01.bas

RЕМ Вывод таблицы ASCII

CLS : PRINT TAB(31); "Таблица ASCII"

FOR I=32 TO 52: LOCATE I-29,1

FOR J=I TO 255 STEP 21

PRINT USING "! ### ";CHR$(J);J;

NEXT J

NEXT I

Программа 3_01.с

/* Вывод таблицы ASCII */

#include <stdio.h>

main() {

int i,j;

clrscr ();

gotoxy(31,1);

printf("Таблица ASCII");

for (i=32; i<=52; i++) {

gotoxy(1,i —2 9) ;

for (j=i; j<=255; j+=21)

printf("%c %3d ",j,j);

} getch();

}

Программа 3_01.pas

program ASCII; {Вывод таблицы ASCII} uses Crt; var

i,j:word; begin clrscr;

gotoxy(31,1);

write('Таблица ASCII');

for i:=32 to 52 do

begin

gotoxy(l,i-29);

j:=i;

repeat

write(chr(j) :l,j:4, ' ');

j:=j+21;

until j>255;

end;

readln;

end.

Задание 3.02. Преобразование строк к верхнему регистру

Составить подпрограмму (функцию) up (s), которая заменяет в строке s коды малых букв кодами аналогичных больших букв с учетом их расположения в таблице ASCII.

Совет 1 (общий)

Заглянув в таблицу ASCII, нетрудно убедиться в том, что замене подлежат коды символов, попадающие в следующие интервалы:




- Начало -  - Назад -  - Вперед -