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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.04.2012, 16:48   #11
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

Исправляемся
Код:
uses
  crt;

var
  i, j, m, n: integer;
  a: real;
  f1, f2: file of real;

begin
  assign(f1, 'in.txt');
  reset(f1);
  assign(f2, 'out.txt');
  rewrite(f2);
  read(f1, a);
  m := round(a);
  n := (filesize(f1)-1) div m;
  write(f2,n);
  for i := 1 to m do
    for j := 1 to n do
    begin
      seek(f1,(j-1)*m+i);
      read(f1, a);
      write(f2, a);
    end;
  close(f1);
  close(f2);
end.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 11.04.2012 в 16:57.
BDA вне форума Ответить с цитированием
Старый 11.04.2012, 16:54   #12
denisbrain
Форумчанин
 
Регистрация: 29.05.2011
Сообщений: 449
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
ну, разумеется, там должно быть вещественное число с НУЛЕВОЙ дробной частью.
т.е. или 1.0 или 2.0 и т.д. (это сделано для упрощения - чтобы структура файла была простой!)

в решении от BDA это число приводится к целому p так:


в том то и дело, что у Вас структура файла предполагает наличе в файле 10 000 вещественных чисел. А их там - НЕТ!
сравните, у вас:
f:file of Tmarix;
а нужно:
f1, f2: file of real;



хорошо, переделал согласно условиям задачи
Код:


uses crt;
const
   maxcount = 100; // максимальное число элементов матрицы

type
Tmarix=record // структура файла
  col:integer;
  massiv:array [1..maxcount,1..maxcount] of real;
end;

var
  m:Tmarix;

// создание матрицы
Procedure CreateMas(var a:Tmarix; col:integer);
var x,y:integer;
begin
   a.col:=col;
   for x:=1 to col do
   for y:=1 to col do a.massiv[x,y]:=1+random(150);
end;
// сохранить матрицу в массив
Procedure SaveMasivToFile(a:Tmarix;Filename:string);
var x,y:integer;
   f:file of real;
   buf:real;
begin
  assign(f,filename);
  rewrite(f);
  buf:=a.col;
  write(f,buf);
  for X:=1 to a.col do
  for y:=1 to a.col do
  write(f,a.massiv[x,y]);
  close(f);
end;
// загрузить матрицу из массива
Procedure LoadMasivFromFile(var a:Tmarix;Filename:string;var errorlog:integer);
var x,y:integer;
   f:file of real;
   buf:real;
begin
errorlog:=0;
  try
  assign(f,filename);
  reset(f);
  read(f,buf);
  a.col:=round(buf);
  if a.col>maxcount then begin Writeln('Массив не может быть больше ',maxcount);
  errorlog:=2; // размер массива не должен привышать заданый размер
  exit;
  end;
  for x:=1 to a.col do
  for y:=1 to a.col do begin
    read(f,buf);
     a.massiv[x,y]:=buf;
  end;
  close(f);
  except
  errorlog:=1; // возникли проблы ввода вывода
  writeln('Ошибка ввода массива');
  end;
end;
// вывести матрицу на экран

// Транспонирование матрицы
procedure Transpose(var a:Tmarix);
var x,y:integer;
    t:real;
begin
     for y:=1 to a.col do
     for x:=y+1 to a.col do begin
         t:=a.massiv[x,y];
         a.massiv[x,y]:=a.massiv[y,x];
         a.massiv[y,x]:=t;
     end;
end;

Procedure ViewMarix(a:Tmarix);
var x,y:integer;
begin
   for y:=1 to a.col do begin writeln;   writeln; // два пробела
   for x:=1 to a.col do
      write(a.massiv[x,y]:8:2,'  ');
      end;
end;

var e:integer;
begin
clrscr; // очистка экрана
// для создания файла
//CreateMas(m,5); // создаем матрицу
//SaveMasivToFile(m,'input.dat');
LoadMasivFromFile(m,'input.dat',e); // считываем матрицу
if e=0 then begin
Writeln('Исходная матрица ');
ViewMarix(m); // выводим исходную матрицу на экран
Writeln;
Writeln('Транспонирование матрицы');
Transpose(m); // Транспонирование матрицы
//Transpose(m); //
ViewMarix(m); // выводим на экран
SaveMasivToFile(m,'output.dat');  // сохроняем полученную матрицу
end;
end.
задания на pascal/delphi ICQ 368254335
Tel +79177425326 mail denis-naymov1985(at)mail.ru login skype denis.new.skype

Последний раз редактировалось denisbrain; 11.04.2012 в 17:12.
denisbrain вне форума Ответить с цитированием
Старый 11.04.2012, 23:05   #13
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

denisbrain, не проверял, только просмотрел, код выглядит вполне рабочим (только для квадратных матриц, конечно).


Цитата:
Сообщение от BDA
Исправляемся
Просто супер!! Одобрям-с!
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
создать файл содержащий те же элементы в обратном порядке Aimet Паскаль, Turbo Pascal, PascalABC.NET 3 11.04.2012 13:47
Создать файл, содержащий сведения о сотрудниках института. Olgaandsasha Помощь студентам 4 10.04.2012 03:11
Создать файл содержащий сведения о телефонах абонентов region23 Помощь студентам 2 30.11.2010 15:18
Создать файл содержащий сведения о том kot i @ Паскаль, Turbo Pascal, PascalABC.NET 0 25.05.2010 17:27
Необходимо создать файл, содержащий информацию о багаже пасажиров Андрю)(@ Помощь студентам 3 27.11.2008 10:08