Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 12.05.2015
Сообщений: 10
1

Строки. Очереди. Проверка на пробел

04.06.2015, 00:10. Показов 1333. Ответов 15
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый вечер, нужно сделать, чтобы в edit можно было вводить только двузначные числа, при этом через пробел. Есть идея считывать первые 3 символа, отнимать 1, как пробел и увеличивать счетчик, но в коде реализовать пока не могу,помогите пожалуйста, вот программа
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
187
188
189
190
191
192
193
194
195
196
197
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, XPMan;
 
type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Label2: TLabel;
    Label3: TLabel;
    Button2: TButton;
    Label4: TLabel;
    Button3: TButton;
    Label5: TLabel;
    XPManifest1: TXPManifest;
    Label6: TLabel;
    Button4: TButton;
    Label7: TLabel;
    Edit2: TEdit;
    Label8: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Edit1KeyPress(Sender: TObject; var Key: Char);
    procedure Edit2KeyPress(Sender: TObject; var Key: Char);
    procedure Button4Click(Sender: TObject);
 
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
  type
  TItem=integer;
  PNode=^Node;
 
  Node=record
    data: TItem;
    next: PNode;
  end;
 
var
  Form1: TForm1;
 
var list, alist, ilist, llist, aalist, iilist : pnode;
    s, v                                      : integer;
    a, b, c, k, t                             : integer;
 
implementation
 
{$R *.dfm}
 
 
Procedure make(var work, wor: Pnode; x: Titem);
begin
  new(work);
  work^.data:=x;
  work^.next:=nil;
  wor:=work;
end;
 
 
procedure insertn(var work, wor: pnode; x: titem);
var work1: pnode;
begin
  new(work1);
  work1^.data:=x;
  work1^.next:=Nil;
  work^.next:=work1;
  work:=work1;
end;
 
 
procedure deln(var work, wor: pnode; var y: titem);
var work1: Pnode;
begin
  work1:=wor;
  wor:=work1^.next;
  work1^.next:=nil;
  y:=Work1^.data;
  dispose(work1);
end;
 
 
procedure TForm1.Button1Click(Sender: TObject);
var n, i : integer;
begin
  s:=length(Edit1.Text);
  v:=length(Edit2.Text);
  k:=0;
  t:=0;
  a:=StrToInt(Edit1.Text[1]);
  b:=StrToInt(Edit2.Text[1])*10+StrToInt(Edit2.Text[2]);
  make(list,llist, a);
  make(alist,aalist, b);
  for i:=2 to s do
    begin
      if Edit1.Text[i]<>' ' then
        begin
          a:=StrToInt(Edit1.Text[i]);
          insertn(list, llist, a);
          k:=k+1;
        end;
    end;
  n:=3;
  while n<=v do
    begin
      if Edit2.Text[n]<>' ' then
      //while edit2.Text do
 
        begin
          b:=StrToInt(Edit2.Text[n])*10+StrToInt(Edit2.Text[n+1]);
          insertn(alist,aalist, b);
          n:=n+2;
          t:=t+1;
        end
      else
        begin
          n:=n+1;
        end;
    end;
end;
 
 
procedure TForm1.Button2Click(Sender: TObject);
begin
  Close;
end;
 
 
procedure TForm1.Button3Click(Sender: TObject);
begin
  while (llist<>nil) and (aalist<>nil) and (iilist<>nil) do
    begin
      deln(alist,aalist,b);
      deln(list,llist,a);
      deln(ilist,iilist,c);
    end;
  Edit1.Text:='';
  Edit2.Text:='';
  Label5.Caption:='';
  Label10.Caption:='';
  Label8.Caption:='';
