IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

2 страниц V < 1 2  
 Ответить  Открыть новую тему 
> Генерация 9 значных чисел...
GLuk
сообщение 9.04.2003 17:11
Сообщение #21


Профи
****

Группа: Пользователи
Сообщений: 775
Пол: Мужской

Репутация: -  0  +


Ты юзаешь глобальную переменную (описанную как i) во всех процедурах - оттого он и крутит его бесконечно...а комбинаций все-таки ни больше ни меньше, хотя хрен его знает...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
reill
сообщение 9.04.2003 19:51
Сообщение #22


Пионер
**

Группа: Пользователи
Сообщений: 52

Репутация: -  0  +


Да с этим я разобрался все дописал вот что вышло:
Код
program cz_new;
uses crt;
type
masiv=array[1..9] of byte;
const
chisla: array[1..10] of longint = & #40;123456789,123456780,123456709,123456089,123450789,123406789,123056789,120456
789,103456789,
234567890);
var
c: masiv;
b:longint;
i,j,k: byte;
f: integer;
fl: text;


procedure pr(var a:longint);
var
obr: string;
begin
str(a,obr);
for i:=1 to 9 do
begin
val(copy(obr,i,1),c[i],f);
writeln(c[i]);
end;
end;


procedure perest;
var st,st2: string;
begin
f:=c[1];
for i:=2 to 9 do c[i-1]:=c[i];
c[9]:=f;
if c[1]=0 then
begin
f:=c[1];
for i:=2 to 9 do c[i-1]:=c[i];
c[9]:=f;
end;
st2:='';
for i:=1 to 9 do
begin
str(c[i],st);
st2:=st2+st;
end;
val(st2,b,f);
end;

begin
clrscr;
assign(fl,'out.txt');
rewrite(fl);
for j:=1 to 10 do
begin
pr(chisla[j]);
for k:=1 to 8 do
begin
perest;
if b mod 11 = 0 then writeln(fl,B);
end;
end;
close(fl);
end.


