Обработка строк и символов

Пример 1. Вводятся строка и символ. Определить количество заданных символов во введенной строке.

Program primer;

Var st: string; c: char;

k, n, i: integer;

begin

write(‘stroka=’); readln(st);

write(‘simvol=’); readln(c);

n:= length(st);

k:=0;

for i:=1 to n do

if st[i]=c tnen inc(k);

writeln (‘k=’, k);

readln;

end.

1.Определить количество "2" и "3" во введенной строке.

2.Определить, имеются ли во введенной строке следующие подряд две "4".

Резерв 1. Дана последовательность слов из латинских букв. Соседние слова отделены друг от друга пробелом. Определить количество слов, которые начинаются с буквы a.

Пример 2. Заменить во введенной строке все цифры символом *.

Program primer;

Var st: string;

n, i: integer;

begin

write(‘stroka=’); readln(st);

n:= length(st);

for i:=1 to n do

if (st[i]>=’0’) and (st[i]<=’9’) then st[i]:=’*’;

writeln (‘st=’, st);

readln;

end.

3.Заменить во введенной строке попарно символы: ‘a’ – ‘x’ , ‘b’ – ‘y’, ‘c’ – ‘z’.

4.Введена строка маленьких латинских букв. Преобразовать ее, превратив маленькие буквы в большие.

Резерв 1. В I в н.э. Ю. Цезарь во время войны с галлами, переписываясь со своими друзьями в Риме, заменял в сообщении первую букву латинского алфавита (A) на четвертую (D), вторую (B) – на пятую (E), наконец, последнюю – на третью:

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

D E F G H I J K L M N O P Q R S T U V W X Y Z A B C

Напишите программу – шифратор, заменяющую введенный текст кодом (если встречаются цифры или другие символы (точка, запятая и т.д.) оставить их без изменения).

Пример 3. Удалить из введенной строки все символы ‘3’.

Program primer; Var st1, st: string; i: integer; begin write(‘stroka=’); readln(st); for i:=1 to length(st) do if st[i]<>’3’ then st1:=st1+st[i]; writeln (‘st1=’, st1); readln; end.   Program primer; Var st: string; i: integer; begin write(‘stroka=’); readln(st); i:=1; repeat if st[i]=’3’ then delete(st, i, 1) else i:=i+1; until i=length(st); writeln (‘st=’, st); readln; end.  

5.Преобразовать введенную строку так, чтобы из нее были удалены буквы с ASCII - кодами от 70 до 75.

6.Напечатать текст удалив из него все лишние пробелы, т.е. из нескольких подряд идущих пробелов оставить только один.

Пример 4. Введенную строку преобразовать так, чтобы после каждого слова следовала точка.

Program primer;

Var st: string;

i: integer;

begin

write(‘stroka=’); readln(st);

i:=1;

repeat

if (st[i]<>’ ’) and (st[i+1]=’ ’) then begin insert(‘.’, st, i+1); i:=i+2; end else i:=i+1;

until i=length(st);

writeln (‘st=’, st);

readln;

end.

7.Введенную строку букв и цифр преобразовать так, чтобы после каждой цифры следовал пробел.

8.Напечатать заданный непустой текст, удвоив знаки ‘+’ и ‘-‘.

Резерв 1. В заданном тексте слова перечислены через запятую. Распечатать слова текста в столбик.

Пример 5. Найти сумму цифр введенной строки, содержащей цифры и буквы.

Program primer;

Var st: string;

i, x, k, s: integer;

begin

write(‘stroka=’); readln(st);

s:=0;

for i:=1 to length(st) do

begin

val(st[i],x,k);

if k=0 then s:=s+k;

end;

write(‘s=’,s);

readln;

end.

9.Найти произведение четных цифр введенной строки, содержащей цифры и буквы.

10.Удалить из введенной строки все цифры, кратные 3.

Резерв 1. Преобразовать введенную строку так, чтобы сначала были расположены цифры, потом остальные символы.

Графика в Pascal

Отобразить точку красного цвета в центре экрана.

