Найти подстроку в заданной строке (Егор)(Как мне кажется, найти подстроку в строке это значит найти индекс с которого начинается подстрока в строке)
ProgramExam1;
usescrt;
varstr:string; {Введённая с клавиатуры строка}
podstr:string; {Введённая с клавиатуры подстрока}
{Т.к нам необходимо вернуть значение позиции i в осн. про-ме, то пишем её с var} |
ProcedureObrab (vari1:byte;str1,podstr1:string);
{PosВозвращает позицию первого появления подстроки postr в сттроке str} |
i1:=pos(podstr1, str1);
end;
begin{Начало основной программы}
clrscr; {Очисткаэкрана}
{Вводим данные: строку и подстроку}
write('Vvedite stroku ');{Выводитпредложение: Vvedite stroku}
readln(str); {Читает введённую строку}
write('Vveditepodstroku ');{Выводит преложение: Vveditepodstroku}
readln(podstr);{Читает введённую подстроку}
Obrab(i,str,podstr);{Вызываем процедуру обработки и возвращаем индекс i}
writeln('Podstroka soderzhitsa v stroke nachinaya s ',i,'-oi/ei pozitsii');
readkey;
end.
Сформировать двумерный массив из случайных чисел и вывести первый столбец.(Гена) (в задании может быть ещё вывести строку, и ещё в заданиях встречается «вывести вектор», вектор-это и есть одномерный массив, т.е строка или столбец)
ProgramExam2;
usescrt;
constn=4; m=5; {n - кол-во строк, m - кол-во столбцов}
typeMas=array[1..n,1..m] ofbyte; {Объявляем тип двумерный массив с элементами типа байт (по условию массив из чисел)}
vari,j:byte; A:Mas;{переменная A-двумерный массив,i,j-счётчики цикла For}
ProcedureObrab (A1:Mas);{Проц-ра обр-ки массива,входной параметр A1-массив из случайных чисел}
begin
Fori:=1 tondo{цикл делаем по i т.к i-номер строки и он изменяется}write(A1[i,1]:3);{Выводим элемент массива}
{Начало основной программы} {Инициализация генератора случайных чисел (чтобы при каждом запуске выводились новые случайные числа)} |
{j=1 т.к выводим первый столбец} |
begin clrscr;
Randomize;
{В двойном цикле заполняем массив случайными числами и выводим его} {Элементу массива присваиваем случайное число} {Выводим элемент массива} |
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.
Дан текстовый файл, вывести слово TRUE если в нём встречается буква «a» и вывести FALSE, если не встречается.(Юра)
{f-файловая переменная типа text(наш файл); с-символ который читаем при чтении файла(в текстовых файлах доступ последоваельный, нужно читать символы послед-но); b-переменная логического типа; k-счётчик, считает кол-во встречающихся в файле букв «а»} |
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 ifc1='a'theninc(k1) – и если этот символ c1 равен букве «а», тогда к счётчику прибавляем единицу.} |
while not eof(f) do
begin
read(f,c1);
if c1='a'then inc(k1);
end;
end;
beginclrscr;{Начало основной программы}
{Приглашение на ввод имени файла и чтение имени} |
{assign связывает файловую переменную f с конкретным файлом nameoffile.txt}
reset(f) открывает только для чтения файл, связанный с файловой переменной f
Obrab(f,c,k) вызываем процедуру обработки файла,и присваиваем b результат выражения k ![]() |
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(наш файл); с-символ который читаем при чтении файла {Тип возвращаемого результата} |
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;
beginclrscr;
write('Vvediteimyafaila ');{Приглашениенавводименифайла}
{assign связывает файловую переменную f с конкретным файлом nameoffile.txt reset(f) открывает только для чтения файл, связанный с файловой переменной f. Вызываем функцию путём присвоения переменной, её имениs:=Obrab(f,c)(Возвращает первый символ) close(f) закрываемфайл writeln('Perviisimvolfaila: ',s)- выводим сообщение и первй символ} |
assign(f,nameoffile);
reset(f);
s:=Obrab(f,c);
close(f);
writeln('Pervii simvol faila: ',s);
readkey;
end.
{f-файловая переменная типа text(наш файл); с-символ который читаем при чтении файла |
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.: Конник может придраться, если в условии задания было прописано, что выходным параметром явл-ся символ, а выводится элемент строки. |
begin
i1:=1;
while not eof(f1) do
begin
read(f1,c1);
str1[i1]:=c1;
inc(i1);
end;
end;
beginclrscr;{Началоосновнойпрограммы}
write('Vvediteimyafaila ');{Приглашениенавводименифайла}
{Связываем файловую переменную f с файлом nameoffile} |
assign(f,nameoffile);
reset(f);{Открываемфайлдлячтения}
Obrab(f,c,str,i);{Вызовпроцедуры}
writeln('Posledniisimvolfaila: ',str[i-1]);{Выводимэлементстроки}
close(f);{Закрываемфайл}
readkey;
end.