Но вот маза которую я понял, когда посмотрел на результаты - то что этими 10 числами не отделаешься, цифры ведь могут стоять не только подряд, а у меня они попорядку меняются местами... обыдно, надо додумывать "задачку".... >:(

Сообщение отредактировано: volvo - 17.12.2004 11:46
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
GLuk
сообщение 10.04.2003 5:20
Сообщение #23


Профи
****

Группа: Пользователи
Сообщений: 775
Пол: Мужской

Репутация: -  0  +


О чем я и говорил, когда писал о 5120 комбинациях, т.к. для каждого разряда выходит + степень => 2^9=512, а чисел всего 10 - поэтому 5120 комбинаций  :smile.gif Числа, которые ты описываешь как массив из LongInt'ов, лучше описать как String.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
reill
сообщение 10.04.2003 5:40
Сообщение #24


Пионер
**

Группа: Пользователи
Сообщений: 52

Репутация: -  0  +


Зачем стрингом???
Ну зацени свой вариант, надеюсь он без Асма...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
GLuk
сообщение 10.04.2003 15:29
Сообщение #25


Профи
****

Группа: Пользователи
Сообщений: 775
Пол: Мужской

Репутация: -  0  +


Данная прога генерить все комбинации из набора "23456789", потом просто подставляется единица, описанная как FN. Чтобы получить действительно все комбинации для "123456789", единицу надо 9 раз поменять с другими цифрами. Думаю теперь уж доделаешь сам smile.gif

А комбинаций кстати всего - 362.880 для одного набора, а для девяти 3.265.920. Поначалу не так посчитал, через факториал надобно...

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

Код
Uses
   Crt;
Const
    S:array[1..9] of String = ('123456789','103456789','120456789',
                               '123056789','123406789','123450789',
                               '123456089','123456709','123456780');
Function Fact(N:LongInt):LongInt;
var
  T:LongInt;
  i:LongInt;
begin
    T:=1;
    For i:=1 to N do T:=T*i;
    Fact:=T;
end;
Const
    O:String = '6789';
    L:String = '2345';
    FN:Char  = '1';
    K:Char = #1;
    N=3;
Var
  T,i,Sum1,Sum2:LongInt;
  j:Byte;
  F:Text;
  V:LongInt;
  Code:Integer;
Procedure Form2;
var
  i,j:Integer;
  Tm:String;
begin
    Tm:=L;
    For j:=1 to N+1 do
    begin
    For i:=1 to 3 do
    begin
         Val(FN+L+O,V,Code);
         If V MOD 11 = 0 then WriteLn(F,V);
         K:=L[N+1];
         L[N+1]:=L[N];
         L[N]:=K;
         Val(FN+L+O,V,Code);
         If V MOD 11 = 0 then WriteLn(F,V);
         If Odd(i) then
         begin
              K:=L[N+1];
              L[N+1]:=L[N];
              L[N]:=K;
         end;
         K:=L[2];
         L[2]:=L[N+1];
         L[N+1]:=K;
    end;
    L:=Tm;
    K:=L[N-j+2];
    L[N-j+2]:=L[1];
    L[1]:=K;
    end;
end;
Procedure Form1;
var
  i,j:Integer;
  Tm:String;
begin
    Tm:=O;
    For j:=1 to N+1 do
    begin
    For i:=1 to 3 do
    begin
         Form2;
         K:=O[N+1];
         O[N+1]:=O[N];
         O[N]:=K;
         Form2;
         If Odd(i) then
         begin
              K:=O[N+1];
              O[N+1]:=O[N];
              O[N]:=K;
         end;
         K:=O[2];
         O[2]:=O[N+1];
         O[N+1]:=K;
    end;
    O:=Tm;
    K:=O[N-j+2];
    O[N-j+2]:=O[1];
    O[1]:=K;
    end;
end;

Begin
    ClrScr;
    Assign(F,'output.txt');
    ReWrite(F);
    Form1;
    Close(F);
End.


Сообщение отредактировано: volvo - 17.12.2004 11:46
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
reill
сообщение 11.04.2003 11:49
Сообщение #26


Пионер
**

Группа: Пользователи
Сообщений: 52

Репутация: -  0  +


Чего-то твоя прога у меня ничего не делает файл создает и ничего не пишет....
Ты уж доделай свой шедевр))
А потом хвастай
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
GLuk
сообщение 11.04.2003 12:24
Сообщение #27


Профи
****

Группа: Пользователи
Сообщений: 775
Пол: Мужской

Репутация: -  0  +


Доделывать я ничего не буду. Вообще ты просил алгоритм, так вроде он есть да и кусок проги - генерящей какое-то количество номеров.
Ты попробуй протрейсить и посмотреть что она делает - она генерит комбинации для набора 123456789, причем изменяются только цифры 23456789. А когда видишь прогу в мессаге, то сначал почитай то, что в начале написано, а затем запускай. Вообщем посмотри и подумай, а пустой файл и должен быть пустым...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
reill
сообщение 11.04.2003 21:32
Сообщение #28


Пионер
**

Группа: Пользователи
Сообщений: 52

Репутация: -  0  +


Не парься.... Я читал и месейдж и саму прогу...
Неуже ли ты меня совсем за лоха держишь...Просто в лом вникать было в твои творения, ты бы хоть кометариев нацарапал...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
reill
сообщение 11.04.2003 21:34
Сообщение #29


Пионер
**

Группа: Пользователи
Сообщений: 52

Репутация: -  0  +


Да чуть не забыл- не забудь раздел называется не алгоритмы, а задачи... :P
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
GLuk
сообщение 12.04.2003 8:59
Сообщение #30


Профи
****

Группа: Пользователи
Сообщений: 775
Пол: Мужской

Репутация: -  0  +


Цитата
Не парься.... Я читал и месейдж и саму прогу...
Неуже ли ты меня совсем за лоха держишь...Просто в лом вникать было в твои творения, ты бы хоть кометариев нацарапал...


Никого я за лоха не держу, а по поводу проги - ты понял КАК она это делает?

Цитата
Да чуть не забыл- не забудь раздел называется не алгоритмы, а задачи...

А вот по поводу этого: ты сначала просто просил подкинуть идей для генера. А потом вишь я ору, держу кого попало за лохов, хвастаюсь. Смотри как люди общаются (в плане вежливо, исключая частные случаи). Козлом и засранцем я и сам мог тебя назвать, но этого не сделал. Типа выбирай выражения/фильтруй базар/кроши батон и т.п.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
reill
сообщение 13.04.2003 10:43
Сообщение #31


Пионер
**

Группа: Пользователи
Сообщений: 52

Репутация: -  0  +


Какое трогательное сообщение.... Я не знал что это тебя так сильно заденит :-[ Извини пожалуйста :'( ;)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
GLuk
сообщение 13.04.2003 11:41
Сообщение #32


Профи
****

Группа: Пользователи
Сообщений: 775
Пол: Мужской

Репутация: -  0  +


Прогу-то сдал?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
reill
сообщение 14.04.2003 12:41
Сообщение #33


Пионер
**

Группа: Пользователи
Сообщений: 52

Репутация: -  0  +


На следующей недели здаю...С твоим вариантом ещё даже не разбирался... времени нет(((, но ты не бойся твои глюки все найду))) :P
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
reill
сообщение 15.04.2003 20:27
Сообщение #34


Пионер
**

Группа: Пользователи
Сообщений: 52

Репутация: -  0  +


Так я вот не понял одного ты чего это за прогу написал???
Твои геморно закрученные алгоритмы перестановки я не трогаю, может они и
составленны путем сложных интегрально - факториальных вычислений, (хотя это врядли, уж очень мои напаминают)
Но зачем тебе массив типа стринг из 9 элементов, если ты с ним нифига не делаешь, а меняешь местами другие переменные
Или я чего-то не догнал, и ты имел ввиду что я их туда прилеплю, каким-то макаром???
Тогда хоть идею расскажи(напиши просто ход твоего алгоритма, так ничего не понятно)...
Я весь внимания!!!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
GLuk
сообщение 19.04.2003 4:19
Сообщение #35


Профи
****

Группа: Пользователи
Сообщений: 775
Пол: Мужской

Репутация: -  0  +


Дык, все же очень просто, дебагом не пробовал пользоваться. Проследи за изменением локальных переменных по прозвищу Tm в процедурах Form1/2.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
reill
сообщение 23.04.2003 5:01
Сообщение #36


Пионер
**

Группа: Пользователи
Сообщений: 52

Репутация: -  0  +


Ну вот вчера ходил её здавать...
Все оказалось на много хуже чем я думал/ Ни мой ни твой вареант не пошел так как они оба "используют перебор", а нужно исходить из сумм цифр на четных и не четных местах. Зато она перед мной извинилась и сказала что вычеркнет это задание, так как сама решала  его день, и зделала только половину)) Но если я его доведу до ума  то это будет засчитанно как курсовая..
Она дала мне исходничек  со своим вариантом перестановки  чисел для составления сумм, скоро ввыложу его( как сканер подключу..)
Такие проги.... ;D
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
GLuk
сообщение 23.04.2003 15:59
Сообщение #37


Профи
****

Группа: Пользователи
Сообщений: 775
Пол: Мужской

Репутация: -  0  +


Выкладывай скорее, что же это за прога, если УЧИТЕЛЬ писал 1/2 оной целый ДЕНЬ!!!  :o  :D

Какой способ использует учитель???

Вроде все прикинул  :(
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
reill
сообщение 24.04.2003 4:14
Сообщение #38


Пионер
**

Группа: Пользователи
Сообщений: 52

Репутация: -  0  +


Способ у нее как раз по условию она подбирает комбинации сумм цифр как в условии написанно... блин ее этот алгоритм на 1.5 листика без бутылки не разберешся, сегодня вечером положу...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

2 страниц V < 1 2
 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 31.07.2025 4:42
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"