23 / 12 / 2
Регистрация: 20.04.2011
Сообщений: 382
1
Delphi 6-7

как проверить массив на условие, что в нём уже есть все цифры от 0 до 100

19.06.2018, 11:36. Показов 1275. Ответов 10
Метки нет (Все метки)

одномерный массив:

Delphi
1
ee: Array[0..999] of Integer;
некоторые елементы заполнены цифрами от 0 до 100

как проверить, что в массиве уже весь набор цифр от 0 до 100 или ещё не весь?

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.06.2018, 11:36
Ответы с готовыми решениями:

Дано натуральное число Определить: а) есть ли в нём цифра 3? б) есть ли в нём цифры 2 и 5?
Дано натуральное число. Определить: а) есть ли в нём цифра 3? б) есть ли в нём цифры 2 и 5?

Как задать условие проверки того, что вводимое название листа уже есть в этой книге? (Да-да, я не шучу)
Простецкую лабу по VBA нужно усложнить тем, чтобы в случае того, что при создании листа расчета и...

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

Найти все целые числа из промежутка 1 до 100 в десятичной записи которых есть цифры 7
Поясните пожалуйста код, добавьте комментарии. Program rb_3; var a,b,c:integer begin for...

10
Модератор
8107 / 5371 / 2213
Регистрация: 21.01.2014
Сообщений: 23,077
Записей в блоге: 3
19.06.2018, 11:43 2
Отсортировать по возрастанию и пробежаться циклом от 0 до 100. Если ee[i] <> i - значит условие не выполнено...
1
Почетный модератор
64256 / 47556 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
19.06.2018, 11:54 3
Так не пойдет, потому что наверное может быть несколько одинаковых чисел, например 2 ноля.
0
23 / 12 / 2
Регистрация: 20.04.2011
Сообщений: 382
19.06.2018, 11:58  [ТС] 4
и как быть?
а если заранее заполнить все элементы например цифрой 2222
ноль тогда будет определятся?
0
Почетный модератор
64256 / 47556 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
19.06.2018, 12:11 5
Придется пройтись по всему массиву и если элемент входит в множество [0..100] и еще не входит в объявленное множество M считаем его и добавляем в множество М. Если количество=101, то все есть.

Добавлено через 9 минут
Что-то я как обычно через зад написал.
Заводим множество M:=[0..100]
Проходим по массиву, если элемент есть в множестве, исключаем его. Если в конце M=[] то все есть.
0
23 / 12 / 2
Регистрация: 20.04.2011
Сообщений: 382
19.06.2018, 12:17  [ТС] 6
весь код собственно:

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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
unit Unit1;
 
interface
// Copyright:  rhouland@epastas.lt  2018.06.19
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, jpeg, ExtCtrls, StdCtrls;
 
type
  TForm1 = class(TForm)
    Image1: TImage;
    Button1: TButton;
    Label1: TLabel;
    Label2: TLabel;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Edit1: TEdit;
    Button5: TButton;
    Button6: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
var ss,ms,mm,ss2,ms2,mm2: String;
var int, a, x, y, z, v, ii, pp: integer;
hours, mins, secs, milliSecs : Word;
var flag:boolean;
ee: Array[0..999] of Integer;
res: set of 0..100;
 
t: TStream;
i:integer;
m: array[1..999] of integer;
f: textfile;
{ Name_g : array[1..255,1..255] of string;  }
 
implementation
 
type
  TMEdit = class(TEdit)
    procedure CreateParams(var Params: TCreateParams); override;
  end;
 
{ TMEdit }
 
procedure TMEdit.CreateParams(var Params: TCreateParams);
begin
  inherited;
  Params.Style := Params.Style or ES_CENTER;
end;
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
begin
// забираем цифру из миллисекундного таймера
 
x:=x+1;
ms:=IntToStr(x);
Label2.Caption:=ms;
 
DecodeTime(now, hours, mins, secs, milliSecs);
RandSeed := milliSecs;
begin
int := 0 + Random(100);
end;
a:= int;
ee[x]:=a;
ss:=IntToStr(a);
Label1.Caption:=ss;
 
// проверка массива
 
begin
res := [];
for ii := 0 to 999 do res := res + [ee[ii]];
if res = [0..100] then pp:=2 else pp:=1
end;
 
if pp=2 then begin
Application.MessageBox('В Масиве уже все Элементы!.','Внимание!', 0)
 
end;
 
end;
 
 
procedure TForm1.FormCreate(Sender: TObject);
begin
Label1.Caption:=':';
Label2.Caption:=':';
x:=0;
Edit1.Text:='0';
ee[0]:=2222;
PPointer(Edit1)^ := TMEdit;
end;
 
