Форум программистов, компьютерный форум, киберфорум
Наши страницы

Lazarus

Войти
Регистрация
Восстановить пароль
 
КатяКом
0 / 0 / 0
Регистрация: 16.12.2015
Сообщений: 19
#1

Выведение числа из списка - Lazarus

08.06.2016, 02:07. Просмотров 212. Ответов 3

Заполнить вручную список числами. При этом числа, уже встречающиеся в списке, вновь вставить в него нельзя. При выделении числа с списке должно появляться произведение ненулевых цифр в этом числе. По нажатию на кнопку разделить список на два, чтобы в один попали числа с простой суммой цифр, а в другой остальные.

Заполняю список, прописываю выведение произведения, выдает ошибку не могу понять почему и помогите, пожалуйста, еще разделить правильно список на два

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
unit Unit1;
 
{$mode objfpc}{$H+}
 
interface
 
uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;
 
type
 
  { TForm1 }
 
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Edit1: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    ListBox1: TListBox;
    ListBox2: TListBox;
    ListBox3: TListBox;
    ListBox4: TListBox;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
 
 
 
    procedure ListBox1Click(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.lfm}
 
{ TForm1 }
 
procedure TForm1.Button1Click(Sender: TObject);
var s:string;
begin
s:=edit1.text;
listbox1.items.Add(s);
edit1.clear;
edit1.SetFocus;
end;
 
procedure TForm1.Button2Click(Sender: TObject);
var max,i,n,k,j: integer;
begin
listbox3.items.clear;
for i:=0 to ListBox1.count-1 do
begin
n:=strtoint(ListBox1.Items[i]);
max:=strtoint(Listbox1.items[1]);
for j:=1 to n do
if max<n then
max:=strtoint(Listbox1.items[i]);
listbox3.items.add(inttostr(max));
end;
end;
procedure TForm1.ListBox1Click(Sender: TObject);
var
  i,s,j,p:integer;
begin
listbox2.items.clear;
p:=StrToInt(ListBox1.Items[ListBox1.ItemIndex]);
begin
for j:= 1 to p do
begin
s:=1;
for i:=1 to length (p) do
if ord(p)-ord('0')>0 then s:=s*(ord(p)-ord('0'));
ListBox2.Items.Add(IntToStr(s));
end;
end;
 
 end;
end.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.06.2016, 02:07
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Выведение числа из списка (Lazarus):

Обработка XML и выведение данных в таблицу - Delphi
Добрый день! Дорогие форумчане, есть задание Составить и вывести на экран список работников (фамилия, имя, отчество, ИНН) имеющих...

Опрос серверов CS 1.6 из списка и выведение статуса - PHP Сети
Всем доброго вечера. В общем есть файл servers.txt, там записаны IP-адреса серверов CS 1.6 (каждая с новой строки). Надо сделать...

Выведение списка заголовков всех окон с рабочего стола - C++ WinAPI
Здравствуйте всем, требуется помощь по выведению списка всех существующих на рабочем столе окон (их заголовки). Использовать для этого...

Выведение индекса числа в массиве - Pascal ABC
Помогите с задачкой. Массив 4*9, заполняется числами от 1 до 36 в порядке возрастания. Нужно вывести на экран номер строки в которой...

Выведение индекса числа в массиве - Turbo Pascal
Помогите с задачкой. Массив 4*9, заполняется числами от 1 до 36 в порядке возрастания. Нужно вывести на экран номер строки в которой...

Задание: выведение числа замен - Delphi
Процедура Р заменяет значением F(Z) каждый отрицательный элемент z, который идет вслед за положительным, и подсчитайте число замен.В каждой...

3
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
24007 / 15988 / 4836
Регистрация: 22.10.2011
Сообщений: 28,280
Записей в блоге: 5
08.06.2016, 09:42 #2
length (p), где p - целое число? Так не работает. Либо нужно перевести число в строку, и потом уже проходить по ней от 1-го символа до последнего, либо использовать цикл
Pascal
1
2
3
4
5
while p > 0 do
begin
  if p mod 10 > 0 then s := s * (p mod 10);
  p := p div 10;
end;
1
КатяКом
0 / 0 / 0
Регистрация: 16.12.2015
Сообщений: 19
08.06.2016, 11:32  [ТС] #3
Почему если я так пишу у меня выводит несколько строк поочередного умножения, не могу сделать так чтобы выводил сразу только конечный результат
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
procedure TForm1.Button1Click(Sender: TObject);
var s:string;
begin
s:=edit1.text;
listbox1.items.Add(s);
edit1.clear;
edit1.SetFocus;
end;
 
procedure TForm1.Button2Click(Sender: TObject);
var max,i,n,k,j: integer;
begin
listbox3.items.clear;
for i:=0 to ListBox1.count-1 do
begin
n:=strtoint(ListBox1.Items[i]);
max:=strtoint(Listbox1.items[1]);
for j:=1 to n do
if max<n then
max:=strtoint(Listbox1.items[i]);
listbox3.items.add(inttostr(max));
end;
end;
procedure TForm1.ListBox1Click(Sender: TObject);
var
  i,s,j,p:integer;
begin
listbox2.items.clear;
p:=StrToInt(ListBox1.Items[ListBox1.ItemIndex]);
begin
for j:= 1 to p do
begin
s:=1;
while p>0 do
begin
if p mod 10>0 then s:=s*(p mod 10);
 p:=p div 10;
ListBox2.Items.Add(IntToStr(s));
end;
end;
 end;
end;
end.
0
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
24007 / 15988 / 4836
Регистрация: 22.10.2011
Сообщений: 28,280
Записей в блоге: 5
08.06.2016, 14:28 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Во-первых:
Pascal
1
2
3
4
5
6
7
8
9
10
procedure TForm1.Button1Click(Sender: TObject);
var
  s: string;
begin
  s := edit1.Text;
  if ListBox1.Items.IndexOf(s) = -1 then // если этого не сделать, то в список можно вводить одинаковые числа
    listbox1.items.Add(s);
  edit1.Clear;
  edit1.SetFocus;
end;
А во-вторых:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
procedure TForm1.ListBox1Click(Sender: TObject);
var
  p, s: integer;
begin
  listbox2.items.Clear;
  p := StrToInt(ListBox1.Items[ListBox1.ItemIndex]);
  s := 1;
  while p > 0 do
  begin
    if p mod 10 > 0 then
      s := s * (p mod 10);
    p := p div 10;
  end;
  ListBox2.Items.Add(IntToStr(s));
end;
, тогда в ListBox2 сразу будет выводиться произведение цифр числа, на которое кликнули в ListBox1.
1
08.06.2016, 14:28
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.06.2016, 14:28
Привет! Вот еще темы с ответами:

Выведение индекса числа в массиве - PascalABC.NET
Помогите с задачкой. Массив 4*9, заполняется числами от 1 до 36 в порядке возрастания. Нужно вывести на экран номер строки в которой...

Выведение третьей цифры числа, начиная с начала - Turbo Pascal
Cоставить программу для выведения третьей цифры числа, начиная с начала, для чисел &gt;99 например 1589461 третья цифра 8 Добавлено...

Выведение числа, путем использования минимального количества операций - C++
Суть задачи следующая: в командную строку вводим количество чисел, которое хотим получить, и сами числа. И в результате программа путем...

Расположение символов в алфавитном порядке, выведение наибольшего числа методом простых вставок.. - Pascal
:help:Мне нужно зделать в С++ Борланд Билдер: Расположение символов в алфавитном порядке, выведение наибольшего числа методом простых...


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

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

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