Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Работа с Файлами

Автор: BoB@N 5.12.2005 1:41

Определить индексы нулевых элементов массива A(m,n). Элементы данного массива находятся в файле, результат поместить в другой файл.

Проблема с этим исходником в том, что в сохраняемом файле Otvet.txt значения индексов из A[m] равны значениям индексов из A[n].
unsure.gif

Код

Program Faels;
Uses dos,crt;
var
a:array[1..100]of integer;
f,l:text;
i,j:integer;
begin
 clrscr;
 Assign(f,'d:\PASCAL\laba52.txt');
 Reset(f);
Writeln('A[m]:');
for i:=1 to 8 do
begin
 Read(f,a[i]);
 Write(' ',a[i]);
end;
Writeln;
Writeln('A[n]:');
for j:=1 to 8 do
begin
 Read(f,a[j]);
 Write(' ',a[j]);
end;
Assign(l,'d:\PASCAL\Otvet.txt');
Rewrite(l);
for i:=1 to 8 do
if a[i]=0 then
Writeln(l,'A[m]:',i);
for j:=1 to 8 do
if a[j]=0 then
Writeln(l,'A[n]:',j);
Close(l);
Readln;
end.

Автор: Atos 5.12.2005 12:52

blink.gif Совершенно непонятно, что ты хочешь сделать, и что ты понимаешь под а[ m] и a[n], если у тебя в программе один-единственный массив a.

Цитата
значения индексов из A[ m] равны значениям индексов из A[n].
А чего ты хотел? Сам же зачем-то выводишь одинаковые индексы в двух совершенно одинаковых циклах:
for i:=1 to 8 do
if a[i]=0 then
Writeln(l,'A[ m]:',i);
и
for j:=1 to 8 do
if a[j]=0 then
Writeln(l,'A[n]:',j);

Скорее всего ты вообще не понял задания. A(m,n) по идее - это двумерный массив. И какой именно результат должен записываться в файл?

Автор: BoB@N 5.12.2005 15:18

Да, массив должен быть двумерный...
В файле с текстом находятся цифры в два ряда (8-штук в ряде)..
Я пытаюсь каждому ряду присвоить m и n..
Может я запарился-но смысл в том, чтобы в выходном файле имелись значения в две строки (типо двумерный массив)
unsure.gif

Автор: klem4 5.12.2005 15:57

вот тебе пример, как рабобать не используя массив, дальше надеюсь сам разберешься как сделать :

uses crt;
var
f : text;
i,j,n : integer;
begin
assign(f, 'c:\test.txt');
reset(f);
i := 1;
j := 1;
while not(eof(f)) do begin
while not(eoln(f)) do begin
read(f,n);
writeln('x[',i,',',j,']=',n);
inc(j);
end;
readln(f);
inc(i);
j := 1;
end;

close(f);
readln
end.



Содержание текстового файла например :

1 2 3
12 13 14

Автор: BoB@N 8.12.2005 0:21

Вот я начал делать, но возникла очередная проблема:
У меня в конечном файле выводится только индекс последнего элемента(если элементов больше одного), а не всех. При введении цикла -прога начинает глючить.. wacko.gif

Код

var
  f,l : text;
  i,j,n,c : integer;
begin
clrscr;
  assign(f, 'd:\PASCAL\laba52.txt');
  reset(f);
  i := 1;
  j := 1;
  while not(eof(f)) do begin
     while not(eoln(f)) do begin
        read(f,n);
        writeln('A[',i,',',j,']=',n);
        if n=0 then
         c:=j;
         inc(j);
     end;
      readln(f);
     inc(i);
     j := 1;
  end;
Assign(l,'d:\PASCAL\Otvet.txt');
Rewrite(l);
Writeln(l,c);
  close(f);
  close(l);
  readkey;
end.

Автор: klem4 8.12.2005 12:22

uses crt;
var
f,g : text;
i,j,n : integer;
begin
assign(f, 'c:\test.txt');
reset(f);
assign(g, 'c:\out.txt');
rewrite(g);
i := 1;
j := 1;
while not(eof(f)) do begin
while not(eoln(f)) do begin
read(f,n);
writeln('x[',i,',',j,']=',n);
if n = 0 then begin
write(g,'i = ',i,' ');
write(g,'j = ',j,' ');
writeln(g);
end;
inc(j);
end;
readln(f);
inc(i);
j := 1;
end;

close(f);
close(g);
readln
end.


Автор: BoB@N 8.12.2005 23:29

good.gif good.gif good.gif СпАсИбО за ПомоЩь good.gif good.gif good.gif