Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.03.2017, 19:47   #1
pruelcr
 
Регистрация: 15.02.2017
Сообщений: 7
По умолчанию Даны натуральные n и m

Нужно сделать задание двумя способами:Массив и векторным
Даны натуральные n и m. Предполагается, что n человек встают в круг и получают номера, например, считая против часовой стрелки, 1, 2, …, n. Затем, начиная с кого – то, также против часовой стрелки отсчитывается m-й человек (поскольку люди стоят по кругу, то за n-м человеком стоит первый). Этот человек выходит из круга, после чего, начиная со следующего, снова отсчитывается m-й человек и так до тех пор, пока из всего круга не остаётся один человек. Определить:
а) номер оставшегося человека, если счёт начинался с первого человека;
б) номер человека, с которого начинался счёт, если известно, что номер оставшегося человека l.

Массивом уже сделал.Помогите с вектором.

Код:
#include <iostream>
using namespace std;
int main()
{
        setlocale(0, "Rus");
        int n, m, i;
        cout << "Введите количество человек в кругу:\n";
        cin >> n;
        int *a = new int[n];
        cout << "Распределение номеров против часовой стрелки: ";
        for(i = 0; i < n; i++){
                a[i] = 1;
               // cout << a[i] << ' ';
        }
        cout << endl;
        cout << "Введите m:\n";
        cin >> m;
        int col=n, temp=-1;
        while(col>1)
        {
            int temp_col=0;
            while(temp_col<m)
            {
                for(i=temp+1; i<n; i++)
                    if(a[i]==1)
                    {
                        temp_col++;
                        temp=i;
                        break;
                    }
                if(i==n)
                    for(i=0; i<temp; i++)
                    if(a[i]==1)
                    {
                        temp_col++;
                        temp=i;
                        break;
                    }
            }
            a[temp]=0;
            col--;
        }
        for(i=0; i<n; i++)
            if(a[i]==1)
            {
                printf("%d", i+1);
                break;
            }
 
        return 0;
}

Последний раз редактировалось Аватар; 14.03.2017 в 20:15.
pruelcr вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Даны натуральные числа N, M. Найти все натуральные числа, меньшие N, квадрат суммы цифр которых равен M Namatrasnik Помощь студентам 1 03.11.2016 23:29
Даны натуральные Маша906 Помощь студентам 4 14.07.2014 14:15
даны натуральные числа n и k (assembler). определить к-ую справа цифру n. Asel01 Помощь студентам 2 26.02.2013 19:06
Даны натуральные числа n, q1, …, qn. Найти те члены qi последовательности q1, …, qn, которые bad9 Помощь студентам 0 08.06.2012 12:28
Даны натуральные числа oWneDiT Общие вопросы C/C++ 2 19.07.2011 02:17