Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.01.27;
Скачать: CL | DM;

Вниз

проверка повторных цыфр и лаба   Найти похожие ветки 

 
Oyeme   (2007-12-19 11:51) [0]

Числа 48 и 159 характерны тем, что в выражении 48*159=7632 использованы 9 разных цифр (без нуля) по одному разу каждая. Найти все такие пары чисел.

это задание....)
я некак немогу понять как мне начать...
2 цикла.. и потом их проверять число если там повторные цыфры,то есть число 133 неподходит а в числк 143 нет повторение..
Помогите пожалуйста!!!


 
Сергей М. ©   (2007-12-19 12:01) [1]


> некак немогу понять как мне начать


Начать следует с разработки матем.модели решения.


 
oldman ©   (2007-12-19 12:06) [2]


> Найти все такие пары чисел


два вложенных цикла от 1 до 987
не очень и долго


 
Oyeme   (2007-12-19 12:19) [3]

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


 
oldman ©   (2007-12-19 12:21) [4]

1. Цифр в множестве должно быть именно 9.
2. Самый простой способ проверки - цикл от 1 до 9. Если все цифры присутствуют, значит они не повторяются.
:)


 
Oyeme   (2007-12-19 12:26) [5]

можно поподробней?...
вот у меня 48*159 так тут нет повторных цыфр и они проверенны функцией потом переумножаються и так же проверяються а потом добовляються в мемо... вот как эту функцию написать..


 
oldman ©   (2007-12-19 12:37) [6]

48*159=7632.
Последовательность будет "481597632".
В ней 9 цифр.
Проверяем от 1 до 9, присутствуют ли они.
Получаем, что да.

Последовательность нас устраивает.


 
oldman ©   (2007-12-19 12:38) [7]

Или ты не можешь добавить в Memo строку "48*159=7632"


 
Рамиль ©   (2007-12-19 12:45) [8]

function Test(const a, b: integer): boolean
var
 a: array[1..9] of boolean;
 s: string;
begin
 for i := 1 to 9 do a[i] := false;
 s = IntToStr(a) + IntToStr(b) + IntTostr(a*b);
 Result := false;
 for i := 1 to length(s) do
 begin
   n := StrToInt(s[i]);
   if a[n] then exit else a[n] := true;
 end;
 Result := true;
 for i := 1 to 9 do
   Result := Result and a[i];
end;


 
Рамиль ©   (2007-12-19 12:46) [9]

Так, на вскидку в лоб:)


 
MBo ©   (2007-12-19 13:19) [10]

пусть первый сомножитель A не длиннее второго B.
Длина произведения C будет равна сумме длин A и B или на единицу больше.
Последней цифрой C может быть 1, 2, 3, 4, 6, 7, 8, для каждой из этих цифр последние цифры A и B берутся из небольшого количества пар, например,
3  - 7,9
6 -  2,3; 4,9; 7,8
Итак, 3 цифры ставим на свои места, что сильно сокращает перебор


 
oldman ©   (2007-12-19 13:26) [11]


> MBo ©   (19.12.07 13:19) [10]


Что-то я думая, что проверка всех условий перебора займет больше времени, чем тупой перебор без условий.
Могу ошибаться, имхо.
Но для лабы, ессно, условий надо понакрутить.


 
Oyeme   (2007-12-19 13:29) [12]

Рамиль спасибо))) но он почему то тут выдаёт ошибку
s := IntToStr(a) + IntToStr(b) + IntTostr(a*b); here is no overloaded version in "IntToStr that can be called with these arguments..


 
Oyeme   (2007-12-19 13:32) [13]

мм..)) спасибо за помощь..)) мне бы токо сделеать..)) а как уже..)) знаю... способюы разные.. собрать главное это всё блиннн..))я токо начинающий в delphi..))


 
Дуболом   (2007-12-19 13:32) [14]

Порядка 400 вариантов придется посмотреть.
С(6,3)=20 а про 3 цифири уже отписали.


 
oldman ©   (2007-12-19 13:36) [15]



> function Test(const a, b: integer): boolean
> var
>  a: array[1..9] of boolean;
>  s: string;
> begin


имена дублируются...


 
Oyeme   (2007-12-19 13:36) [16]

