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

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

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

 
 Ответить  Открыть новую тему 
> задача "считалка"
сообщение
Сообщение #1


Новичок
*

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

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


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


Гость






Поиск по форуму, ключевое слово - "Казнь"... Чуть-чуть модифицировать, и получишь то, что тебе нужно...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

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

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


спасибо

что то очень тяжелая,легче никак?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

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


Так пойдет ?

uses crt;

const

  max_len = 255;

type

  TArray = array [1..max_len] of Integer;

procedure Fill(var arr: TArray; n: Integer);
var
  i: Integer;
begin
  for i := 1 to n do arr[i] := i;
end;

procedure Print(const arr: TArray; const n: Integer);
var
  i: Integer;
begin
  writeln;
  for i := 1 to n do write(arr[i]:3);
  writeln;
end;

procedure Del(var arr: TArray; var n: Integer; const p: Integer);
var
  i: Integer;
begin
  for i := p to n - 1 do
   arr[i] := arr[i + 1];
  n := n - 1;
end;

function GetNext(var arr: TArray; var n: Integer; var p: Integer; shift: Integer): Integer;
var
  tShift: Integer;
begin

  if p + shift <= n then begin
    p := p + shift;
  end
   else begin
     tShift := shift - (n - p);
     p := 0;
     while (tShift > n) do tShift := tShift - n;
     p := tShift;
   end;

   Del(arr, n, p);
   GetNext := p;
   Dec(p);
end;

procedure GetSequence(arr: TArray; n, shift: Integer);
var
  p: Integer;
begin
  p := 0;
  while (n > 0) do begin
    GetNext(arr, n, p, shift);
    Print(arr, n);
  end;
end;

var
  a: TArray;
  n, shift: Integer;

begin
  clrscr;
  write('N = '); readln(n);
  write('Shift = '); readln(shift);
  Fill(a, n);
  clrscr;
  Print(a, n);
  GetSequence(a, n, shift);
  readln;
end.


n = 7
shift = 9


1 2 3 4 5 6 7
1 3 4 5 6 7
1 3 4 6 7
1 4 6 7
1 6 7
6 7
7


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Новичок
*

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

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


да спс wub.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






А не подскажите как вывести последовательность выбывших? Столкнулся с подобной задачей, а паскаль уже почти не помню.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гость






Цитата(klem4 @ 25.10.2006 9:44) *

Так пойдет ?

uses crt;

const

  max_len = 255;

type

  TArray = array [1..max_len] of Integer;

procedure Fill(var arr: TArray; n: Integer);
var
  i: Integer;
begin
  for i := 1 to n do arr[i] := i;
end;

procedure Print(const arr: TArray; const n: Integer);
var
  i: Integer;
begin
  writeln;
  for i := 1 to n do write(arr[i]:3);
  writeln;
end;

procedure Del(var arr: TArray; var n: Integer; const p: Integer);
var
  i: Integer;
begin
  for i := p to n - 1 do
   arr[i] := arr[i + 1];
  n := n - 1;
end;

function GetNext(var arr: TArray; var n: Integer; var p: Integer; shift: Integer): Integer;
var
  tShift: Integer;
begin

  if p + shift <= n then begin
    p := p + shift;
  end
   else begin
     tShift := shift - (n - p);
     p := 0;
     while (tShift > n) do tShift := tShift - n;
     p := tShift;
   end;

   Del(arr, n, p);
   GetNext := p;
   Dec(p);
end;

procedure GetSequence(arr: TArray; n, shift: Integer);
var
  p: Integer;
begin
  p := 0;
  while (n > 0) do begin
    GetNext(arr, n, p, shift);
    Print(arr, n);
  end;
end;

var
  a: TArray;
  n, shift: Integer;

begin
  clrscr;
  write('N = '); readln(n);
  write('Shift = '); readln(shift);
  Fill(a, n);
  clrscr;
  Print(a, n);
  GetSequence(a, n, shift);
  readln;
end.


n = 7
shift = 9
1 2 3 4 5 6 7
1 3 4 5 6 7
1 3 4 6 7
1 4 6 7
1 6 7
6 7
7


Можешь помочь?не могу понять что делать эта функция i:=i mod n+1
Program schitalka;
Const nmax=100;
Var n,m,I,j:integer;
Krug: set of 1..nmax;
Begin
Write(‘введите число человек: ’); read(n);
Write(‘кого удалять?: ’); read(m);
If (n>500) or (m>100) then write(‘ошибка’)
Else begin
Krug:=[1..n];
I:=n;
End;
Repeat
For j:=1 to m do
Repeat
I:=I mod n+1
Until I in krug;
Write(i:3);
Krug:=krug-[i]
Until krug=[ ];
Write(‘номер уцелевшего: ’,i);
End.
 К началу страницы 
+ Ответить 

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

 



- Текстовая версия 22.04.2025 11:11
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name