Помощь - Поиск - Пользователи - Календарь
Полная версия: типизированный файл
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Юлия
привет всем! очень нужна помощь! написала программу, а теперь ее результат нужно вписать в текстовый файл. очень прошу помочь. сама программа:

Program proced;
uses crt;
Type ar=array[1..30] of real;
var Z,T,U:ar;
i,j,k:byte;
y,yz,yt,yu,nz,nt,nu,nk:byte;
f:file of real;
f1:text;
procedure analiz(var N:byte; Z:ar);
var i,k:byte;
begin
k:=0;
for i:=1 to N do
begin
if z[i]>0 then write(' El# ',i:3,' - pol;');
if z[i]<0 then write(' El# ',i:3,' - otr;');
k:=k+1;
if k>2 then
begin
writeln;
k:=0;
end;
end;
end;
Procedure WaitSpace;
Var ch : char;
Begin
writeln('Dlia prodolgeniya nagmite SPACE');
Repeat
ch:=ReadKey;
Until ord(ch)=32;
End;
BEGIN
ClrScr;
nz:=30;
writeln('Massiv Z');
for i:=1 to nz do
begin
z[i]:=sin(1.5*i)+3*(cos(2*i));
write(Z[i]:8:3);
end;
writeln;
analiz (Nz,Z);
writeln;
WaitSpace;
Clrscr;
nt:=20;
writeln('Massiv T');
for j:=1 to nt do
begin
t[j]:=j*cos(1.5*j+2);
write(T[j]:8:3);
end;
writeln;
analiz(Nt,T);
writeln;
WaitSpace;
ClrScr;
nk:=25;
writeln('Massiv U');
for k:=1 to nk do
begin
U[k]:=sin(2*k)*cos(2.5*k);
write(U[k]:8:3);
end;
writeln;
analiz(Nk,U);
writeln;
WaitSpace;
end.

polic
код в теги для начала занеси

М
Для таких замечаний (хоть и справделивых) есть модераторы/администраторы. Или ты считаешь, что они не справляются со своими обязанностями?
В общем, ИМХО, нарушение п.7 правил.
мисс_граффити

polic
для этого используется процедура outdata вот так выводятся файлы для примера


.......
Код
procedure outdata;
var g:text;
begin
assign(g,'output.txt');
rewrite(g)
close(g)
end;

.....
volvo
 ! 
polic, а тебя, кстати, теги тоже касаются... Устное замечание... Еще одно подобное нарушение - последуют более кардинальные меры...

polic
я поэтому и пишу чтоб самому тож не забыть про тэги naezd.gif

и ещё хотел показать на примере как у меня теги раставлены
Гость
Цитата(polic @ 8.01.2007 18:00) *

для этого используется процедура outdata вот так выводятся файлы для примера
.......
Код
procedure outdata;
var g:text;
begin
assign(g,'output.txt');
rewrite(g)
close(g)
end;

.....




т.е. я открываю новую процедуру? я правильно поняла? но тогда даже не появляется текстовый документ.
polic
ты пишеш сначало куда поместить например
Код
assign (s, 'A:\var5\output.txt');

а затем вписываеш тот код которой вырабатывает результат
polic
мою прогу там тож надо вывести в файл позырь ,мож поможет
Юлия
а ты не мог бы с мою прогу поделать? просто я уже замучалась с ней. не могу понять как делать. там три массива,в каждом выводятся положительные и отрицательные элементы. и именно их мне и нужно вывести в типизированый файл. помоги,пожалуйста,а то что-то у меня свосем никак. wacko.gif
Bokul
Вот:


procedure WriteResult(Const A,B,C:ar; Const path:string);//path - путь к файлу
var f:file of ar;
begin
assign(f,path);
{$I-}
rewrite(f);
{$I+}
if IoResult<>0 then begin
writeln('Cannot create file');
readln;
exit;
end;

write(f,a);
write(f,b);
write(f,c);
close(f);
end;



Цитата
ее результат нужно вписать в текстовый файл

не заметил 10.gif
Bokul
С текстовыми:

