Форум: "Прочее";
Текущий архив: 2008.01.27;
Скачать: [xml.tar.bz2];
Внизпроверка повторных цыфр и лаба Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.52 MB
Время: 0.008 c