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;
Чего это такое? Попроще нельзя было сделать? Вот так, например:
program mas1;
type
mas = array [1..20] ofstring;
mass = array [1..20] of integer;
procedure check(const a: mas; var b: mas; var c: mass;
const n: integer; var p: integer);
var
i, T, start, finish: integer;
begin
p := 0;
for i := 1to n dobegin
start := pos('/*', a[i]);
finish := pos('*/', a[i]);
if start * finish > 0thenbeginif start > finish thenbegin
T := finish; finish := start; start := T
end;
writeln('debug: start = ', start, ' finish = ', finish);
inc(p);
b[p] := copy(a[i], start + 2, finish - start - 2);
c[p] := i;
end;
end;
end;
var
a, b: mas;
c: mass;
n,k,i,u:integer;
y,x:string;
begin
write('k = '); readln(k);
for i := 1to k do
readln(a[i]);
check(a, b, c, k, u);
for i := 1to u do
writeln(b[i], '':5, c[i]);
readln;
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;
ой спасибо заработало но мне еще надо чтобы она выводила символ (с наименьшим кодом) из получившихся строк и чтобы в исходных строках она удаляла пробелы в начале строки