Отобразить мигающую точку в центре экрана.

  1. Изобразить на экране звездное небо.
  2. Изобразить на экране множество точек, напоминающих созвездие Большой Медведицы, а также нарисовать Луну.
  3. Изобразить на экране концентрические окружности.
  4. Нарисовать на экране домик с трубой.
  5. Изобразить на экране пять олимпийских колец.
  6. Составить программу, по которой окружность движется по экрану.
  7. Изобразить на экране монитора светофор (с учетом цвета).
  8. Вывести на экран изображение шахматной доски.
  9. Изобразить на экране улыбающуюся рожицу.

Записи

Пример 1. Создайте пользовательский тип данных – запись, описывающий данные человека (Фамилия, Имя, Отчество), опишите в программе массив таких записей, состоящий из пяти элементов. В цикле, при помощи оператора read заполните массив данными ваших товарищей.

Program primer;Type Chelovek=Record Fam: String[15]; Ima: String[15]; Otch: String[15]; End;Var Klass:Array[1..5] Of Chelovek; k:Integer; Begin For k:=1 To 5 Do With Klass[k] Do Begin Writeln('Введите фамилию’); Readln(Fam); Writeln('Введите имя’); Readln(Ima); Writeln('Введите отчество’); Readln(Otch); End; Readln;End.
  1. Создайте пользовательский тип данных – запись, описывающий адрес (Индекс, Страна, Город, Улица, Номер дома, Номер квартиры), опишите в программе 3 экземпляров такой записи. При помощи оператора присоединения, заполните поля записи адресами.
  2. Известны фамилии и оценки (в баллах) по пяти предметам каждого из двадцати пяти учеников класса. Требуется вычислить среднюю оценку каждого из учеников и выбрать человека, имеющего максимальный средний балл.

Работа с файлами

Пример 1. Составить пргорамму, создающую на жестком диске текстовый файл, добавить в созданный файл данные (ф.и.о., номер школы, класс).

Program primer;

Var f: text;

x, y: real;

begin

assign(f,'prim.txt');

rewrite(f);

write(f,‘Иванов Иван Иванович, Школа № 1, 1 «а» класс’);

Close(f);

end.

Пример 2. а) Создать файл, содержащий значения функции y= x2 + x (0<= x<= 2, h= 0,2).
б) Вывести на экран данные в виде таблицы.

Program primer;

Var f: file of real;

x, y: real;

begin

assign(f,'prim.txt');

rewrite(f);

x:=0;

repeat

y:=sqr(x)+x;

write(f,y, х);

x:=x+0.2;

until x>2;

Close(f);

reset(f);

while not eof(f) do begin

read(f,y,x); writeln('x=',x:4:2,' y=',y:8:4);

end;

end.

  1. а) Создать файл, содержащий значения функции y= 2x + 5 (0<= x<= 10, h= 0,5).
    б) Вывести на экран данные в виде таблицы.
  2. а) Создать файл, содержащий значения функции y= 2x2 + 3x (-2<= x<= 2, h= 0,2).
    б) Вывести на экран данные в виде таблицы.

Пример 3. а) Создать файл, содержащий данные:

· ФИО работника;

· склад;

· стаж работы.

б) Просмотреть записи. Определить фамилию работника, имеющего самый большой стаж работы.

Program pr;

Type rabotnik=record

Fio: string [20];

sklad: char;

stag: integer;

End;

Var

X: rabotnik; f: file of rabotnik;

N, i, max: integer;

Name: string [20];

Begin

Assign(f,’pr.txt’);

Rewrite(f);

Write(‘n=’); Readln (n);

For i:=1 to n do

Begin

Write(‘fio:’); Readln(x.fio);

Write(‘sklad:’); Readln(x. sklad);

Write(‘stag:’); Readln(x. stag);

Write(f,x);

End;

Close(f);

{******************}// можно сделать две разные программы

Assign(f,’pr.txt’);

Rewrite(f);

Max:=0;

While Not EOF(f) do

Begin

Readln(f,x);

Writeln(x.fio: 20, x. sklad:3, x. stag:5);

If x. stag >max then

Begin

Max:=x. stag;

Name:=x.fio;

End;

End;

Writeln(‘max stag -‘, max, name);

Close(f);

Readln;

End.

  1. а) Создать файл, содержащий данные:

· ФИО работника;

· пол;

· возраст.

б) Просмотреть записи. Определить средний возраст мужчин.

  1. а) Создать файл, содержащий данные;

· ФИО ученика;

· класс;

· оценка.

б) Просмотреть записи. Определить среднюю оценку в 9-м классе.

Наши рекомендации