Страница 1 из 2
Текстовые файлы в Паскале.
Добавлено: 25 мар 2009, 20:53
maliyusha
Дан текстовый файл f, содержащий целые числа от 1 до 100. Подготовить новый файл для печати этих чисел в две колонки. В левой колонке должны быть размещены числа от 1 до 50, в правой колонке − числа от 51 до 100. Выровнять числа по левому краю.
Программа полностью неправильная или можно только вторую часть изменить? И как выровнять по условию в данном случае? Помогите,пожалуйста!
Помогите,пожалуйста!
Код: Выделить всё
Uses crt;
var
F,F2:Text;
i,N,W:{integer;}longint;
S,S2:string;
begin
clrscr;
writeln(' Fail F');
assign(F,'100.txt');
assign(F2,'100.txt');
rewrite(F);
rewrite(F2);
randomize;
for i:=1 to 100 do
begin
N:=random(100);
write(F,N);
write(N,' ');
end;
close(F);
writeln;
reset(F);
{2-ya chast programmy}
writeln(' Fail F2');
while not eof(F) do
begin
N:=(N+1) div 2;
reset(F2);
W:=0;
for i:=1 to 10 do
begin
readln(F2,S);
if length(S)>W then W:=length(S);
end;
reset(F);
assign(F2,'100-2.txt');
rewrite(F2);
for i:=1 to 10 do
if not eof(F2) then
begin
readln(F2,S2)
end else
begin
S2:='';
writeln(F2,S,'':W+5-length(S),S2);
end;
end;
readln;
close(F2);
end.

Re: Текстовые файлы в Паскале.
Добавлено: 26 мар 2009, 00:40
dr.Jekill
Простейши так:
Код: Выделить всё
uses crt;
var a:array[1..100] of integer;
f0,f:text;
name:string;
i:byte;
begin
clrscr;
textmode(259);
write('Vedite put i imia faila: ');
readln(name);
assign(f0,name);
reset(f0);
for i:=1 to 100 do readln(f0,a[i]);
close(f0);
writeln;
write('Vvedite put i imia vyhodnogo faila: ');
readln(name);
assign(f,name);
rewrite(f);
for i:=1 to 50 do
begin
write(f,a[i]);write(f,a[50+i]:10);
writeln(f);
end;
readln;
end.
А чтобы выравнять: можно i-ый элемент перевести в строку, потом i+50-ый первести в строку, потом в первую строку вставить вторую строку на позицию скажем 14. Вывести полученную строку в файл с новой строки.
Re: Текстовые файлы в Паскале.
Добавлено: 26 мар 2009, 11:07
Хыиуду
Что-то у меня такое чувство, что если бы числа шли в файле последовательно, то и сам файл бы не понадобился. Видимо, они там вперемешку идут
Re: Текстовые файлы в Паскале.
Добавлено: 26 мар 2009, 22:16
maliyusha
dr.Jekill писал(а):
А чтобы выравнять: можно i-ый элемент перевести в строку, потом i+50-ый первести в строку, потом в первую строку вставить вторую строку на позицию скажем 14. Вывести полученную строку в файл с новой строки.
Я пыталась реализовать это во второй части программы,но не получается.

Мне бы хотелось,чтобы первая часть осталась прежней

