Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.05.2009, 23:33   #11
tanek
Форумчанин
 
Регистрация: 07.03.2009
Сообщений: 209
По умолчанию

А не могли бы вы это показать на языке Паскале???
tanek вне форума Ответить с цитированием
Старый 11.05.2009, 23:43   #12
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Пример. Подсчитывается количество элементов в файле. Если меньше, чем надо, то говорим об этом.
Код:
uses crt;
var
f : text;
m,n : integer;
a,i,j : integer;
count : integer;
begin
clrscr;
assign(f,'test.txt');
reset(f);
readln(f,m,n);
writeln('M = ',m,'  N = ',n);
count := 0; { общее количетсво элементов в файле }
while not eof(f) do
 begin
 read(f,a);
 inc(count);
 end;

writeln('Kolichestvo elementov v faile = ',count);
if count<m*n then writeln('Trebuetsya bolshe elementov!');
close(f);

readln;
end.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 13.05.2009, 00:46   #13
tanek
Форумчанин
 
Регистрация: 07.03.2009
Сообщений: 209
По умолчанию

Уважаемы Sazary ,я исправила, но она почему то не хочет матрицу теперь считывать
Код:
Program Matrix14;

type
  MyType=integer;
type
  PMyMatrix=^MyMatrix;
  MyMatrix=array[1..1] of MyType;

  MyArrayPtr=^MyArray;
  MyArray=array[1..1] of PMyMatrix;


procedure DefinitionsPurposeProgram;
begin
  writeln('Программа присваивает значение +1 максимальному элементу столбца');
  writeln('и -1 минимальному элементу столбца матрицы A(K,L),где K<=50,L<=30');
  writeln;
end;


procedure OpenFile(name_file:string; var fin:text);
begin
  writeln('Введите название файла');
  readln(name_file);
  assign(fin,name_file);
  {$I-}
    reset(fin);
  {$I+}
  if IOResult<>0 then
  begin
    writeln('файл ',name_file,' не найден');
    readln;
    halt;
  end;
end;

procedure ReadingDimension(var fin:text; var line,column:integer);
var
  count:integer;
  a:integer;
begin
  read(fin,line);
  read(fin,column);
  writeln('Количество строк=',line,'количество столбцов=',column);
  count:=0;
  while not EOF(fin) do
    begin
      read(fin,a);
      inc(count);
    end;
  writeln('количество элементов в файле =',count);
  if count<line*column then
    writeln('Количество элементов должно совпадать с размерностью матрицы');
    readln;
end;

procedure AllocateMatrix ( line,column:integer; var matrix:MyArrayPtr);
var
  i,j:integer;
begin
   Getmem(matrix,line*sizeof(PMyMatrix));
    for i:=1 to line do
      Getmem(matrix^[i],column*sizeof(MyType));
    for i:=1 to column do
      for j:=1 to column do
end;


procedure InputMatrix(line:integer;column:integer; matrix:MyArrayPtr; var fin:text);
var
 i,j:integer;

begin
 for i:=1 to line do
  begin
    for j:=1 to column do
      read (fin,matrix^[i]^[j]);
  end;
  close(fin);
end;

procedure ReadingMatrixFromFileToDynamicArray(var line,column:integer; var matrix:MyArrayPtr);
var
  name_file:string;
  fin:text;
begin
   OpenFile(name_file,fin);
   ReadingDimension(fin,line,column);
   AllocateMatrix ( line,column,matrix);
   InputMatrix(line,column,matrix,fin);
end;

procedure PrintMatrix(line:integer; column:integer; matrix:MyArrayPtr);
var
  i,j:integer;
begin
  writeln('Исходная матрица:');
  for i:=1 to line do
    begin
      for j:=1 to column do
        write(matrix^[i]^[j]:4);
      writeln;
    end;
  writeln;
end;

procedure ReplaceMinElement(line:integer; column:integer; var matrix:MyArrayPtr);
var
  min : integer;
  i,j:integer;
begin
  for j := 1 to column do
    begin
      min :=matrix^[1]^[j];
      for i := 1 to line do
      begin
        if(matrix^[i]^[j] <= min) Then
           min := matrix^[i]^[j];
      end;
       { Теперь идем по столбцу еще раз и сравниваем элементы с минимумом}
      for i:=1 to line do
        if matrix^[i]^[j] = min then matrix^[i]^[j] :=-1;
    end;
