Вот задача
Дано натуральное число N. Определить количество цифр в цифровой записи данного числа,которые имеют наименьшее значение.
У меня количество цифр выдается все время равным 1. Где ошибка в программе. Исправьте если можно.
Листинг программы:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
Label1: TLabel;
Button2: TButton;
Button3: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
S: String;
N,count,i, j: Integer;
begin
s:=Edit1.Text;
s:=IntToStr(N);
count:=0;
for i := 1 to 9 do
if pos(IntToStr(i), S) > 0 then
begin
for j := 1 to Length(S) do
if S[j] = IntToStr(i) then inc(count);
ShowMessage('Количество минимальных цифр:' + IntTostr(count));
Break;
end;
end;
end.
циклич алгоритмы
Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду
-
- Сообщения: 3
- Зарегистрирован: 26 сен 2005, 17:27
- Откуда: Уездный город N
- Контактная информация:
pikass писал(а):procedure TForm1.Button1Click(Sender: TObject)]s:=IntToStr(N); - это зачем?[/color]
count:=0;
for i := 1 to 9 do
if pos(IntToStr(i), S) > 0 then
begin
for j := 1 to Length(S) do
if S[j] = IntToStr(i) then inc(count);
ShowMessage('Количество минимальных цифр:' + IntTostr(count));
Break;
end;
end;
А вот потому что ты используешь не цикл а промежуток от 1 до 9
for i := 1 to 9 do
Разумней использовать напримерА вообще на мой взгляд все очень криво написано, хотя я задания не видел..
for i := 1 to 9 do
Разумней использовать например
Код: Выделить всё
i := 0;
while (Length(Memo1.Lines[i])>0) do //ну это для примера свое условие вставляй
begin
//Твои действия
inc(i);
End;