Или такое совмещение не допускается??
--------------------------------------------------------------------------------
Добавленное сообщение
--------------------------------------------------------------------------------
Хыиуду писал(а):Что-то у меня такое чувство, что если бы числа шли в файле последовательно, то и сам файл бы не понадобился. Видимо, они там вперемешку идут
В самую точку! Весь интерес программы именно в разных перемешанных числах, просто рубеж от 1 до 100 нельзя перескакивать.
Re: Текстовые файлы в Паскале.
Добавлено: 27 мар 2009, 00:53
dr.Jekill
Да, Хыиуду верно подметил - надо сначала отсортировать файл, а потом выводить.
А что касается первой части, то конечно можно оставить:
Код: Выделить всё
Uses crt;
var
F,F2:Text;
i,N,W:integer;
S,S2,name:string;
begin
clrscr;
write('Zadaite imia faia: ');
radln(name);
assign(F,name);
rewrite(F);
randomize;
for i:=1 to 100 do
begin
N:=random(100);
writeln(F,N);
end;
write('Zadaite imia vyhodnogo faia: ');
radln(name);
{2-ya chast programmy}
После сортировки можно записывать в результируюший файл по ранее описанной схеме, но насколько я помню, строка до позиции вставки должна быть не пустая.
Re: Текстовые файлы в Паскале.
Добавлено: 05 апр 2009, 19:14
maliyusha
Воть:
Код: Выделить всё
Uses crt;
function Zn(a:byte):string;
{funkciya dlya vyravnivaniya po levomu krayu}
begin
if a div 10>=1 then Zn:=' '{esli 4islo v 1-om stolbce 2h zna4noe,to 3 probela}
else Zn:=' ';{esli odnozna4noe- 4e}
end;
var
F,F2:Text;
i,N,k1,k2:byte;
a1,a2:array[1..100] of byte;{soberem 4isla iz faila v 2 massiva,do 50 i >}
begin
clrscr;
writeln('Fail F');
assign(F,'100.txt'); {svyazyvaet vneshnii fail s peremennoi F}
assign(F2,'101.txt');
rewrite(F); {sozdaet i otkryvaet novyi fail}
rewrite(F2);
randomize;
for i:=1 to 25 do
begin
N:=random(100)+1;
write(F,N,' ');
write(N,' ');
end;
writeln;
readln;
reset(F); {otkryvaet dly 4teniya}
{2-ya chast programmy}
writeln('Fail F2');
k1:=0;k2:=0;
for i:=1 to 25 do
begin
read(F,N);{4itaem 4islo}
if N<51 then{esli < 51}
begin
k1:=k1+1;{s4itaem}
a1[k1]:=N;{v 1-i massiv}
end
else {esli > 50, to vo 2-i massiv}
begin
k2:=k2+1;
a2[k2]:=N;
end;
end;
close(F);
if k1=k2 then {esli massivi odinakovie}
begin
for i:=1 to k1 do
begin
writeln(F2,a1[i],Zn(a1[i]),a2[i]);{vivodim v fail i na ekran 1-e 4islo,probely(3 ili 4),2-e 4islo}
writeln(a1[i],Zn(a1[i]),a2[i]);
end;
end
else if k1>k2 then {esli 1-i massiv bolshe}
begin
for i:=1 to k2 do{do dliny vtorogo massiva}
begin
writeln(F2,a1[i],Zn(a1[i]),a2[i]);{vyvodim takge}
writeln(a1[i],Zn(a1[i]),a2[i]);
end;
for i:=k2+1 to k1 do {vyvodim ostatok 1go massiva}
begin
writeln(F2,a1[i]);
writeln(a1[i]);
end;
end
else if k2>k1 then {esli 2-i dlinnee}
begin
for i:=1 to k1 do {do konca 1-go}
begin
writeln(F2,a1[i],Zn(a1[i]),a2[i]);{vyvodim 2 stolbca}
writeln(a1[i],Zn(a1[i]),a2[i]);
end;
for i:=k1+1 to k2 do{ostatok 2-go vyvodim v odin stolbec}
begin
writeln(F2,' ',a2[i]);{6 probelov}
writeln(F2,' ',a2[i]);
end;
end;
readln;
close(F2);
end.

--------------------------------------------------------------------------------
Добавленное сообщение
--------------------------------------------------------------------------------
А можно вопрос не по теме? Почему у вас на форуме в профиле не ставится аватарка, причем не важно какого размера, не ставится и всё !?
Re: Текстовые файлы в Паскале.
Добавлено: 05 апр 2009, 19:22
whisler
Тот же вопрос я задал в предложениях)))
Re: Текстовые файлы в Паскале.
Добавлено: 05 апр 2009, 19:27
maliyusha
И как? Ответили хоть?
Re: Текстовые файлы в Паскале.
Добавлено: 05 апр 2009, 21:48
whisler
ммм...посмотри,кажется нет пока,да и особо мне это не мещает

Re: Текстовые файлы в Паскале.
Добавлено: 05 апр 2009, 22:20
Naeel Maqsudov
Этот "вопрос не по теме" здесь не обсуждается. Для этого есть раздел "жалобная книга"