end;

procedure ReplaceMaxElement(line:integer; column:integer; var matrix:MyArrayPtr);
var
  max: integer;
  i,j:integer;
begin
  for j := 1 to column do
  begin
    max :=matrix^[1]^[j];
    for i := 1 to line do
    begin
      if(matrix^[i]^[j] >= max) Then
         max := matrix^[i]^[j];
    end;
    for i := 1 to line do
      if matrix^[i]^[j] = max then matrix^[i]^[j]:=1;
  end;
end;


procedure OpenOutputFile(var fout:text);
var
  name_out_file:string;
begin
  writeln('Введите имя выходного файла');
  readln(name_out_file);
  assign(fout,name_out_file);
  rewrite(fout);
end;

procedure OutputMatrixToFile(line:integer; column:integer; var matrix:MyArrayPtr;var fout:text);
var
  i,j:integer;
begin
  for i:=1 to line do
  begin
     for j:=1 to column do
        write(fout,matrix^[i]^[j]:4,' ');
        writeln(fout);
   end;
end;

procedure FreeMatrix(var fout:text;line,column:integer;matrix:MyArrayPtr);
var
  i:integer;
begin
  for i:=1 to line do
    FreeMem(matrix^[i],column*sizeof(MyType));
    FreeMem(matrix,column*sizeof(PMyMatrix));
end;

procedure WriteMatrixToFile(column,line:integer;matrix:MyArrayPtr);
var
  fout:text;
begin
    OpenOutputFile(fout);
    OutputMatrixToFile(line,column,matrix,fout);
    FreeMatrix(fout,line,column,matrix);
    close(fout);
end;

procedure PrintTransformedMatrix(line:integer;column:integer;matrix:MyArrayPtr);
var
  i,j:integer;
begin
  writeln('Преобразованная матрица:');
  for i:=1 to line do
     begin
     for j:=1 to column do
        write(matrix^[i]^[j]:4);
        writeln;
     end;
end;


var
   line, column:integer;
   matrix:MyArrayPtr;
   fin,fout:text;

begin
   DefinitionsPurposeProgram;
   ReadingMatrixFromFileToDynamicArray(line,column,matrix);
   PrintMatrix(line,column,matrix);
   ReplaceMinElement(line,column,matrix);
   ReplaceMaxElement(line,column,matrix);
   PrintTransformedMatrix(line,column,matrix);
   WriteMatrixToFile(column,line,matrix);
end.
и для чего нам нужна переменная a:integer?
tanek вне форума Ответить с цитированием
Старый 13.05.2009, 00:57   #14
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
но она почему то не хочет матрицу теперь считывать
Все просто. Когда вы проверяете данные, указатель оказывается в конце файла. И при считывании матрицы уже нечего читать. Нужно переоткрыть файл:
Код:
procedure ReadingDimension(var fin:text; var line,column:integer);
var
  count:integer;
  a:integer;
begin
  read(fin,line);
  read(fin,column);
  writeln('Š®«ЁзҐбвў® бва®Є=',line,'Є®«ЁзҐбвў® бв®«Ўж®ў=',column);
  count:=0;
  while not EOF(fin) do
    begin
      read(fin,a);
      inc(count);
    end;
  writeln('Є®«ЁзҐбвў® н«Ґ¬Ґ*в®ў ў д*©«Ґ =',count);
  if count<line*column then
    writeln('Š®«ЁзҐбвў® н«Ґ¬Ґ*в®ў ¤®«¦*® б®ўЇ*¤*вм б а*§¬Ґа*®бвмо ¬*ваЁжл');
 close(fin);
 reset(fin);
    readln;
end;
Цитата:
и для чего нам нужна переменная a:integer?
Ну ведь нужно куда-нибудь читать данные.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 17.05.2009, 19:35   #15
tanek
Форумчанин
 
Регистрация: 07.03.2009
Сообщений: 209
По умолчанию

уважаемый,Sazary! проблема в том, что считавыние матрицы начинается с первой строки-размерности, а не со второй-элементов.Я исправила, но она не компилируертся...
Код:
Program Matrix14;

