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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.03.2016, 20:26   #1
yana1996
Пользователь
 
Регистрация: 02.12.2015
Сообщений: 38
По умолчанию Дан файл вещественных чисел

помогите переделать в графический интерфейс чтобы файлы файлы открывались через openDialog
Код:
var
  F_in,F_out: file of Real;
  len,i,j,i2,j2:integer;
  Cell:Real;
  Name:String;
 
begin
 Write('File In: ');
 Readln(Name);
 Assign(F_in,Name);
 
 Write('File out: ');
 Readln(Name);
 Assign(F_out,Name);
 
 Reset(F_in);
 len:=0;
 While (not eof(F_in)) do
  begin
   Read(F_in,Cell);
   inc(len);
  end;
 Close(F_in);
 
 i2:=1;
 while (len>0) do
  begin
   len:=len-i2;
   inc(i2);
  end;
 len:=i2-1;
 
 Reset(F_in);
 Rewrite(F_out);
 I2:=1;
 J2:=0;
 While not eof(F_in) do
  begin
   inc(j2);
   Read(F_in,Cell);
   Write(F_out,Cell);
   if j2=i2 then
    begin
     Cell:=0;
     for j2:=i2+1 to len do Write(F_out,Cell);
     inc(i2);
     j2:=0;
    end;
  end;
 Close(F_in);
 Close(F_out);
end.
Само задания :
Дан файл вещественных чисел, содержащий ненулевую часть нижнетреугольной матрицы (по строкам). Создать новый файл, содержащий все элементы данной матрицы (по строкам).
yana1996 вне форума Ответить с цитированием
Старый 12.03.2016, 20:39   #2
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

Надо посадить на форму компоненты OpenDialog, SaveDialog и Button
И весь код будет в обработчике TForm1.Button1Click

И вот это :
Код:
 begin
 Write('File In: ');
 Readln(Name);
 Assign(F_in,Name);
 
 Write('File out: ');
 Readln(Name);
 Assign(F_out,Name);
заменить на это:
Код:
 begin
 if OpenDialog1.Execute
  then AssignFile(F_in,OpenDialog1.FileName)
  else Exit;
 if SaveDialog1.Execute
  then AssignFile(F_out,SaveDialog1.FileName)
  else Exit;
А дальше - вроде все то же, что у вас.
type_Oleg вне форума Ответить с цитированием
Старый 13.03.2016, 10:20   #3
yana1996
Пользователь
 
Регистрация: 02.12.2015
Сообщений: 38
По умолчанию

Цитата:
Сообщение от type_Oleg Посмотреть сообщение
Надо посадить на форму компоненты OpenDialog, SaveDialog и Button
И весь код будет в обработчике TForm1.Button1Click

И вот это :
Код:
 begin
 Write('File In: ');
 Readln(Name);
 Assign(F_in,Name);
 
 Write('File out: ');
 Readln(Name);
 Assign(F_out,Name);
заменить на это:
Код:
 begin
 if OpenDialog1.Execute
  then AssignFile(F_in,OpenDialog1.FileName)
  else Exit;
 if SaveDialog1.Execute
  then AssignFile(F_out,SaveDialog1.FileName)
  else Exit;
А дальше - вроде все то же, что у вас.
Спасибо получилось )
yana1996 вне форума Ответить с цитированием
Старый 13.03.2016, 19:52   #4
yana1996
Пользователь
 
Регистрация: 02.12.2015
Сообщений: 38
По умолчанию

Цитата:
Сообщение от type_Oleg Посмотреть сообщение
Надо посадить на форму компоненты OpenDialog, SaveDialog и Button
И весь код будет в обработчике TForm1.Button1Click

И вот это :
Код:
 begin
 Write('File In: ');
 Readln(Name);
 Assign(F_in,Name);
 
 Write('File out: ');
 Readln(Name);
 Assign(F_out,Name);
заменить на это:
Код:
 begin
 if OpenDialog1.Execute
  then AssignFile(F_in,OpenDialog1.FileName)
  else Exit;
 if SaveDialog1.Execute
  then AssignFile(F_out,SaveDialog1.FileName)
  else Exit;
А дальше - вроде все то же, что у вас.
а как вот с этим проделать тоже самое ?
Код:
uses crt;
const nmax=20;
var f,g:file of real;
    n,i,j:integer;
    x,y:real;
begin
clrscr;
randomize;
assign(f,'matr1');
rewrite(f);
assign(g,'matr2');
rewrite(g);
repeat
write('Размер матрицы до ',nmax,' n=');
readln(n);
until n in [1..nmax];
{пишем нижнюю треугольную матрицу}
for i:=1 to n do
for j:=1 to i do
 begin
  x:=10*random;
  write(f,x);
 end;
{прочитаем}
reset(f);
writeln('Исходный файл:');
i:=1;{номер строки}
j:=0;{номер столбца}
while not eof(f) do
 begin
  j:=j+1;{считаем}
  if j<=i then{если не перешли главную диагональ}
   begin
    read(f,x); {читаем элемент}
    write(x:0:2,' ');{выводим в строку}
    write(g,x);{пишем в новый файл}
   end
  else{если перешли}
   begin
    while j<=n do {до конца строки}
     begin
      y:=0;
      write(g,y);{пишем в новый файл ноли}
      j:=j+1;
     end;
    i:=i+1;{новая строка}
    j:=0; {обнулим счетчик в строке}
    writeln;
   end;
 end;
writeln;
close(f);{закроем 1 файл}
reset(g); {прочитаем новый с выводом по строкам}
writeln('Новый файл:');
j:=0;
while not eof(g) do
 begin
  read(g,x);
  write(x:0:2,' ');
  j:=j+1;
  if j=n then
   begin
    j:=0;
    writeln;
   end;
 end;
close(g);
readln
end.
yana1996 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дан файл вещественных чисел bbs-serega Фриланс 12 06.07.2011 14:48
Дан файл вещественных чисел. Создать файл целых чисел, содержащий номера всех локальных максимумов в порядке возрастания zzz6 Помощь студентам 1 04.07.2011 12:59
Дан файл вещественных чисел. dexter2145 Помощь студентам 7 08.06.2010 22:50
Дан файл вещественных чисел. xilnurx Помощь студентам 0 13.03.2010 12:43