Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Прог практика rjh.docx
Скачиваний:
4
Добавлен:
20.07.2019
Размер:
205.84 Кб
Скачать
  1. Найти подстроку в заданной строке (Егор)(Как мне кажется, найти подстроку в строке это значит найти индекс с которого начинается подстрока в строке)

Program Exam1;

uses crt;

var str:string; {Введённая с клавиатуры строка}

podstr:string; {Введённая с клавиатуры подстрока}

{Т.к нам необходимо вернуть значение позиции i в осн. про-ме, то пишем её с var}

i:byte;{первое появление подстроки в строке}

Procedure Obrab (var i1:byte;str1,podstr1:string);

{Pos Возвращает позицию первого появления подстроки postr в сттроке str}

begin

i1:=pos(podstr1, str1);

end;

begin {Начало основной программы}

clrscr; {Очистка экрана}

{Вводим данные: строку и подстроку}

write('Vvedite stroku ');{Выводит предложение: Vvedite stroku}

readln(str); {Читает введённую строку}

write('Vvedite podstroku ');{Выводит преложение: Vvedite podstroku}

readln(podstr);{Читает введённую подстроку}

Obrab(i,str,podstr); {Вызываем процедуру обработки и возвращаем индекс i}

writeln('Podstroka soderzhitsa v stroke nachinaya s ',i,'-oi/ei pozitsii');

readkey;

end.

  1. Сформировать двумерный массив из случайных чисел и вывести первый столбец. (Гена) (в задании может быть ещё вывести строку, и ещё в заданиях встречается «вывести вектор», вектор-это и есть одномерный массив, т.е строка или столбец)

Program Exam2;

uses crt;

const n=4; m=5; {n - кол-во строк, m - кол-во столбцов}

type Mas=array[1..n,1..m] of byte; {Объявляем тип двумерный массив с элементами типа байт (по условию массив из чисел)}

var i,j:byte; A:Mas;{переменная A-двумерный массив,i,j-счётчики цикла For}

Procedure Obrab (A1:Mas);{Проц-ра обр-ки массива,входной параметр A1-массив из случайных чисел}

begin

For i:=1 to n do {цикл делаем по i т.к i-номер строки и он изменяется} write(A1[i,1]:3); {Выводим элемент массива}

{Начало основной программы}

{Инициализация генератора случайных чисел (чтобы при каждом запуске выводились новые случайные числа)}

{j=1 т.к выводим первый столбец}

end;

begin clrscr;

Randomize;

{В двойном цикле заполняем массив случайными числами и выводим его}

{Элементу массива присваиваем случайное число}

{Выводим элемент массива}

For i:=1 to n do

begin

For j:=1 to m do

begin

A[i,j]:=random(20);

write(A[i,j]:3);

end;

writeln;

end;

writeln('Perviy stolbets: '); {Выводим надпись Perviy stolbets:}

Obrab(A); {Вызываем процедуру}

readkey;{Задержка экрана}

end.

  1. Дан текстовый файл, вывести слово true если в нём встречается буква «a» и вывести false, если не встречается.(Юра)

{f-файловая переменная типа text(наш файл);

с-символ который читаем при чтении файла(в текстовых файлах доступ последоваельный, нужно читать символы послед-но);

b-переменная логического типа;

k-счётчик, считает кол-во встречающихся в файле букв «а»}

Program Exam3;

uses crt;

var f:text; c:char; b:boolean; k:byte;

Procedure Obrab(var f1:text;c1:char;var k1:byte);

begin

{k1=0 – начальные установки цикла(пока буква «а» встречается 0 раз)

Eof(<файловая переменная>)-конец файла

Т.е пока не конец файла делаем следующее:

read(f,c1)-читаем символ c1 в файле f

if c1='a'then inc(k1) – и если этот символ c1 равен букве «а», тогда к счётчику прибавляем единицу.}

k1:=0;

while not eof(f) do

begin

read(f,c1);

if c1='a'then inc(k1);

end;

end;

begin clrscr; {Начало основной программы}

{Приглашение на ввод имени файла и чтение имени}

write('Imya faila ');

