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

 





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