Подписывайтесь на наш Telegram и не пропускайте важные новости! Перейти

Парни, кому хочется размять мозг

  • Автор темы Автор темы Medef
  • Дата начала Дата начала
Начинающий
Начинающий
Статус
Оффлайн
Регистрация
15 Мар 2018
Сообщения
51
Реакции
0
Короче рассказываю суть. Ваша задача(кому не лень, естественно) написать код на плюсах, либо на змее.
Задача:
В аудитории сидит некоторое количество человек(~25, может быть и меньше), известно место, на котором сидите вы(допустим 5 от начала). Нужно выбрать самый оптимальный вариант, при котором вас не выберут за максимально большой промежуток времени( проходов цикла) ( то есть, например, прибавляем постоянно +3, либо в обратную сторону -3, короче от начального человека отнимаем/прибавляем 3 человека, тот и выходит к доске). Это пример. Можно прибавлять любое число, но оно должно быть меньше числа учеников
Ответ должен быть в виде: «Вас выберут через n прибавлений/отнятий, и выбор варианта ( например:-4/+7)
Пример: Вас выберут через 10 проходов, оптимальный вариант: +5
Даже, если подскажете как делать, буду очень благодарен ♥️
 
Так если меньше 25, то просто перебирай
 
Короче рассказываю суть. Ваша задача(кому не лень, естественно) написать код на плюсах, либо на змее.
( то есть, например, прибавляем постоянно +3, либо в обратную сторону -3, короче от начального человека отнимаем/прибавляем 3 человека, тот и выходит к доске). Это пример. Можно прибавлять любое число, но оно должно быть меньше числа учеников

Ничего не понял. Можно как-то подробнее и понятнее объяснить? "Короче" или что-то прибавлять, отнимать куда-то, я вообще ничего не понял. Есть задание, которое нормально расписано?

То, как я понял. Что ты имел ввиду на 100%, не знаю
Код:
Expand Collapse Copy
#include "pch.h"
#include <iostream>
#include <string>

using namespace std;

int Xz(const int iCount, const int iPos, const int iPos2, const int iOffset, const bool bAdd)
{
    if (bAdd)
    {
        for (int i = iPos; i <= iCount; i += iOffset)
        {
            if (i == iPos2)
            {
                return ((i - iPos) / iOffset);
            }
        }
    }
    else
    {
        for (int i = iPos; i >= 0; i -= iOffset)
        {
            if (i == iPos2)
            {
                return ((i - iPos) / iOffset);
            }
        }
    }

    return 0;
}

int main()
{
    setlocale(LC_ALL, "Russian");

    const int iCount = 25; // Всего
    const int iPos = 5; // Позиция с которой начнем
    const int iPos2 = 11; // Моя позиция
    const int iOffset = 3; // На сколько происходит смещение
    const bool bAdd = 1; // True (1) - прибавлять, False (0) - отнимать

    int Buffer;

    Buffer = Xz(iCount, iPos, iPos2, iOffset, bAdd);
  
    if (Buffer <= 0)
        cout << "Вас не выберут";
    else
        cout << "Вас выберут через " + to_string(Buffer);

    return 0;
}
 
Последнее редактирование:
Ничего не понял. Можно как-то подробнее и понятнее объяснить? "Короче" или что-то прибавлять, отнимать куда-то, я вообще ничего не понял. Есть задание, которое нормально расписано?

То, как я понял. Что ты имел ввиду на 100%, не знаю
Код:
Expand Collapse Copy
#include "pch.h"
#include <iostream>
#include <string>

using namespace std;

int Xz(const int iCount, const int iPos, const int iPos2, const int iOffset, const bool bAdd)
{
    if (bAdd)
    {
        for (int i = iPos; i <= iCount; i += iOffset)
        {
            if (i == iPos2)
            {
                return ((i - iPos) / iOffset);
            }
        }
    }
    else
    {
        for (int i = iPos; i >= 0; i -= iOffset)
        {
            if (i == iPos2)
            {
                return ((i - iPos) / iOffset);
            }
        }
    }

    return 0;
}

int main()
{
    setlocale(LC_ALL, "Russian");

    const int iCount = 25; // Всего
    const int iPos = 5; // Позиция с которой начнем
    const int iPos2 = 11; // Моя позиция
    const int iOffset = 3; // На сколько происходит смещение
    const bool bAdd = 1; // True (1) - прибавлять, False (0) - отнимать

    int Buffer;

    Buffer = Xz(iCount, iPos, iPos2, iOffset, bAdd);
 
    if (Buffer <= 0)
        cout << "Вас не выберут";
    else
        cout << "Вас выберут через " + to_string(Buffer);

    return 0;
}
На паре есть какое-то кол-во людей, начиная с некоторого, люди выходят к доске. И чтобы побыстрее все ответили(то есть не подряд выходят, а допустим, через 1 или через 5 человек), в начале занятия преподаватель задает вопрос по сколько прибавляем от 1 человека, мы например отвечаем +4, то есть от последнего, кто выходил отсчитываем 4, выходит следующий и тд
 
Назад
Сверху Снизу