{assign связывает файловую переменную f с конкретным файлом nameoffile.txt}

reset(f) открывает только для чтения файл, связанный с файловой переменной f

Obrab(f,c,k) вызываем процедуру обработки файла,и присваиваем b результат выражения k 1. b возвращает выражение логического типа(True/False) т.е если кол-во букв «а» больше или равно 1, то true, если меньше - false

close(f) закрываем файл.

writeln(b) выодим b (True или False)

readln(nameoffile);

assign(f,nameoffile);

reset(f);

Obrab(f,c,k);

b:= k>=1;

close(f);

writeln(b);

readkey;

end.

Таже программа только с подпрограммой в виде функции:

Program Exam3;

uses crt;

var f:text; c:char; b,z:boolean; k:byte;nameoffile:string;

Function Obrab(var f1:text;c1:char;k1:byte;var b1:boolean):boolean;

begin

k1:=0;

while not eof(f1) do

begin

read(f1,c1);

if c1='a'then inc(k1);

end;

b1:=k1>=1;

Obrab:=b1;

end;

begin clrscr;

write('Imya faila ');

readln(nameoffile);

assign(f,nameoffile);

reset(f);

z:=Obrab(f,c,k,b);

writeln(z);

close(f);

readkey;

end.

4.Дан текстовый файл, вывести первый символ. Обработку файла произвести в функции. Имя файла ввести в гл. программе.(Влад)

Program Exam4;

{f-файловая переменная типа text(наш файл);

с-символ который читаем при чтении файла

{Тип возвращаемого результата}

uses crt;

var f:text; c,s:char; nameoffile:string;

Function Obrab(var f1:text;var c1:char):char;

begin

read(f,c1); {Читаем первый символ c1 в файле f}

Obrab:=c1; {Имени функции присваиваемрезультат (первый символ)}

end;

begin clrscr;

write('Vvedite imya faila ');{Приглашение на ввод имени файла}

{assign связывает файловую переменную f с конкретным файлом nameoffile.txt

reset(f) открывает только для чтения файл, связанный с файловой переменной f.

Вызываем функцию путём присвоения переменной, её имени s:=Obrab(f,c)(Возвращает первый символ)

close(f) закрываем файл

writeln('Pervii simvol faila: ',s)- выводим сообщение и первй символ}

readln(nameoffile);{Читаем имя файла}

assign(f,nameoffile);

reset(f);

s:=Obrab(f,c);

close(f);

writeln('Pervii simvol faila: ',s);

readkey;

end.

{f-файловая переменная типа text(наш файл);

с-символ который читаем при чтении файла

5. Дан текстовый файл, вывести последний символ файла.(Вадим Гришенков)

Program Exam5;

uses crt;

var f:text; c:char; str,nameoffile:string;i:byte;

{В цикле пока не конец файла (eof) читаем символ read(f1,c1), записываемего в строку str1[i1]:=c1 и наращиваем счётчик inc(i1)}

Замечание!!!:Счётчик i1(i)используем для фиксации кол-ва символов в тексте(строке), в цикле после занесения последнего символа файла в строку счётчик наращивается один лишний раз, поэтому при выводе последнего символа обращаемся к i-1му элементу строки

writeln('Poslednii simvol faila: ',str[i-1])

P.S.: Конник может придраться, если в условии задания было прописано, что выходным параметром явл-ся символ, а выводится элемент строки.

Procedure Obrab(var f1:text; c1:char;var str1:string; var i1:byte);

begin

i1:=1;

while not eof(f1) do

begin

read(f1,c1);

str1[i1]:=c1;

inc(i1);

end;

end;

begin clrscr; {Начало основной программы}

write('Vvedite imya faila ');{Приглашение на ввод имени файла}

{Связываем файловую переменную f с файлом nameoffile}

readln(nameoffile);{Читаем имя файла}

assign(f,nameoffile);

reset(f);{Открываем файл для чтения}

Obrab(f,c,str,i);{Вызов процедуры}

writeln('Poslednii simvol faila: ',str[i-1]);{Выводим элемент строки}

close(f);{Закрываем файл}

readkey;

end.