end;
 
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if not ( key in ['0'..'9', #8, #32]) then key:=#0;
end;
 
procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
  if not ( key in ['0'..'9', #8, #32]) then key:=#0;
end;
 
 
procedure TForm1.Button4Click(Sender: TObject);
var flag: boolean;
begin
  if k<>t then
    begin
      ShowMessage('Неравное число элементов очередей');
      exit;
    end;
      flag:= false;
      while (llist<>nil) and (aalist<>nil) do
        begin
          deln(alist,aalist,b);
          deln(list,llist,a);  c:=a*b;
          if flag then
            insertn(ilist,iilist,c)
          else
          begin
            make(ilist,iilist,a*b);
            flag:=true;
          end;
          Label8.Caption:=Label8.Caption+IntToStr(a)+' ';
          Label5.Caption:=Label5.Caption+IntToStr(b)+' ';
         
 
 
        end;
      while iilist<>nil do
        begin
           deln(ilist,iilist,c);
           Label10.Caption:=Label10.Caption+IntToStr(c)+' ';
 
        end;
    end;
end.
само решение в button1 click, по идее лучше сделать там, где комментарий с циклом while, но выслушаю любые идеи
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.06.2015, 00:10
Ответы с готовыми решениями:

Найдите суммарную длину строк, принадлежащих очереди, кроме первой строки очереди
Создать очередь строковых значений, для реализации используя односвязные списки.Реализовать...

Проверка очереди на переполнение
Есть очередь Queue queue_block = new Queue(); Как можно проверить, если в очереди определенное...

Очереди, проверка на равенство
Проверить на равенство две очередиuses crt; type exo = ^ o; o = record data:...

Вывести первое слово строки, если первый символ строки-пробел
uses crt; var s1, s2, s3, s4 : string; k, n, i : byte; a : set of char; ch : char; begin s2...

15
пофигист широкого профиля
4739 / 3172 / 860
Регистрация: 15.07.2013
Сообщений: 18,280
04.06.2015, 00:45 2
Цитата Сообщение от strong__cat Посмотреть сообщение
чтобы в edit можно было вводить только двузначные числа, при этом через пробел
Зачем, если не секрет?
0
0 / 0 / 0
Регистрация: 12.05.2015
Сообщений: 10
04.06.2015, 00:46  [ТС] 3
Потому что если ввести 3ех значное число или другое выдает ошибку
0
пофигист широкого профиля
4739 / 3172 / 860
Регистрация: 15.07.2013
Сообщений: 18,280
04.06.2015, 00:55 4
Цитата Сообщение от strong__cat Посмотреть сообщение
Потому что если ввести 3ех значное число или другое выдает ошибку
Кто выдает? Папа Карло?
0
0 / 0 / 0
Регистрация: 12.05.2015
Сообщений: 10
04.06.2015, 00:59  [ТС] 5
Строки. Очереди. Проверка на пробел

делфи...
0
пофигист широкого профиля
4739 / 3172 / 860
Регистрация: 15.07.2013
Сообщений: 18,280
04.06.2015, 01:10 6
Нужен архив с самим проектом. Иначе "навскидку" не понятно где сия ошибка возникает.
0
2733 / 1708 / 778
Регистрация: 23.03.2015
Сообщений: 5,409
04.06.2015, 01:11 7
strong__cat,

Может использовать StringGrid для ввода чисел?
0
Заблокирован
04.06.2015, 01:16 8
а зачем вводить 2 числа в edit?
может, взять 2 edit?
или 2 spinedit?
или 2 maskedit?
или проверять введённое на правильность перед использованием, а не во время ввода?

автор, чо за балет?
0
0 / 0 / 0
Регистрация: 12.05.2015
Сообщений: 10
04.06.2015, 13:12  [ТС] 9
Вот архив
Вложения
Тип файла: rar Очереди.rar (605.7 Кб, 4 просмотров)
0
Заблокирован
04.06.2015, 13:24 10
Цитата Сообщение от strong__cat Посмотреть сообщение
Вот архив
На мои вопросы ты отвечать будешь или нет?
0
0 / 0 / 0
Регистрация: 12.05.2015
Сообщений: 10
04.06.2015, 13:26  [ТС] 11
1)Логично, что проверку делать нужно перед решением.
2) ну такой вот балет
0
Заблокирован
04.06.2015, 13:32 12
Цитата Сообщение от strong__cat Посмотреть сообщение
ну такой вот балет
а зачем так? чтобы было неудобно?
почему бы сразу не сделать хорошо, красиво и быстро, а?
0
0 / 0 / 0
Регистрация: 12.05.2015
Сообщений: 10
04.06.2015, 13:33  [ТС] 13
Цитата Сообщение от Verevkin Посмотреть сообщение
почему бы сразу не сделать хорошо, крисиво и быстро, а?
умел бы делать красиво и быстро - сделал бы именно так
0
Заблокирован
04.06.2015, 13:36 14
ты бы, хоть, описал задачу-то: что надо вводить и в переменные каких типов записать.
0
0 / 0 / 0
Регистрация: 12.05.2015
Сообщений: 10
04.06.2015, 13:37  [ТС] 15
Условие задачи: Есть 2 очереди однозначных и двузначных чисел.Перемножить соответсвующие элементы 2ух очередей и вывести результат в 3ю очередь.
0
Заблокирован
04.06.2015, 13:43 16
Цитата Сообщение от strong__cat Посмотреть сообщение
Условие задачи: Есть 2 очереди однозначных и двузначных чисел.Перемножить соответсвующие элементы 2ух очередей и вывести результат в 3ю очередь.
Это тут причём?
что надо вводить и в переменные каких типов записать.
0
04.06.2015, 13:43
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.06.2015, 13:43
Помогаю со студенческими работами здесь

Проверка наличия переменной, в имени которой есть пробел
Всегда ломал себе голову - можно ли как то проверить на предмет If Defined наличие значения в...

Проверка очереди получения сообщений в TCP
Всем доброго времени суток! Подскажите, пожалуйста, ест ли какой нибудь метод в TCP, который...

Из заданной пользователем строки сформулируйте новую, добавив пробел перед каждым символом строки кроме пробела
Из заданной пользователем строки сформулируйте новую, добавив пробел перед каждым символом строки...

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


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru