0 / 0 / 0
Регистрация: 08.12.2008
Сообщений: 9
1

Создать файл, где компонентой будет массив из N чисел

25.02.2009, 14:07. Показов 1453. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ребят помогите задачку на файлы решить

Создать файл, где компонентой будет массив из N чисел. Определить минимальное и максимальное значение в каждой компоненте (массиве) и числа, находящиеся между ними, рассортировать по убыванию. После сортировки каждую компоненту записать в новый файл. Ту компоненту, где максимальное и минимальное значения находятся наиболее близко друг к другу, удалить из файла.

Спасиб за ранее =)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.02.2009, 14:07
Ответы с готовыми решениями:

Создать файл, где компонентой будет массив из N чисел.
Создать файл, где компонентой будет массив из N чисел. Определить минимальное и максимальное...

Создать файл, где компонентой будет массив из N чисел.
Создать файл, где компонентой будет массив из N чисел. Преобразовать компоненты (массивы) в файле...

Создать файл, где компонентой будет массив из N чисел
Создать файл, где компонентой будет массив из N чисел. Преобразовать компоненты (массивы) в файле...

Создать файл, где компонентой будет массив из N чисел.
2.Создать файл, где компонентой будет массив из N чисел. Все четные по номеру компоненты участвуют...

8
Почетный модератор
64291 / 47589 / 32740
Регистрация: 18.05.2008
Сообщений: 115,181
25.02.2009, 19:49 2
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
uses crt;
const n=20;{размер компоненты}
      mmax=50;{максимальное количество компонент}
type Tmas=array[1..n]of integer;{тип компонент}
var f1,f2:file of Tmas;{типизированные файлы типа компонент}
    a:array[0..mmax] of Tmas;{массив компонент}
    b:Tmas;{перменная типа компонент}
    m:byte;{количество компонент}
    i,j,k,l:byte;{счетчики циклов}
    min,max,x:integer;{минимум, максимум и буфер при сортировке обменом}
    imin,imax,r,rmin,irmin:byte;{номер мин., макс. в массиве, расстояние между ними, минимальное расстояние, номер компоненты с мин. расстоянием}
begin
clrscr;
randomize;
assign(f1,'file1.dat');
rewrite(f1);
assign(f2,'file2.dat');
rewrite(f2);
repeat
write('Vvedite kolichestvo komponent m=');
readln(m);
until (m>0)and(m<=mmax);
for i:=0 to m-1 do
   begin
    for j:=1 to n do
    a[i][j]:=random(50);
    write(f1,a[i]);
   end;
reset(f1);
rmin:=n;irmin:=0;i:=0;
while not eof(f1) do
  begin
   read(f1,a[i]);{читаем очередную компоненту}
   min:=a[i][1];max:=a[i][1];imin:=1;imax:=1;
   for j:=1 to n do
   if a[i][j]<min then
     begin
       min:=a[i][j];{находим минимум}
       imin:=j;{его номер}
     end
   else if a[i][j]>max then
     begin
       max:=a[i][j];{максимум}
       imax:=j;{его номер}
     end;
   if imin<imax then{если мин раньше макс}
      begin
        for k:=imin+1 to imax-2 do{сортируем между ними}
        for l:=k+1 to imax-1 do
        if a[i][k]<a[i][l] then
          begin
           x:=a[i][k];
           a[i][k]:=a[i][l];
           a[i][l]:=x;
         end;
       end
   else  {если макс раньше мин}
       begin
        for k:=imax+1 to imin-2 do{сортируем}
        for l:=k+1 to imin-1 do
        if a[i][k]<a[i][l] then
          begin
           x:=a[i][k];
           a[i][k]:=a[i][l];
           a[i][l]:=x;
         end;
       end;
   r:=abs(imin-imax);{расстояние между мин и макс}
   if r<rmin then{если меньше мин}
     begin
      rmin:=r;{то это мин}
      irmin:=i;{номер компоненты}
     end;
   write(f2,a[i]);{записываем отсортированыые массивы в новый файл}
   inc(i);{увеличиваем счетчик}
 end;
reset(f2);{открываем для чтения}
for i:=irmin+1 to filesize(f2)-1 do {от следующей за нужной компоненты до конца}
  begin
    seek(f2,i);{становимся в позицию}
    read(f2,b);{запоминаем массив}
    seek(f2,i-1);{возвращаемся на шаг назад}
    write(f2,b);{записываем массив на новое место, в итоге произошел сдвиг вверх, нужный массив исчез}
  end;
seek(f2,filesize(f2)-1);{становимся в предпоследнюю строку }
truncate(f2);{обрезаем последнюю}
close(f1);{закроем прочитанные файлы}
close(f2);
writeln('Ishodnyj fail:');
reset(f1);{снова откроем и прочитаем}
while not eof(f1)do
  begin
   read(f1,b);
   for i:=1 to n do
   write(b[i],' ');
   writeln;
  end;
writeln('Izmenennyj fail:');
reset(f2);
while not eof(f2)do
  begin
   read(f2,b);
   for i:=1 to n do
   write(b[i],' ');
   writeln;
  end;
close(f1);
close(f2);
readln
end.
1
0 / 0 / 0
Регистрация: 11.01.2010
Сообщений: 8
11.01.2010, 14:42 3
а нельзя ли ее решить с помощью процедур и без двумерных массивов?
0
Почетный модератор
64291 / 47589 / 32740
Регистрация: 18.05.2008
Сообщений: 115,181
11.01.2010, 14:54 4
aggressor92, Это задача на типизированные файлы массивов, так в задании. Если задан файл числового типа, то конечно никакие массивы не нужны. Кстати двухмерных массивов в программе и нет. Просто имеется много одномерных массивов - компонент файла.
0
0 / 0 / 0
Регистрация: 11.01.2010
Сообщений: 8
11.01.2010, 17:17 5
В данной лабораторной работе необходимо сделать типизированный файл, где каждой компонентой будет число, массив или матрица. Количество компонент заранее не определено, поэтому, при обработке файла необходимо использовать либо булевское значение функции EOF (конец файла), либо значение функции FILESIZE (размер файла).
Сами значения каждой компоненты можно задавать генератором случайных чисел.
Вывод исходного файла и файла с результатами сделать процедурой (и, если файлы одного типа, то одной процедурой).

это условия для решения задачи.
и в задаче сортировка одинаковая,если минимальное раньше максимального и наоборот. Можно её как-нибудь укоротить?
0
Почетный модератор
64291 / 47589 / 32740
Регистрация: 18.05.2008
Сообщений: 115,181
11.01.2010, 17:40 6
Цитата Сообщение от aggressor92 Посмотреть сообщение
где каждой компонентой будет число, массив или матрица
У Вас то конкретно какое задание?
0
0 / 0 / 0
Регистрация: 11.01.2010
Сообщений: 8
11.01.2010, 18:02 7
Создать файл, где компонентой будет массив из N чисел. Определить минимальное и максимальное значение в каждой компоненте (массиве) и числа, находящиеся между ними, рассортировать по убыванию. После сортировки каждую компоненту записать в новый файл. Ту компоненту, где максимальное и минимальное значения находятся наиболее близко друг к другу, удалить из файла.


как я понял, это массив из чисел.
0
Почетный модератор
64291 / 47589 / 32740
Регистрация: 18.05.2008
Сообщений: 115,181
11.01.2010, 19:12 8
aggressor92, Это типизированный файл массивов.
Pascal
1
2
3
type 
mass=array[1..100] of integer;
typefile=file of mass;
0
0 / 0 / 0
Регистрация: 11.01.2010
Сообщений: 8
11.01.2010, 20:18 9
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
procedure Vivod(var f: Tmas);
var
  a: Tmas;
  c, i: integer;
begin
  Reset(f1);
  c := 1;
  while (not (Eof(f1))) do
  begin
    read(f1,a);
    write(c:3);
    for i:=1 to n do
      write(a[i]:3);
    inc(c);
writeln;
  end;
  Close(f1);
end;
я попробовал создать процедуру для вывода к программе. Не могли бы Вы изменить свою программу с помощью похожей процедуры.
0
11.01.2010, 20:18
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.01.2010, 20:18
Помогаю со студенческими работами здесь

Создать файл, где каждой компонентой будет массив из 6 чисел
Создать файл, где каждой компонентой будет массив из 6 чисел. Определить минимальное значение в...

Создать файл, где компонентой будет массив из N чисел. Переставить местами числа в каждой компоненте попарно
Тема - файлы Создать файл, где компонентой будет массив из N чисел. Переставить...

Создать файл, где компонентой будет матрица
В данной лабораторной работе необходимо сделать типизированный файл, где каждой компонентой будет...

Создать файл, где компонентой будет матрица из N строк и N столбцов (квадратная)....
В данной лабораторной работе необходимо сделать типизированный файл, где каждой компонентой будет...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru