Вопрос № 102571: Здраствуйте уважаемые эксперты!Помогите пожалуйста мне снова! Напишите код программы,а то я уже все нервы истратил на нее(
Вообщем суть такая данны 3 функции:
а)Функция-Afteratnum(c1,c2:string;n1,n2:byte):string- возвращает хвост строки c1, в...
Вопрос № 102.571
Здраствуйте уважаемые эксперты!Помогите пожалуйста мне снова! Напишите код программы,а то я уже все нервы истратил на нее(
Вообщем суть такая данны 3 функции:
а)Функция-Afteratnum(c1,c2:string;n1,n2:byte):string- возвращает хвост строки c1, в которой осуществляется поиск с позиции n2 подстроки с2 с номером вхождения n1. Возвращается все символы строки с1 после указанного вхождения.
б)Функция-Addascii(c1:string;n1,n2:byte):string- возвращает строку, полученную из строки с1 путём прибавления величины n1 к ASCII коду символа этой строки с номером n2.
в)Функция-ATTOKEN(c1,c2:string;n:byte)string- поиск в строке с1 лексемы(слово) с номером n. Строка с2 представляет собой сцепку возможных разделителей лексем .,::!?()[]{}#&-+" и другие по усмотрению программиста.
Мне нужно написать эти 3 функции в одной программе, с оформлением!
Вот похожая программа и мне нужно чтоб так же была оформленно и решались мои функции!
Файл Mystring.pas
unit mystring;
interface
uses crt;
function lower(C:string):string;
function justleft(C1,C2:string):string;
function numline(ST:string):longint;
implementation
function lower;
var
st:string;
n,i,q:byte;
const a:set of char=['a'..'z',' '..'п'];
begin
N:=ord(c[0]);
st:=' ';
for i:=1 to n do begin
q:=2;
if c[i] in a then q:=1;
case q of
1:st:=st+c[i];
else ;
end;
end;
lower:=st;
writeln(st);
end;
function justleft;
var i:integer;
st,st1:string;
begin
clrscr;
st:=c1;
writeln(c1);
for i:=1 to length(c1)+1 do begin
c1:=st;
insert(c2,c1,i);
writeln(c1);
end;
end;
function numline;
var g:text;
i:integer;
begin
assign(g,st);
reset(g);
i:=0;
repeat
readln(g,st);
i:=i+1;
until eof(g);
close(g);
numline:=i;
writeln(i);
end;
begin
clrscr;
end.
Приложение:
Отправлен: 19.09.2007, 00:33
Вопрос задал: Serg (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 4)
Отвечает: Зенченко Константин Николаевич
Здравствуйте, Serg!
Смотрите приложение.
В модуль и меню программы добавлены Ваши функции.
По программе:
-перед каждым вызовом процедуры frame вызывается процедура clrscr; =>записана в начало процедуры frame;
-процедура frame вызывается ВСЕГДА с параметром true => лишнее вырезано в параметрах и в процедуре(различия заметны) ;
-в каждой процедуре вызываемой из меню, предланается нажать любую клавишу => вынесенно в отденьную процедуру WaitAnyKey;
-переработано полностью меню, теперь достаточно нажатия клавиши для попадания в нужный раздел, вырезанны из процедур меню readln; за отсутсвием надобности;
-с объявлеными фунциями не нужно обращатся как с процедурами.
можно ещё долго перечислять, различия увидете.
По модулю:
-конструкция: q:=2;
if c[i] in a then q:=1;
case q of
1:st:=st+c[i];
else ;
end;
заменена одним оператором условия;
-const a:set of char=['a'..'z',' '..'п']; в это множество не попадает только несколько букв(от "р" до "я"), но есть ВСЕ символы от 020h до 0AFh, втом числе и заглавные латинские и русские, название функции lower -наводит на мысль о строчных буквах;
ошибок море, различия будут заметны.
Название модуля у меня q102571а. Если нужно поменняйте.
ps:нет коментариев в программе, через неделю Вы забудете что делает эта программа(факт)
Удачи!
Приложение:
--------- И только наступив на грабли мы приобретаем драгоценный опыт!
Ответ отправил: Зенченко Константин Николаевич (статус: Специалист)
Ответ отправлен: 20.09.2007, 22:51 Оценка за ответ: 5