Народ помогите нужно срочно составить блок схему для следующей программы:
Программный код файла Р.РAS
program P;
uses T,crt;
var
s,b:string;
m,r:integer;
begin
ClrScr;
writeln('Введите строку');
readln(s);
writeln('');
writeln('Какое действие будет выполняться со строкой');
writeln('1-количество лексем, со списком разделением');
writeln('2-выбор лексемы');
writeln('3-заменяем выбраную лексему');
writeln('4-проверяем подстраку в строке');
writeln('5-преобразуем строчку из строчной в пропесные(и наоборот)');
readln(m);
if m=1 then begin
r:=kol(s);
writeln('Количество лексем=',r); end;
if m=2 then
writeln(vibor(s));
if m=3 then
writeln(zamena(s));
if m=4 then
writeln(proverka(s));
if m=5 then
writeln(preobraz(s));
readln;
end.
unit T;
interface
uses crt;
function kol(s:string):string;
function vibor(s:string):string;
function zamena(s:string):string;
function proverka(s:string):integer;
function preobraz(s:string):string;
implementation
function kol(s:string):string;
var
l,n,i,y,r,m:integer;
a:array[1..30] of string[1];
begin
write('Сколько будет разделений:');
readln(n);
for i:=1 to n do begin
write(i,' Разделение:');
readln(a[i]);
end;
r:=0;
m:=1;
for i:=1 to n do
if s[1]=a[i] then m:=0;
if m=1 then r:=1;
for i:=2 to Length(s) do begin
if m=1 then begin
for y:=1 to n do
if s[i]=a[y] then m:=0; end else begin
if m=0 then begin
l:=0;
for y:=1 to n do
if s[i]=a[y] then l:=1;
if l=0 then begin r:=r+1; m:=1; end;
end;end;
end;
writeln('Количество лексем:',r);
end;
function vibor(s:string):string;
var
r,m,l,i,n:integer;
c:string;
begin
write('Какую лексему вы хотите выбрать? -');
readln(n);
r:=0;
m:=1;
c:='';
if s[1]=' ' then m:=0;
if m=1 then r:=1;
for i:=2 to Length(s) do begin
if m=1 then begin
if s[i]=' ' then m:=0; end;
if r=n then c:=c+s[i];
if m=0 then begin
l:=0;
if s[i]=' ' then l:=1;
if l=0 then begin r:=r+1; m:=1;
if r=n then c:=c+s[i]; end;
end;
end;
Delete(c,Length©,1);
vibor:=c;
end;
function zamena(s:string):string;
var
r,m,l,i,n:integer;
c:string;
begin
write('Какую лексему вы хотите заменить? -');
readln(n);
r:=0;
m:=1;
c:='';
if s[1]=' ' then m:=0;
if m=1 then r:=1;
if (r=n)and(m=1) then begin s[1]:=readkey; write(s[i]); end;
for i:=2 to Length(s) do begin
if m=1 then begin
if s[i]=' ' then m:=0; end;
if (r=n)and(m=1) then begin s[i]:=readkey; write(s[i]); end;
if m=0 then begin
l:=0;
if s[i]=' ' then l:=1;
if l=0 then begin r:=r+1; m:=1;
if r=n then s[i]:=readkey; write(s[i]); end;
end;
end;
writeln('');
zamena:=s;
end;
function proverka(s:string):integer;
var
i:integer;
s1:string;
begin
Write('Какую подстраку проверяем-');
readln(s1);
proverka:=pos(s1,s);
end;
function preobraz(s:string):string;
var
i:integer;
begin
for i:=1 to Length(s) do begin
if (ORD(s[i])<91)and(ORD(s[i])>64) then
s[i]:=chr(ord(s[i])+32) else
if (ORD(s[i])>96)and(ORD(s[i])<123) then
s[i]:=chr(ord(s[i])-32) else
if (ORD(s[i])<144)and(ORD(s[i])>127) then
s[i]:=chr(ord(s[i])+32) else
if (ORD(s[i])<160)and(ORD(s[i])>143) then
s[i]:=chr(ord(s[i])+80) else
if (ORD(s[i])<176)and(ORD(s[i])>159) then
s[i]:=chr(ord(s[i])-32) else
if (ORD(s[i])<240)and(ORD(s[i])>223) then
s[i]:=chr(ord(s[i])-80);
end;
preobraz:=s;
end;
end.
Кибер Чёрт, ты бы программу-то оптимизировал, глядишь она раза в 3 меньше станет. Может быть, удобнее будет блок-схему то чертить? Ну, например:
function preobraz(s:string):string;Да и с другими процедурами/функциями аналогично.
var i:integer;
begin
for i:=1 to Length(s) do
if s[i] in [#65 .. #90, #128 .. #143] then s[i]:=chr(ord(s[i])+32) else
if s[i] in [#97 .. #122, #160 .. #175] then s[i]:=chr(ord(s[i])-32) else
if s[i] in [#144 .. #159] then s[i]:=chr(ord(s[i])+80) else
if s[i] in [#224 .. #239] then s[i]:=chr(ord(s[i])-80);
preobraz:=s;
end;
Мне не нужно оптимизировать, мне нужно составить блок схему именно к этой программе
ну скачай программку для рисования блок-схем....
Хм…
Она что из программного кода сома блок схемы делает или она проста прямоугольники с ромбами рисует???
Если первое то кинь пожалуйста линк где её скачать или вышли мне её на почту.
Заранее спасибо.
поищи по форуму. обсуждалось, и ссылки были.
http://forum.pascal.net.ru/index.php?showtopic=4270&pid=71433&st=5entry71433
A := 2 * B;
A := B;Какой из них ТЕБЕ легче анализировать? Так почему же ты думаешь, что КОМУ-ТО (или чему-то) легче анализировать другой фрагмент? Что тебе надо делать, я уже сказал... Вся твоя программа должна занимать по-хорошему 30 строк... Ну, 35 может быть... А у тебя...
B := B + B;
A := A + B div 2;
Помогите пожалуйста из T.TРU блок-схему сделать.
T.TРU это откомпилированный T.PAS. Для него и рисуй блок-схему