Всем привет. В программе в завиcимости от х (1..16) и у (1..3) которые выбираются n раз (в произвольном порядке например х=2,4,1,5,9,12,3,2,2,...) нужно записать последовательно текстовые строки в массив buf. Подскажите пожалуйста как можно записать текст в массив buf так чтобы последующие записи не удаляли предыдущие. Думаю что надо ввести нумерацию строк которые записываются, чтобы потом просто увеличивать номер строки массива на 1, но сделать это не получается, то не те строки выводятся, то удаляются те которые были введены ранее и заполняются последующими. Заранее спасибо.
[syntax='Pascal']uses crt;
var i,j,n,k,x,y:word;
f,ff:text;
buf:array[1..100] of string
begin
readln(n);
for i:=1 to n do
begin
read(x,y);
case х of
1: begin
k:=0;
Assign(f,'\1.txt');
reset(f);
repeat
k:=k+1;
readln(f,buf);
until k=1; {запись к-й строки файла №1 в массив buf}
close(f);
if y=1 then
begin
assign(ff,'\2.txt');
reset(ff);k:=0;
repeat
k:=k+1; readln(ff,buf); until k=1;{запись к-й(1й) строки файла №2 в масив buf}
close(ff);end;
if y=2 then
begin
assign(ff,'\2.txt');
reset(ff);k:=0;
repeat
k:=k+1; readln(ff,buf[i+1]); until k=1;k:=0;
while k=2 do k:=k+1; readln(ff,buf);
close(ff);end;
if y=3 then
begin
assign(ff,'\2.txt');
reset(ff);k:=0;
repeat
k:=k+1; readln(ff,buf[i+1]); until k=1; k:=0;
while k=2 do
k:=k+1; readln(ff,buf[i+2]); k:=0;
while k=3 do
k:=k+1; readln(ff,buf[i+3]); {запись 1,2,3 строк файла №2 в массив buf}
close(ff); end;
end;
2: begin
k:=0;
Assign(f,'D:\1.txt');
reset(f);
repeat
k:=k+1;
readln(f,buf);
until k=2;
close(f);
if y=1 then
begin
assign(ff,'\2.txt');
reset(ff);k:=0;
repeat
k:=k+1; readln(ff,buf); until k=4;
close(ff);end;
if y=2 then
begin
assign(ff,'\2.txt');
reset(ff);k:=0;
repeat
k:=k+1; readln(ff,buf); until k=4;k:=0;
while k=5 do k:=k+1; readln(ff,buf[і+2]);
close(ff);end;
end;..........
[/syntax]
Текстовый массив string
Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду
Если я правильно понял, вам из некоторого файла нужно вытащить некоторые строки произвольной нумерации (например 1-ю, 7-ю и 4-ю). Правильно?
Да совершенно верно. Проблема в том как их записать последовательно в массив buf
-
- Сообщения: 270
- Зарегистрирован: 09 янв 2010, 04:14
- Контактная информация:
Если ето Delphi, то строки там динамические. Есть функция для конкатенации строк, но рекомендуют пользоваться сложением:
string_1 := string_1 + string_2;
Ой чуть не забыл в паскале функция называеться помоему Concat
string_1 := string_1 + string_2;
Ой чуть не забыл в паскале функция называеться помоему Concat
count:=1;
for i:=1 to y do
begin
readln(x);
reset(f);
for j:=1 to x do readln(f,s);
buf[count]:=s;
inc(count);
end;
Собственно, все.
for i:=1 to y do
begin
readln(x);
reset(f);
for j:=1 to x do readln(f,s);
buf[count]:=s;
inc(count);
end;
Собственно, все.
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.