Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Otvety_2012-09-18.pdf
Скачиваний:
49
Добавлен:
19.03.2016
Размер:
812.31 Кб
Скачать

Глава 18

Глава 18

A) Напишите программу для подсчета букв «А» во введенной пользователем строке.

N:=0;

for i:=1 to Length(S) do if S[i]=’A’ then N:=N+1;

Б) Напишите программу, меняющую символы «А» строки на символы «Б». Подсказка: присвоение значения некоторому символу строки делается оператором вида

S[i]:=…

for i:=1 to Length(S) do if S[i]=’A’ then S[i]:=’B’;

Г) Записи телефонных номеров обычно содержат дополнительные символы (скобки, черточки, пробелы), - чтобы удобней запоминались. Например: 8 (123) 45-67-89. Предположим, что пользователь их так и вводит. Пусть ваша программа преобразит строку с номером, удалив из нее все символы, кроме цифр. Например, после ввода указанного выше номера она должна напечатать: 8123456789.

var i: integer; S, R: string; c: char;

begin

S:= '(8)123-45-67'; R:= '';

for i:=1 to Length(S) do begin c:= S[i];

if (c='0')or(c='1')or(c='2')or(c='3')or(c='4')or(c='5') or(c='6')or(c='7')or(c='8')or(c='9')

then R:= R+c;

end; Writeln(R); Readln;

end.

Д) Пусть ваша программа напечатает введенную пользователем строку вразрядку, добавляя пробел после каждого символа, например: 'Pascal' à 'P a s c a l'.

var i: integer; S, R: string;

begin

Readln(S); R:='';

for i:=1 to Length(S) do R:=R+S[i]+' '; Writeln(R);

Readln; end.

25

Глава 19

Глава 19

А) Напишите еще одну версию процедуры Pause, выводящую сообщение либо на русском, либо на английском языке. Параметр этой процедуры должен быть булевым и работать она должна так.

Pause(true);

{

печатается

«Нажмите Enter…» }

Pause(false);

{

печатается

«Press Enter…» }

 

 

 

 

procedure Pause(lang: boolean); begin

if lang

then Writeln('Нажмите Enter') else Writeln('Press Enter'); Readln;

end;

begin

Pause(true); Pause(false)

end.

Б) Напишите и испытайте процедуру (назовем её Line – «линия»), печатающую строку заданной длины, составленную из звездочек, например.

Line(3);

{

печатает

«***» }

Line(7);

{

печатает

«*******» }

 

 

 

 

procedure Line(len: integer); var i: integer;

begin

for i:=1 to len do Write('*'); Writeln

end;

begin

Line(3); Line(7); Readln;

end.

26

Глава 19

В) Напишите процедуру для очистки экрана, она может пригодиться вам в будущем. Подсказка: можно напечатать несколько десятков пустых строк (не менее 25, - зависит от настройки консольного окна).

const CScreen = 25; { количество строк в консольном окне }

procedure ClearScreen; var i: integer;

begin

for i:= 1 to CScreen do Writeln; end;

begin

Writeln('************'); Readln; ClearScreen; Readln;

end.

Г) Напишите процедуру, принимающую два числа (два параметра), и печатающую два числа: их сумму, и их разность.

procedure Arithm (a, b : integer); begin

Writeln('A+B= ',a+b,' A-B= ',a-b); end;

begin

Arithm(25, 15); Arithm(10, 20); Readln;

end.

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

начиная с первых цифр, например 112-345-1;

начиная с последних цифр, например 1-123-451.

var S, T : string; i, n: integer;

begin

Write('Номер: '); Readln(S); T:='';

for i:= 1 to Length(S) do begin T:=T+S[i];

if (i mod 3 = 0) and (i<Length(S)) then T:=T+'-'; end;

Writeln(T); T:=''; n:=1;

for i:= Length(S) downto 1 do begin

T:=S[i]+T;

if (n mod 3 = 0) and (i>1) then T:='-'+T; n:= n+1;

end; Writeln(T);

27

Глава 19

Readln; end.

Е) Почтальон разносит газеты по улице, состоящей из N домов. Четные и нечетные номера расположены по разные стороны улицы. В здравом уме почтальон не рискует лишний раз переходить её. Ваша программа должна напечатать последовательность номеров, по которым будут разнесена почта, когда почтальон начинает работу:

с первого дома;

со второго дома;

с N-го (последнего) дома.

var

i, k, N: integer; begin

Write('Количество домов: '); Readln(N);

Writeln(1-го:'); for i:=1 to N do

if i mod 2 <>0 then Write(i, ' '); for i:=N downto 2 do

if i mod 2 =0 then Write(i, ' '); Writeln;

Writeln('Со 2-го:'); for i:=2 to N do

if i mod 2 =0 then Write(i, ' '); for i:=N downto 1 do

if i mod 2 <>0 then Write(i, ' '); Writeln;

Writeln('С последнего:');

k:= N mod 2; { k=0, если N четное } for i:=N downto 1 do

if i mod 2 = k then Write(i, ' '); for i:=1 to N do

if i mod 2 <> k then Write(i, ' '); Writeln;

Readln; end.

28

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]