Type
ar=array[1..30] of real;

procedure WriteArray(Const mas:ar; Var f:text; Const n:byte);//вспомогательная процедура, записывает в файл один массив
var i:byte;
begin
for i:=1 to n do
writeln(f,mas[i]);
end;


procedure WriteResult(Const A,B,C:ar; Const path:string; Const n:byte);//path-путь к файлу, n-размер массива
var f:text;
begin
assign(f,path);
{$I-}
rewrite(f);// пробуем создать файл
{$I+}
if IoResult<>0 then begin //если возникла ошибка
writeln('Cannot create file');
readln;
exit;//то выходим
end;

WriteArray(A,f,n);//записываем сначала массив A
WriteArray(B,f,n);//потом B
WriteArray(C,f,n);// и наконец C
close(f);// закрываем файл
end;



P.S. в названии темы написано с типизированным файлом, в задании - с текстовым, ты уж как-то определись.. wink.gif
Гость
там где записываем в файл массивы

WriteArray(A,f,n);//записываем сначала массив A
WriteArray(B,f,n);//потом B
WriteArray(C,f,n);// и наконец C
close(f);// закрываем файл
end;



выдает ошибку типов после f.
Bokul
blink.gif
У меня работает отлично, вот полный пример

Type
ar=array[1..30] of real;

procedure WriteArray(Const mas:ar; Var f:text; Const n:byte);
var i:byte;
begin
for i:=1 to n do
writeln(f,mas[i]);
end;


procedure WriteResult(Const A,B,C:ar; Const path:string; Const n:byte);
var f:text; i:byte;
begin
assign(f,path);
{$I-}
rewrite(f);
{$I+}
if IoResult<>0 then begin
writeln('Cannot create file');
readln;
exit;
end;

WriteArray(A,f,n);
WriteArray(B,f,n);
WriteArray(C,f,n);
close(f);
end;


var A,B,C:ar;
begin
WriteResult(A,B,C,'c:\res.txt',30);
end.



Создаваемый файл: Нажмите для просмотра прикрепленного файла
Гость
работает! но выводит сам массив. а как вывести номера положительных и отрицательных элементов?
blink.gif
polic
Код
if IoResult<>0 then  begin
не известен компилятору IoResult
klem4
Чтоже за компилятор то у тебя такой ... попробуй первой строчкой поставить uses crt;
Bokul
Цитата
работает! но выводит сам массив. а как вывести номера положительных и отрицательных элементов?

А как ты хочешь их выводить? Отдельно положительные и отрицательные? В разных файлах?

tongue.gif
Юлька@
я прикрепила свою программу. как в ней выводятся, так и в текстовом должны yes2.gif
Bokul

Type
ar=array[1..30] of real;

procedure WriteArray(Const mas:ar; Var f:text; Const n:byte);
var i:byte;
begin
for i:=1 to n do
writeln(f,mas[i]:0:3);
end;

procedure AnalyzeArray(Const mas:ar; Var f:text; Const n:byte);
var i:byte;
begin
for i:=1 to n do begin
if mas[i]>0 then
writeln(f,'Elelemnt # ',i:3,' - positive');
if mas[i]<0 then
writeln(f,'Element # ',i:3,' - negative');
end;
end;

procedure WriteResult(Const A,B,C:ar; Const path:string; Const n:byte);
var f:text; i:byte;
begin
assign(f,path);
{$I-}
rewrite(f);
{$I+}
if IoResult<>0 then begin
writeln('Cannot create file');
readln;
exit;
end;

writeln(f,' Array A :');
WriteArray(A,f,n);
AnalyzeArray(A,f,n);

writeln(f,' Array B :');
WriteArray(B,f,n);
AnalyzeArray(B,f,n);

writeln(f,' Array C :');
WriteArray(C,f,n);
AnalyzeArray(C,f,n);

close(f);
end;


var A,B,C:ar;
begin
WriteResult(A,B,C,'c:\res.txt',30);
end.

Юлька@
Bokul,огромное спасибо! у меня все работает!!! еще раз спасибооо!!!!!! lol.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.