Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
1 / 1 / 0
Регистрация: 17.04.2011
Сообщений: 24

"Считалка" перевод с Pascal на c#

08.05.2011, 00:07. Показов 1699. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, форумчане помогите, пожалуйста, с переводом с Pascal.
такая задача: даны натуральные числа m и n. Предполагается, что n человек встают в круг и получают номера: 1, 2, 3, ... n. Затем начиная с первого, отсчитывается m-ый человек. Этот человек выходит из круга, после чего, начиная со следующего, снова отсчитывается m-ый человек и так до тех пор, пока из всего круга не останется один человек. Определить его номер. Необходимо реализовать с помощью массива, в котором хранится информация о человеке: находится он еще в кругу или уже вышел. Заранее спасибо за помощь
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
uses crt;
var
a:array[1..100]of integer;
i,j,k,n:integer;
begin
clrscr;
{вводим количество}
repeat
write('N:');
readln(n);
until (n>1)and(n<=100);
{вводим счетчик}
repeat
write('K:');
readln(k);
until (k>0)and(k<n);
{раставляем всех по кругу}
for i:=1 to n do a[i]:=i;
{начальное значение}
i:=0;
repeat
{вычисляем новое значение}
i:=1+(i+k-1)mod n;
{удаляем человека из круга}
dec(n);
for j:=i to n do a[j]:=a[j+1];
{выводим результат хода}
for j:=1 to n do write(a[j],' ');
writeln;
{корректируем указатель}
dec(i);
until n=1;
{выводим результат}
writeln('Последним остался № ',a[1]);
readln
end.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.05.2011, 00:07
Ответы с готовыми решениями:

Перевод программы с Turbo Pascal на Pascal ABC.NET
написала программу в паскаль турбо на рабочем компьютере. перенесла в паскаль авсNet так как дома стоит эта версия /перестала работать что...

Перевод программы с turbo pascal на Pascal ABC
Есть программа, которая строит треугольник Серпинского методом хаоса, но она конфликтует с графикой ABC. Важен именно этот метод. ...

Перевод с Turbo Pascal в ABC Pascal
помогите пожалуйста с переводом, никак не могу разобраться( program Mayatnik; uses graphABC, crt; var driver,...

8
 Аватар для m0nax
1274 / 975 / 113
Регистрация: 12.01.2010
Сообщений: 1,971
08.05.2011, 05:14
Не знаю чего там на паскале, я бы сделал это так
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
               int peopleCount = 14; 
            int killNumber = 5; 
            bool[] nums = new bool[peopleCount];//всего народу
            int survivors = peopleCount;
            int tmp = 0;
            while (survivors > 1) {//пока выживших больше 1
                for (int i = 1; i < killNumber; )//считаем
                {
                    tmp = (tmp + 1)%peopleCount; 
                    if (!nums[tmp])//если место не пустое
                        ++i;
                }
                nums[tmp] = true; //стреляем
                --survivors;
            }
 
            Console.WriteLine("Остался лишь один, его номер {0}", tmp);
 
            Console.Read();
1
1 / 1 / 0
Регистрация: 17.04.2011
Сообщений: 24
08.05.2011, 13:58  [ТС]
Спасибо за программу, но она работат некорректно. Если мы, например, имеем 14 человек и 5 слогов считалки, то результат будет 11, а не 10. И другой пример, если 12 человек и 9 слогов - результат должен быть 2, а по решению получается 9. И я не понимаю, где ошибка помогите исправить.
0
 Аватар для m0nax
1274 / 975 / 113
Регистрация: 12.01.2010
Сообщений: 1,971
08.05.2011, 14:49
тогда внутренний цикл вот таким сделай
C#
1
2
3
4
5
                for (int i = 1; i < killNumber; tmp = (tmp + 1)%peopleCount)//считаем
                {
                    if (!nums[tmp])//если место не пустое
                        ++i;
                }
1
1 / 1 / 0
Регистрация: 17.04.2011
Сообщений: 24
08.05.2011, 15:14  [ТС]
Работает спасибо большое
0
 Аватар для m0nax
1274 / 975 / 113
Регистрация: 12.01.2010
Сообщений: 1,971
08.05.2011, 15:18
хотя вообще все было правильно, просто в итоге выводилось не совсем то )
Вот так действительно правильно
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
            int peopleCount = 12;
            int killNumber = 9;
            bool[] nums = new bool[peopleCount];//всего народу
 
            int survivors = peopleCount;
            int tmp = 0;
 
            while (survivors > 1)
            {//пока выживших больше 1             
                for (int i = 0; i < killNumber; )//считаем
                {
                    tmp = (tmp + 1)%peopleCount;
                    if (!nums[tmp])//если место не пустое
                        ++i;
                }
                
                nums[tmp] = true; //стреляем
                --survivors;
            }
 
            for (int i = 0; i < nums.Length; i++) {
                if (!nums[i]) {
                    Console.WriteLine("Остался лишь один, его номер {0}", i);
                    break;
                }
            }
 
            Console.Read();
0
1 / 1 / 0
Регистрация: 17.04.2011
Сообщений: 24
08.05.2011, 19:27  [ТС]
А если попробывать: 3 человека и 2 слога считалки, выводит 0. Как исправить?
0
0 / 0 / 0
Регистрация: 26.09.2016
Сообщений: 5
31.01.2018, 23:31
Вот мой код. Но числа m = 2 n = 3, и m = 3, n= 2 Он считает не верно

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
 int m = 10;
            int n = 5;
            bool[] nums = new bool[m];//всего народу
 
            int s = m;
            int tmp = 0;
 
            while (s > 1)
            {//пока выживших больше 1             
                for (int i = 0; i < n;)//считаем
                {
                    tmp = (tmp + 1) % m;
                    if (!nums[tmp])//если место не пустое
                        ++i;
                }
 
                nums[tmp] = true; //стреляем
                --s;
            }
 
            for (int i = 0; i < nums.Length; i++)
            {
                if (!nums[i])
                {
                    Console.WriteLine("Остался лишь один, его номер {0}", i);
                    break;
                }
            }
 
            Console.Read();
0
01.02.2018, 01:00

Не по теме:

exotik, и как они 7 лет прожили?

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.02.2018, 01:00
Помогаю со студенческими работами здесь

Перевод из Pascal в C#
Переведите пожалуйста function f(x:real):real; begin f:=x/sqr(sin(3*x)); end; var a,b,h,s:real; n,i:integer; begin ...

Перевод из С++ в Pascal
#include &lt;stdio.h&gt; int main() { unsigned int n = 0; unsigned int way = 0xffff, tmpWay; FILE * f = fopen(&quot;input.txt&quot;,...

Перевод из Pascal в C#
Переведите пожалуйста Const n=20; Var m:array of integer; i,c,f:integer; b:boolean; Begin For i:=1 to n do...

Перевод с C на Pascal
Помогите перевести код с C на Pascal, сам я его плохо знаю, да и в универе нас учат C и C++, я не понимаю даже как объявить...

Перевод c Pascal на С++
Помогите перевести пожалуйста program FindMin; type Mass=array of integer; function MinK(X:Mass;k:integer):integer; var...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
Программный отбор значений справочника
Maks 21.03.2026
Установка программного отбора значений справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru