Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
DeathKorps
0 / 0 / 0
Регистрация: 18.03.2016
Сообщений: 96
#1

Определить наибольший четный компонент файла и наименьший нечетный

28.04.2016, 10:26. Просмотров 849. Ответов 4
Метки нет (Все метки)

Задание. Создать типизированный файл, содержащий целые числа. Взяв за основу файл целых чисел, определить наибольший четный компонент файла и наименьший нечетный.
Не могу понять как сделать программу.Пытался сделать через массив,но не могупонять как работать с типизированными файлами.Желательно с комментариями.
Delphi
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
interface
 
uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Menus,Math;
 
type
temp=record
   end;
 
  TForm1 = class(TForm)
    Memo1: TMemo;
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    N4: TMenuItem;
    N5: TMenuItem;
    N6: TMenuItem;
    N7: TMenuItem;
    N8: TMenuItem;
    procedure N2Click(Sender: TObject);
 
    procedure N3Click(Sender: TObject);
 
 
    procedure N6Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
 
 
 
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
  f:file of temp;
  mas:array[1..100] of integer;
  p:integer;
 
  naibcel:integer; //Наибольшее четное число
  naimnechet:integer;// Наименьшее нечетное число
implementation
 
{$R *.dfm}
 
 
 
 
procedure TForm1.FormCreate(Sender: TObject);
begin
AssignFile(f,'temp.txt');
end;
 
procedure TForm1.N2Click(Sender: TObject); //Создаем файл
begin
 rewrite(f); //Используется для открытия файла в режиме записи
closefile(f); //Закрываем файл
end;
 
procedure TForm1.N3Click(Sender: TObject); //Кнопка вывода
 
var s:string;
a,i:integer;
begin
 
rewrite(f);
    Randomize;
Memo1.Lines.Clear;
s:='';
    for a := 1 to 100 do
begin
i:=RandomRange(1,100);
mas[a]:=i;
s:= s + floattostr(mas[a])+ ' ';
  end;
 Memo1.Lines.Add(s);
 write(f,p);
 closefile(f);
end;
 
 
 
 
 
 
 
procedure TForm1.N6Click(Sender: TObject);//Наибольший четный компонент
begin
reset(f);
while not  eof(f) do
begin
  read(f,p);
 
end;
end;
 
 
end.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.04.2016, 10:26
Ответы с готовыми решениями:

Найти минимальный и максимальный четный и нечетный
Даны n ненулевых целочисленных элементов Найти минимальный и максимальный...

Найти наибольший и наименьший из компонентов файла целых чисел
Дан файл f, компоненты которого являются целыми числами. Найти наибольший и...

Выделить слова по порядковому номеру: четный, нечетный в любой комбинации
Дана строка, состоящая из слов, разделенных пробелами. Выделить слова по...

Даны n ненулевых целочисленных элементов Найти минимальный и максимальный четный и нечетный из них
Даны n ненулевых целочисленных элементов Найти минимальный и максимальный...

Дан список. Составить процедуру, которая выводит первый четный и последний нечетный элементы
Дан список. Составить процедуру, которая выводит первый четный и последний...

4
Sergio Leone
2467 / 1112 / 579
Регистрация: 07.06.2014
Сообщений: 3,259
30.04.2016, 00:16 #2
Цитата Сообщение от DeathKorps Посмотреть сообщение
Создать типизированный файл, содержащий целые числа.
описать переменную надо так:
Delphi
1
var f : file of Integer;
создать
Delphi
1
2
AssignFile(f, 'D:\MyFile.bin');
Rewrite(f);
записать 10 случайных чисел от нуля до 99 в файл и закрыть его:
Delphi
1
2
3
4
5
for i:=1 to 10 do begin
  m := Random(100);
  Write(f, m);
end;
CloseFile(f);
ещё вопросы?
0
DeathKorps
0 / 0 / 0
Регистрация: 18.03.2016
Сообщений: 96
01.05.2016, 03:33  [ТС] #3
Спасибо что отозвались.Вопросов много.Я попытался исправить код.В итоге 13 ошибок.Я увяз в своем быдлокоде потому что не понимаю как выполнить задание целиком
1.Создать типизированный файл если посмотрите мой код,то при условии ваших поправок у меня скорее всего будут ошибки.
Вы написали что нужно присвоить var f : file of Integer; ,но как я рисов если в
type
У меня присваивание
temp=record
Я думал только temp можно присвоить.То есть
f : file of temp
2.Как мне найти Наибольший четный компонент через полученный массив в Memo.list.
Delphi
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
111
112
113
interface
 
uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Menus,Math;
 