это да...)) delphi мне выдал...куча ощибок.. :(


 
oldman ©   (2007-12-19 13:39) [17]


> var
>  a: array[1..9] of boolean;
>  s: string;


Добавить
i,n: integer;


 
Oyeme   (2007-12-19 13:40) [18]

а вот что делать  с
function Test(const a, b: integer): boolean
> var
>  a: array[1..9] of boolean;

а - оно повторяеться


 
oldman ©   (2007-12-19 13:41) [19]


> Oyeme   (19.12.07 13:36) [16]
> это да...)) delphi мне выдал...куча ощибок.. :(


Идею понял?
А уж синтаксис сам, братец...
Лаба твоя. На лекции ходил?


 
Oyeme   (2007-12-19 13:44) [20]

ходил ходил)) спасбо за помощь..я очень ВаМ благодарен..))
учусь на вечернем и дают буквально половину того чего нужно..))
для начинающего мне трудновато.. :(
я токо тут помогли..


 
Рамиль ©   (2007-12-19 15:01) [21]

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


 
oldman ©   (2007-12-19 15:31) [22]

А вот взял я и написал тупым перебором.
Таких кмбинаций всего семь!

Oyeme, лови (все равно уж написано, правда написано тупо).

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
 StdCtrls;

type
 TForm1 = class(TForm)
   Button1: TButton;
   Memo1: TMemo;
   procedure Button1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var
i,j,k: integer;
s: string;
begin
 for i:=1 to 99 do begin
   for j:=1 to 999 do begin
     k:=i*j;
     s:=inttostr(i)+inttostr(j)+inttostr(k);
     if (length(s)=9) and
     (pos("1",s)>0) and
     (pos("2",s)>0) and
     (pos("3",s)>0) and
     (pos("4",s)>0) and
     (pos("5",s)>0) and
     (pos("6",s)>0) and
     (pos("7",s)>0) and
     (pos("8",s)>0) and
     (pos("9",s)>0) and
     (pos("0",s)=0) then
     memo1.lines.add(inttostr(i)+"*"+inttostr(j)+"="+inttostr(k));
   end;
 end;
end;

end.


 
oldman ©   (2007-12-19 15:33) [23]

Да, кому интересно:

12*483=5796
18*297=5346
27*198=5346
28*157=4396
39*186=7254
42*138=5796
48*159=7632

В тексте предыдущем проверку на (pos("0",s)=0) убери.
Время работы кода - 2 секунды


 
Oyeme   (2007-12-19 15:40) [24]

oldman Спасибоооооооооооооооооооооо!!!! очень тебе благодарен!!!
здоровья тебе!!! спасибо спас!!!
удачи!!!!!!!!!!!!!!!)))
очень!!!


 
Сергей М. ©   (2007-12-19 16:35) [25]

Картина маслом - "Oyeme на зачете лабы":

Препод: - Эт чиво такое ? Как работает ? Поясни каждую цЫфру в этом коде ..
Oyeme: - Нинаю я. Так Oldman (c) написал. Как насчет зачета по лабе ?


 
oldman ©   (2007-12-19 16:43) [26]


> Сергей М. ©   (19.12.07 16:35) [25]


Сергей, вспомни студенчество, выпей и не юродствуй
:)))

Ему весь день объясняли, на фига там цЫфры.
Если не понял, так ему и надо!!!


 
Oyeme   (2007-12-19 17:08) [27]

не...- я досконально разеру..))!!!
за это спасибо!!!
да всё понятно))) циклы...а вот ...что это делает pos("1",s)....м...


 
Jeer ©   (2007-12-19 18:26) [28]

Действительно, и шо он этот pos() там делает ?


 
авыф   (2007-12-19 18:41) [29]


> Jeer ©   (19.12.07 18:26) [28]

    if (length(s)=9) and
      (s[1]<>s[2]) and
      (s[2]<>s[3]) and
      (s[3]<>s[4]) and
       ....
   then
    memo1.lines.add(inttostr(i)+"*"+inttostr(j)+"="+inttostr(k));


 
Sha ©   (2007-12-20 14:47) [30]

> oldman ©   (19.12.07 15:33) [23]
> Время работы кода - 2 секунды

Можно так

procedure TMainFrm.Button3Click(Sender: TObject);
const
 a: array["0".."9"] of integer= (0,1,2,4,8,16,32,64,128,256);
var
 i, j: integer;
 s: string;
begin
for i:=12 to 98 do begin
  for j:=123 to 987 do begin
    s:=inttostr(i*j)+inttostr(100*j+i);
    if (length(s)=9)
    and (a[s[1]]+a[s[2]]+a[s[3]]+a[s[4]]+a[s[5]]+a[s[6]]+a[s[7]]+a[s[8]]+a[s[9]]=511)
    then RichEd.lines.add(s+"  "+inttostr(i)+"*"+inttostr(j)+"="+inttostr(i*j));
  end;
end;
end;


 
Сергей М. ©   (2007-12-20 15:01) [31]


> oldman ©   (19.12.07 16:43) [26]


Вспомнил. Всплакнул-понастальжировал. Нихрена подобного (по кр.мере за собой) не вспомнил. Выпил. Пивка бутылочку. Опять вспомнил, опять нихрена не вспомнил. Заказал Шопена - видать пора, коль с двух раз не удалось вспомнить)


 
Oyeme   (2007-12-21 16:21) [32]

спасибо Вам!!!!!!!!



Страницы: 1 вся ветка

Текущий архив: 2008.01.27;
Скачать: CL | DM;

Наверх




Память: 0.54 MB
Время: 0.019 c
2-1198592934
@!!ex
2007-12-25 17:28
2008.01.27
Перехват нажатия Win.


2-1198502186
saNat
2007-12-24 16:16
2008.01.27
Определение разделителя целой/дробной части


1-1193242832
Malina
2007-10-24 20:20
2008.01.27
Сохранить содержимое RichEdit в файл


2-1198847106
paul
2007-12-28 16:05
2008.01.27
FindKey


11-1182595595
Vladimir Kladov
2007-06-23 14:46
2008.01.27
Версия 2.70