Текстовый массив string

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

Ответить
alt123
Сообщения: 3
Зарегистрирован: 19 дек 2009, 21:36

Всем привет. В программе в зави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]
Magnum
Сообщения: 5
Зарегистрирован: 09 янв 2010, 20:25

Если я правильно понял, вам из некоторого файла нужно вытащить некоторые строки произвольной нумерации (например 1-ю, 7-ю и 4-ю). Правильно?
alt123
Сообщения: 3
Зарегистрирован: 19 дек 2009, 21:36

Да совершенно верно. Проблема в том как их записать последовательно в массив buf
BulldozerBSG
Сообщения: 270
Зарегистрирован: 09 янв 2010, 04:14
Контактная информация:

Если ето Delphi, то строки там динамические. Есть функция для конкатенации строк, но рекомендуют пользоваться сложением:

string_1 := string_1 + string_2;

Ой чуть не забыл в паскале функция называеться помоему Concat
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

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;

Собственно, все.
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Ответить