procedure TForm1.Button2Click(Sender: TObject);
begin
pp:=0;
Label1.Caption:=':';
Label2.Caption:=':';
x:=0;
Edit1.Text:='0';
FillChar(ee, SizeOf(ee), 0);  // очистка
end;
 
procedure TForm1.Button5Click(Sender: TObject);
begin
// показать массив номером:
Label1.Caption:='';
Label2.Caption:='';
mm:=Edit1.Text;
y:=StrToInt(mm);
ss2:=mm;
z:=ee[y];
ms2:=IntToStr(z);
Label1.Caption:=ms2;
Label2.Caption:=ss2;
 
end;
 
procedure TForm1.Button3Click(Sender: TObject);
begin
Label1.Caption:='';
Label2.Caption:='';
mm:=Edit1.Text;
y:=StrToInt(mm);
y:=y-1;
mm2:=IntToStr(y);
Edit1.Text:=mm2;
ss2:=mm2;
z:=ee[y];
ms2:=IntToStr(z);
Label1.Caption:=ms2;
Label2.Caption:=ss2;
end;
 
procedure TForm1.Button4Click(Sender: TObject);
begin
Label1.Caption:='';
Label2.Caption:='';
mm:=Edit1.Text;
y:=StrToInt(mm);
y:=y+1;
mm2:=IntToStr(y);
Edit1.Text:=mm2;
ss2:=mm2;
z:=ee[y];
ms2:=IntToStr(z);
Label1.Caption:=ms2;
Label2.Caption:=ss2;
end;
 
procedure TForm1.Button6Click(Sender: TObject);
begin
  t := TMemoryStream.Create;
    for i:= 1 to 999 do
      m[i]:= ee[i];
        begin
          AssignFIle(F,'info.txt');
          Rewrite(f);
            for i := 1 to 999 do begin
            Writeln(f,i,' = ',m[i],';');
            end;
          CloseFile(f);
        end;
      t.Free;
end;
 
end.
0
Модератор
8107 / 5371 / 2213
Регистрация: 21.01.2014
Сообщений: 23,077
Записей в блоге: 3
19.06.2018, 12:18 7
rolandas, проверьте вариант. Писал без Дельфи, могут ошибки синтаксические быть...
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
uses ..., Math;
 
function Sort(L: TStringList; i1, i2: integer): integer;
begin
 result := CompareValue(StrToInt(L.Strings[i1]), StrToInt(L.Strings[i2]));
end;
 
procedure TForm1.Button1Click(Sender: TObject);
var ee: array[0..999] of integer;
    L: TStringList;
    i: integer;
    b: boolean;
begin
 L := TStringList.Create;
 for i := Low(ee) to High(ee) do
  if L.IndexOf(IntToStr(ee[i])) = -1 then L.Add(IntToStr(ee[i]));
 L.CustomSort(Sort);
 b := true;
 if (L.Count >= 101) then
  for i := 0 to 100 do
   begin
     b := StrToInt(L.Strings[i]) = i;
     if not b then break;
   end;
 if (L.Count < 101) or (not b) then ShowMessage('Не все') else ShowMessage('Все');
 L.Free;
end;
1
Почетный модератор
64256 / 47556 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
19.06.2018, 12:22 8
Лучший ответ Сообщение было отмечено rolandas как решение

Решение

А если с множеством, то как я написал второй раз.
Delphi
1
2
3
4
res:=[0..100];
for i:=0 to 999 do
if ee[i] in res then exclude(res,ee[i]);
if res=[] then Application.MessageBox('В массиве уже все элементы!.','Внимание!', 0)
1
23 / 12 / 2
Регистрация: 20.04.2011
Сообщений: 382
19.06.2018, 12:53  [ТС] 9
массив заполнилься полным набором. проверис в записи текстовом файле.
но сообщения не было как заполнилься;

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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, jpeg, ExtCtrls, StdCtrls;
 
type
  TForm1 = class(TForm)
    Image1: TImage;
    Button1: TButton;
    Label1: TLabel;
    Label2: TLabel;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Edit1: TEdit;
    Button5: TButton;
    Button6: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
var ss,ms,mm,ss2,ms2,mm2: String;
var int, a, x, y, z, v, ii, pp: integer;
hours, mins, secs, milliSecs : Word;
var flag:boolean;
ee: Array[0..999] of Integer;
res: set of 0..100;
 
t: TStream;
i:integer;
m: array[1..999] of integer;
f: textfile;
{ Name_g : array[1..255,1..255] of string;  }
 
implementation
 
type
  TMEdit = class(TEdit)
    procedure CreateParams(var Params: TCreateParams); override;
  end;
 
{ TMEdit }
 
