1. Заголовок темы должен быть информативным. В противном случае тема удаляется ... 2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения. 3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали! 4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора). 5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM! 6. Одна тема - один вопрос (задача) 7.Проверяйте программы перед тем, как разместить их на форуме!!! 8.Спрашивайте и отвечайте четко и по существу!!!
дано k-литерных строк (эти строки сохраняются в массиве строк a ). Каждая строка содержит латинские и русские буквы, цифры и все возможные делители требуется:
1 надо выделить из каждой строки (сформировать еще один массив строк b и массив С из целых чисел, в котором будут храниться номера исходных строк , из которых выделяются подстроки) и напечатать подстроки (оформить процедурой)-расположенные между /* и */
если че не понятно в условии пишите прямо в форуме
вот вроде че то сделал но не доконца можете объяснить в чем ошибка
Код
program mas1;
type mas= array [1..20] of string; mass= array [1..20] of integer; procedure one(var a,b:mas;var c:mass;var y,x:string; k:integer;var u:integer); var i,j,t,d,e:integer; begin t:=0; d:=0; u:=0; x:=''; y:=''; for i:=1 to k do begin x:=a[i]; begin begin T:=pos('*/',x); d:=pos('/*',x); if (t>d) then begin for e:=d+2 to t-1 do begin y:=y+a[i][e]; {c[i]:=c[i]+s[i][e];} delete(x,d,1); end; end; end; begin if y<>'' then begin inc(u); b[u]:=y; y:=''; c[u]:=i; delete(x,d,4); t:=0; d:=0;
for e:=1 to d+1 do for p:=t-1 to length(x) do x:=x+x[e]+x[p] end; end; end; end; end;
var a,b:mas; c:mass; n,k,i,u:integer; y,x:string; begin writeln('vvedite k'); readln(k); for i:=1 to k do begin readln(a[i]); end; one(a,b,c,y,x,k,u); for i:=1 to u do begin writeln(b[i],' ',c[i]); end;
вот еще одна правдо мало отличающаяся от той только в ней я не пойму после прохода цикла он берет на 2 цикле строку из первого цикла получается каша ничего не могу поделать объясните че сдесь не так
Код
program mas1;
type mas= array [1..20] of string; mass= array [1..20] of integer; procedure one(var a,b:mas;var c:mass;var y,x:string; k:integer;var u:integer); var i,j,t,d,e,q,w,z:integer; begin t:=0; d:=0; u:=0; x:=''; y:=''; for i:=1 to k do begin x:=a[i]; for j:=1 to length(x) do begin begin T:=pos('*/',x); d:=pos('/*',x); if (t>d) then begin for e:=d+2 to t-1 do begin y:=y+a[i][e]; {c[i]:=c[i]+s[i][e];} delete(x,d,1); end; end; end; begin if y<>'' then begin inc(u); b[u]:=y; y:=''; c[u]:=i; delete(x,d,4); t:=0; d:=0; {z:=length(x); for q:=1 to d-1 do for w:=t to length(x) do begin x:=x+x[q]+x[w]; end; delete(x,1,z);} end; end; end; end; end;
var a,b:mas; c:mass; n,k,i,u:integer; y,x:string; begin writeln('vvedite k'); readln(k); for i:=1 to k do begin readln(a[i]); end; one(a,b,c,y,x,k,u); for i:=1 to u do begin writeln(b[i],' ',c[i]); end;
Вот мой вариант, офрмил не очень красиво правда .. При желанииможно убрать циклы из основной части ..
uses crt; type TType = string; TArray = array [1..100] of TType;
procedure Input(var arr : TArray; n : byte); var i : byte; begin for i := 1 to n do begin write('s[',i,']='); readln(arr[i]); end; writeln; end;
procedure CheckStr(s : TType; var arr : TArray; size : byte; var i : byte); const open = '/*'; close = '*/'; begin while (length(s) > 0) and (pos(open,s) <> 0) do begin delete(s,1,pos(open,s)+1); if (pos(close,s) < pos(open,s)) or ((pos(close,s) <> 0) and (pos(open,s) = 0)) then begin inc(i); arr[i] := copy(s,1,pos(close,s)-1); delete(s,1,pos(close,s)+1); end; end; end;
var _in,_out : TArray; size,size1,j : byte; begin
clrscr;
write('n = '); readln(size);
Input(_in, size);
size1 := 0;
for j := 1 to size do CheckStr(_in[j], _out, size, size1);
for j := 1 to size1 do writeln(_out[j]);
readln;
end.
--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
ой спасибо заработало но мне еще надо чтобы она выводила символ (с наименьшим кодом) из получившихся строк и чтобы в исходных строках она удаляла пробелы в начале строки
вот прога она должна выводить все тоже самое что и до этого но и удалять пробелы в исходном массиве ,чего она не делает можете объяснить почему
uses crt; type TType = string; TArray = array [1..100] of TType; mass=array [1..20] of integer;
procedure Input(var arr : TArray; n : byte); var i : byte; begin for i := 1 to n do begin write('s[',i,']='); readln(arr[i]); end; writeln; end;
procedure CheckStr(s : TType; var arr : TArray;var rew:mass; size : byte; var i : byte;var j:integer); const open = '/*'; close = '*/'; var k:integer; e:integer; q:integer; begin while (length(s) > 0) and (pos(open,s) <> 0) do begin delete(s,1,pos(open,s)+1); if (pos(close,s) < pos(open,s)) or ((pos(close,s) <> 0) and (pos(open,s) = 0)) then begin inc(i); arr[i] := copy(s,1,pos(close,s)-1); rew[i]:=j; delete(s,1,pos(close,s)+1);
end; end; end;
procedure tri(var s:tarray;var n:byte); var j,q,e,k:integer; x:string; begin k:=0; e:=0; for q:=1 to n do begin x:=s[q]; begin for j:=1 to length(s[q]) do begin if copy(x,j,1)=' ' then begin k:=k+1; end; end; for e:=k to length(s[q]) do begin write(x[e]); end; end; end; end; var _in,_out : TArray; rew:mass; size,size1,i,n : byte; j:integer; begin clrscr; write('n = '); readln(size); Input(_in, size); begin tri(_in,size); end; size1 := 0; for j := 1 to size do CheckStr(_in[j], _out,rew, size, size1,j); for j := 1 to size1 do begin writeln(_out[j],' ',rew[j]); end; readln; end.