type
  MyType=integer;
  PMyMatrix=^MyMatrix;
  MyMatrix=array[1..1] of MyType;

  MyArrayPtr=^MyArray;
  MyArray=array[1..1] of PMyMatrix;

procedure OpenFile(name_file:string; var fin:text);
begin
  writeln('Введите имя входного файла');
  readln(name_file);
  assign(fin,name_file);
  {$I-}
    reset(fin);
  {$I+}
  if IOResult<>0 then
  begin
    writeln('файл ',name_file,' не найден');
    readln;
    halt;
  end;
end;

procedure Read(var fin:text; var line,column:integer);
begin
  read(fin,line);
  read(fin,column);
  if (line<=0) or (column<=0) then
  begin
    writeln('Размерность должна быть>0.Завершение программы');
    readln;
    halt;
  end;
  writeln('Количество строк= ',line,',столбцов=',column);
end;

procedure ReadingDimension(var fin:text;line,column:integer);
var
  count:integer;
  element:integer;
begin
  {read(fin,line);
  read(fin,column);
  if (line<=0) or (column<=0) then
  begin
    writeln('Размерность должна быть>0.Завершение программы');
    readln;
    halt;
  end;}
  Read(fin,line,column);
  writeln('Количество строк= ',line,',столбцов=',column);
  count:=0;
  while not EOF(fin) do
  begin
    read(fin,element);
    inc(count);
  end;
  writeln('количество элементов в файле =',count);
  close(fin);
  reset(fin);
  if count<line*column then
  begin
    writeln('Количество элементов должно совпадать с размерностью матрицы.Выход их программы');
    readln;
    halt;
  end;
end;

procedure AllocateMatrix ( line,column:integer; var matrix:MyArrayPtr);
var
  i:integer;
begin
   Getmem(matrix,line*sizeof(PMyMatrix));
   for i:=1 to line do
     Getmem(matrix^[i],column*sizeof(MyType));
end;


procedure InputMatrix(var matrix:MyArrayPtr; var fin:text);
var
  i,j:integer;
  line,column:integer;
begin
  Read(fin,line,column);
  for i:=1 to line do
  begin
    for j:=1 to column do
      read (fin,matrix^[i]^[j]);
  end;
end;

procedure ReadingMatrixFromFileToDynamicArray(var line,column:integer; var matrix:MyArrayPtr);
var
  name_file:string;
  fin:text;
begin
   OpenFile(name_file,fin);
   ReadingDimension(fin,line,column);
   AllocateMatrix ( line,column,matrix);
   InputMatrix(line,column,matrix,fin);
   close(fin);
end;

procedure PrintMatrix(line:integer; column:integer; matrix:MyArrayPtr);
var
  i,j:integer;
begin
  writeln('Исходная матрица:');
  for i:=1 to line do
  begin
    for j:=1 to column do
      write(matrix^[i]^[j]:4);
    writeln;
  end;
  writeln;
end;

procedure ReplaceMinElement(line:integer; column:integer; var matrix:MyArrayPtr);
var
  min : integer;
  i,j:integer;
begin
  for j := 1 to column do
  begin
    min :=matrix^[1]^[j];
    for i := 1 to line do
    begin
      if(matrix^[i]^[j] <= min) then
        min := matrix^[i]^[j];
    end;
       { Теперь идем по столбцу еще раз и сравниваем элементы с минимумом}
    for i:=1 to line do
      if matrix^[i]^[j] = min then matrix^[i]^[j] :=-1;
  end;
end;
tanek вне форума Ответить с цитированием
Старый 17.05.2009, 19:35   #16
tanek
Форумчанин
 
Регистрация: 07.03.2009
Сообщений: 209
По умолчанию

procedure ReplaceMaxElement(line:integer; column:integer; var matrix:MyArrayPtr);
var
max: integer;
i,j:integer;
begin
for j := 1 to column do
begin
max :=matrix^[1]^[j];
for i := 1 to line do
begin
if(matrix^[i]^[j] >= max) then
max := matrix^[i]^[j];
end;
for i := 1 to line do
if matrix^[i]^[j] = max then matrix^[i]^[j]:=1;
end;
end;


procedure OpenOutputFile(var fout:text);
var
name_out_file:string;
begin
writeln('Введите имя выходного файла');
readln(name_out_file);
assign(fout,name_out_file);
rewrite(fout);
end;