type
temp=record
mas:array[1..100] of integer;
   end;
 
  TForm1 = class(TForm)
    Memo1: TMemo;
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    N4: TMenuItem;
    N5: TMenuItem;
    N6: TMenuItem;
    N7: TMenuItem;
    N8: TMenuItem;
    Edit1: TEdit;
    procedure N2Click(Sender: TObject);
 
    procedure N3Click(Sender: TObject);
 
 
    procedure N6Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure N4Click(Sender: TObject);
 
 
 
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
  f:file of integer;
  mas:array[1..100] of integer;
  p:temp;
  s:string;
 
implementation
 
{$R *.dfm}
 
 
 
 
procedure TForm1.FormCreate(Sender: TObject);
begin
AssignFile(f,'temp.txt');
end;
 
procedure TForm1.N2Click(Sender: TObject); //Создаем файл
begin
 rewrite(f); //Используется для открытия файла в режиме записи
closefile(f); //Закрываем файл
end;
 
procedure TForm1.N3Click(Sender: TObject); //Кнопка вывода
 
var
a,i:integer;
begin
 
rewrite(f);
    Randomize;
Memo1.Lines.Clear;
s:='';
    for a := 1 to 100 do
begin
i:=RandomRange(1,100);
p.mas[a]:=i;
s:= s + floattostr(p.mas[a])+ ' ';
  end;
 Memo1.Lines.Add(s);
 closefile(f);
end;
 
 
 
 
 
 
 
 
 
procedure TForm1.N6Click(Sender: TObject);//Наибольший четный компонент
var
max,min: integer;
begin
reset(f);
max:=0;
min:=100;
while not eof(f) do
  begin
  read(f, p);
  if p.mas mod(2)=0 then
  begin
    if p.mas>max then max:=p.mas;
  closefile(f);
 
  end;
  end;
 showMessage(IntToStr(p.mas));
end;
end.
0
Puporev
Модератор
54221 / 41854 / 28923
Регистрация: 18.05.2008
Сообщений: 98,534
01.05.2016, 09:30 #4
Лучший ответ Сообщение было отмечено DeathKorps как решение

Решение

Цитата Сообщение от DeathKorps Посмотреть сообщение
Создать типизированный файл, содержащий целые числа. Взяв за основу файл целых чисел, определить наибольший четный компонент файла и наименьший нечетный.
Delphi
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
const fname='fileF';//имя файла
var
  Form1: TForm1;
  f:file of integer; //типизированный файл целого типа
implementation
 
{$R *.dfm}
//создание файла
procedure TForm1.Button1Click(Sender: TObject);
var a,i:integer;
begin
randomize;
assignfile(f,fname);
rewrite(f);
for i:=1 to 15 do
 begin
  a:=-50+random(101);
  write(f,a);
 end;
ShowMessage('Файл создан')
end;
//чтение файла и решение задачи
procedure TForm1.Button2Click(Sender: TObject);
var a,mn,mx,kc,kn:integer;
begin
if not fileexists(fname) then
 begin
  ShowMessage('Файл еще не создан, вернитесь к пункту 1');
  exit
 end;
Memo1.Clear;
seek(f,0);
kc:=0;//четные
kn:=0; //нечетные
while not eof(f) do
 begin
  read(f,a);
  Memo1.Lines.Add(inttostr(a));
  if odd(a)then
   begin
    if kn=0 then
     begin
      kn:=1;
      mn:=a
     end
    else if a<mn then mn:=a;
   end
  else
   begin
    if kc=0 then
     begin
      kc:=1;
      mx:=a
     end
    else if a>mx then mx:=a;
   end
 end;
closefile(f);
if kn=0 then Memo1.Lines.Add('Нечетных элементов нет')
else Memo1.Lines.Add('Минимум из нечетных='+inttostr(mn));
if kc=0 then Memo1.Lines.Add('Четных элементов нет')
else Memo1.Lines.Add('Максимум из четных='+inttostr(mx));
end;
1
DeathKorps
0 / 0 / 0
Регистрация: 18.03.2016
Сообщений: 96
01.05.2016, 15:38  [ТС] #5
Спасибо.Код отличный. Уже не первый раз выручаете.
0
01.05.2016, 15:38
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.05.2016, 15:38

Поменять в последовательности местами наибольший и наименьший, наибольший и последний члены
Даны действительные числа а1...а20 (все числа попарно различны). Поменять в...

Сформировать очередь. Извлечь из очереди все элементы, определить наибольший и наименьший элементы
Сформировать очередь. Извлечь из очереди все элементы, определить наибольший и...

Если индекс элемента массива четный, то элемент возвести в квадрат, если нечетный – удвоить
Дан одномерный массив размерности 20. Заполнить его случайными числами на...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru