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

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

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

 
 Ответить  Открыть новую тему 
> Блок-схема для счастливого номера
Женя
сообщение 22.12.2004 20:52
Сообщение #1


Гость






Обычная прога: Получить все шестизначные счастливые номера. (Про целое число n, удовлетворяющее условию 0<=n<=999999, говорят, что оно представляет собой счастливый номер, если сумма трёх его первых цифр равна сумме трёх его последних цифр; если в числе меньше шести цифр, то недостающие начальные цифры, считаются нулями).

прога:

Код

program luckynumber;
uses crt;
var a,b,c,d,e,f:byte;
y:longint;
x1:integer;
luck:real;
key:char;
begin
clrscr;
for a:=0 to 9 do
for b:=0 to 9 do
 for c:=0 to 9 do
begin
x1:=a+b+c;
  for d:=0 to 9 do
   for e:=0 to 9 do
    for f:=0 to 9 do
     if (x1=d+e+f) then
      begin
       y:=y+1;
       writeln ('Счастливый номер: ',a,b,c,d,e,f);
       If (y mod 10)=0 then
        begin
        writeln('Press Any Key for continue or Esc for exit...');
        key:=readkey;
        if ord(key)=27 then exit;
       clrscr;
       end;
      end;
    end;
readln
end.


Я что-то застрял с циклами.. как бы их так организовать на блок-схемах, чтобы всё работало? Пожлауйста, помогите!

Заранее благодарен!
 К началу страницы 
+ Ответить 
volvo
сообщение 23.12.2004 16:12
Сообщение #2


Гость






Женя
Цитата
Обычная прога: Получить все шестизначные счастливые номера.

Все так, но это программа делается по-другому: у твоего варианта перебор 1.000.000 значений, а можно сделать гораздо меньше...
 К началу страницы 
+ Ответить 
mithquessir
сообщение 23.12.2004 19:57
Сообщение #3


Гость






volvo
Согласен.
imho так можно сократить перебор где-то в 10-15 раз. :yes:
Код

var
 a,b,c,d,e,x1,x2,x3:integer;
begin
 for a := 0 to 9 do
   for b := 0 to 9 do
     begin
       x1 := a + b;
       for c := 0 to 9 do
         begin
           x2 := x1 + c;
           for d := 0 to 9 do
             begin
               x3 := x2 - d;
               if x3 > 0 then
                 for e := 0 to 9 do
                   case x3 - e of
                     0..9:WriteLn(a,b,c,d,e,x3-e);
                   end;
             end;
         end;
     end;
end.


Сообщение отредактировано: mithquessir - 23.12.2004 19:58
 К началу страницы 
+ Ответить 
volvo
сообщение 23.12.2004 20:10
Сообщение #4


Гость






mithquessir
А вот так - до перебора "всего" порядка 27000 значений...
Код

const
 total = 999;
 count = 27;

var
 arrCount: array[0 .. count] of integer;
 numbers: array[0 .. count, 1 .. total + 1] of integer;
 i, j, k, T: integer;
 s, counter: longint;
 n1, n2: integer; a, b, c, d, e, f: integer;
begin
 counter := 0;
 for i := 0 to count do
   begin
     for j := 0 to total do
       begin
         T := j; s := 0;
         while T > 0 do
           begin
             s := s + T mod 10;
             T := t div 10
           end;
         if s = i then
           begin
             inc(arrCount[i]); numbers[i, arrCount[i]] := j
           end;
       end;

     for j := 1 to arrCount[i] do
       begin
         n1 := numbers[i, j];
         a := n1 div 100; b := (n1 - 100*a) div 10; c := n1 mod 10;
         for k := 1 to arrCount[i] do
           begin
             n2 := numbers[i, k];
             d := n2 div 100; e := (n2 - 100*d) div 10; c := n2 mod 10;

             writeln(a, b, c, ' ', d, e, f);
             inc(counter);
           end;
       end;
   end;

 writeln('total numbers: ', counter)
end.


Сообщение отредактировано: volvo - 23.12.2004 20:34
 К началу страницы 
+ Ответить 
Digitalator
сообщение 23.12.2004 20:33
Сообщение #5


Бывалый
***

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

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


Цитата
А вот так - до перебора "всего" порядка 27000 значений...

Хотя можно ввобще без перебора smile.gif


--------------------
In byte we trust
ICQ World.ru
mail[dog]digitalator[dot]com
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 23.12.2004 20:37
Сообщение #6


Гость






Digitalator
Без перебора напечатать счастливые номера - занятие не для слабонервных, и тем более не для начинающих ;)
 К началу страницы 
+ Ответить 
Женя
сообщение 24.12.2004 5:26
Сообщение #7


Гость






Помогите сделать пожалуйста блок-схему алгоритма на моём примере решения программы.. smile.gif всё, что требуется.. Да, одно замечание - блок цикла использовать нельзя.

мне главное надо - как связать все циклы.. Помогите!
 К началу страницы 
+ Ответить 

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

 



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