procedure OutputMatrixToFile(line:integer; column:integer; var matrix:MyArrayPtr;var fout:text);
var
i,j:integer;
begin
for i:=1 to line do
begin
for j:=1 to column do
write(fout,matrix^[i]^[j]:4,' ');
writeln(fout);
end;
end;

procedure FreeMatrix(var fout:text;line,column:integer;matri x:MyArrayPtr);
var
i:integer;
begin
for i:=1 to line do
FreeMem(matrix^[i],column*sizeof(MyType));
FreeMem(matrix,column*sizeof(PMyMat rix));
end;

procedure WriteMatrixToFile(column,line:integ er;matrix:MyArrayPtr);
var
fout:text;
begin
OpenOutputFile(fout);
OutputMatrixToFile(line,column,matr ix,fout);
FreeMatrix(fout,line,column,matrix) ;
close(fout);
end;

procedure PrintTransformedMatrix(line:integer ;column:integer;matrix:MyArrayPtr);
var
i,j:integer;
begin
writeln('Преобразованная матрица:');
for i:=1 to line do
begin
for j:=1 to column do
write(matrix^[i]^[j]:4);
writeln;
end;
end;

var
line, column:integer;
matrix:MyArrayPtr;
fin,fout:text;

begin
writeln('Программа присваивает значение +1 максимальному элементу столбца');
writeln('и -1 минимальному элементу столбца матрицы A(K,L),где K<=50,L<=30');
writeln;
ReadingMatrixFromFileToDynamicArray (line,column,matrix);
PrintMatrix(line,column,matrix);
ReplaceMinElement(line,column,matri x);
ReplaceMaxElement(line,column,matri x);
PrintTransformedMatrix(line,column, matrix);
WriteMatrixToFile(column,line,matri x);
end.
tanek вне форума Ответить с цитированием
Старый 17.05.2009, 19:48   #17
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Сообщение от tanek
проблема в том, что считавыние матрицы начинается с первой строки-размерности, а не со второй-элементов.Я исправила, но она не компилируертся...
Это нетрудно исправить ) Код выше не смотрел, т.к. изменения будут только тут:
Код:
procedure ReadingDimension(var fin:text; var line,column:integer);
var
  count:integer;
  a:integer;
begin
  read(fin,line);
  read(fin,column);
  writeln('SR<р§?ЎўчR Ўў*Rт=',line,'тR<р§?ЎўчR ЎўR<ц¦Rч=',column);
  count:=0;
  while not EOF(fin) do
    begin
      read(fin,a);
      inc(count);
    end;
  writeln('тR<р§?ЎўчR *<?ї?*ўRч ч ¤*c<? =',count);
  if count<line*column then
    writeln('SR<р§?ЎўчR *<?ї?*ўRч эR<і*R ЎRчф*э*ў¬ Ў **ї?**RЎў¬® ї*ў*р¦«');
 close(fin);
 reset(fin);
 read(fin,a,a); { еще раз считываем размерности }
    readln;
end;
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 17.05.2009, 20:09   #18
tanek
Форумчанин
 
Регистрация: 07.03.2009
Сообщений: 209
По умолчанию

Я это понимаю...по проблемма в том, что мой преподаватель так не разрешает делать, необходимо сделать отдельную процедуру считывания размерности, а потом ее вызвать а процуре проверки на соответстиве элементов и размерности....Я сделала на она не компилируется
tanek вне форума Ответить с цитированием
Старый 17.05.2009, 20:28   #19
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

tanek Вы назвали процедуру "Read". А это имя стандартной процедуры. Переименуйте ее.
Там есть еще какие-то синтаксические ошибки, но, думаю, их вы исправите.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 17.05.2009, 20:49   #20
world12_tk
Форумчанин
 
Регистрация: 24.02.2009
Сообщений: 269
По умолчанию

Sazary! А можно ли другой сдесь способ подобрать! например побайтовое считывание?
world12_tk вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача в Паскале.Массивы. Deco18 Помощь студентам 6 04.03.2010 08:37
Массивы в Паскале Dartchuwak Помощь студентам 3 13.12.2009 12:06
Массивы в Турбо Паскале mela Помощь студентам 2 01.05.2009 13:57
Массивы в паскале xSPiRiTx Помощь студентам 8 04.03.2009 18:08