procedure TMEdit.CreateParams(var Params: TCreateParams);
begin
  inherited;
  Params.Style := Params.Style or ES_CENTER;
end;
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
begin
 
x:=x+1;
ms:=IntToStr(x);
Label2.Caption:=ms;
 
DecodeTime(now, hours, mins, secs, milliSecs);
RandSeed := milliSecs;
begin
int := 0 + Random(100);
end;
a:= int;
ee[x]:=a;
ss:=IntToStr(a);
Label1.Caption:=ss;
 
begin
//res := [];
//for ii := 0 to 999 do res := res + [ee[ii]];
//if res = [0..100] then pp:=2 else pp:=1
//end;
//if pp=2 then begin
//Application.MessageBox('Masyvas pasiekė pilną rinkinį!.','Dėmesio!', 0)
 
res:=[0..100];
for ii:=0 to 999 do
if ee[ii] in res then exclude(res,ee[ii]);
if res=[] then Application.MessageBox('В массиве уже все элементы!.','Внимание!', 0)
 
 
end;
 
end;
 
 
procedure TForm1.FormCreate(Sender: TObject);
begin
Label1.Caption:=':';
Label2.Caption:=':';
x:=0;
Edit1.Text:='0';
ee[0]:=2222;
PPointer(Edit1)^ := TMEdit;
end;
 
procedure TForm1.Button2Click(Sender: TObject);
begin
pp:=0;
Label1.Caption:=':';
Label2.Caption:=':';
x:=0;
Edit1.Text:='0';
FillChar(ee, SizeOf(ee), 0); 
end;
 
procedure TForm1.Button5Click(Sender: TObject);
begin
//atkurti nurodyto masyvo reiksme:
Label1.Caption:='';
Label2.Caption:='';
mm:=Edit1.Text;
y:=StrToInt(mm);
ss2:=mm;
z:=ee[y];
ms2:=IntToStr(z);
Label1.Caption:=ms2;
Label2.Caption:=ss2;
 
end;
 
procedure TForm1.Button3Click(Sender: TObject);
begin
Label1.Caption:='';
Label2.Caption:='';
mm:=Edit1.Text;
y:=StrToInt(mm);
y:=y-1;
mm2:=IntToStr(y);
Edit1.Text:=mm2;
ss2:=mm2;
z:=ee[y];
ms2:=IntToStr(z);
Label1.Caption:=ms2;
Label2.Caption:=ss2;
end;
 
procedure TForm1.Button4Click(Sender: TObject);
begin
Label1.Caption:='';
Label2.Caption:='';
mm:=Edit1.Text;
y:=StrToInt(mm);
y:=y+1;
mm2:=IntToStr(y);
Edit1.Text:=mm2;
ss2:=mm2;
z:=ee[y];
ms2:=IntToStr(z);
Label1.Caption:=ms2;
Label2.Caption:=ss2;
end;
 
procedure TForm1.Button6Click(Sender: TObject);
begin
  t := TMemoryStream.Create;
    for i:= 1 to 999 do
      m[i]:= ee[i];
        begin
          AssignFIle(F,'info.txt');
          Rewrite(f);
            for i := 1 to 999 do begin
            // Writeln(f,i,' = ',m[i],';');
            Writeln(f,m[i],';');
            end;
          CloseFile(f);
        end;
      t.Free;
end;
 
end.
0
5363 / 4196 / 1365
Регистрация: 14.04.2014
Сообщений: 19,047
Записей в блоге: 18
19.06.2018, 13:26 10
Цитата Сообщение от D1973 Посмотреть сообщение
Если ee[i] <> i
лучше модифицировать
если E[i+1] - E[i] > 1
0
23 / 12 / 2
Регистрация: 20.04.2011
Сообщений: 382
19.06.2018, 13:33  [ТС] 11
всем спасибо, заработало.
ошибка скрывалась в превышении диапазона.

надо было: res: set of 0..99;
и res:=[0..99];

вместо 99 было 100.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.06.2018, 13:33
Помогаю со студенческими работами здесь

как проверить, что введенные пользователем цифры - это действительно цифры через function?
Добрый вечер, Только начала изучать javascript , и каша в голове с функциями. Мне нужно было...

как проверить, что введенные пользователем цифры - это действительно цифры через function?
Добрый вечер, Только начала изучать javascript , и каша в голове с функциями. Мне нужно было...

Массив. Если среди элементов массива есть хотя бы одно число больше 100, то все элементы массива поделить на 100
Помогите пожалуйста. Дан массив действительных чисел а1,…, аn. Если среди элементов массива есть...

Проверить, что в целом числе все цифры больше 4-х
А кто-нибудь знает, что подразумевается под этим заданием и как его делать? Задача:Написать...


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

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

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