Хелп!!!

CyberMax

Client
Регистрация
08.02.2018
Сообщения
16
Благодарностей
2
Баллы
3
Всем привет ! Ребят подскажите как можно реализовать такую задачу ? Предположим есть стрелочные часы , на которых есть 60 секунд ( это типа переменные ) , задача такая если к примеру пришло значение 10 , значит нужно с этих часов взять 10 переменную и 5 следующих по часовой стрелке и 6 перед 10 против часовой стрелки... Подскажите пожалуйста как реализовать два дня голову ломаю над этим(((
 

CyberMax

Client
Регистрация
08.02.2018
Сообщения
16
Благодарностей
2
Баллы
3
P.S Проблема вся в том что если пришло 1 то нужно брать 60 59 45 и так далее и в перёд...
 

Nord

Client
Регистрация
22.03.2012
Сообщения
2 406
Благодарностей
1 473
Баллы
113
А можно еще раз и по подробнее? Не совсем ясно
 

CyberMax

Client
Регистрация
08.02.2018
Сообщения
16
Благодарностей
2
Баллы
3
А можно еще раз и по подробнее? Не совсем ясно
Ну типа переменная только груговая , что бы при любом выпавшем числе можно было взять шесть значений до него и шесть значений после него , к примеру если выпало 10 нам нужно на выходе получить 11 12 13 14 15 16 и так же в обратную сторану 9 8 7 6 5 4 а если к примеру 1 то в ответ что бы вернулось 2 3 4 5 6 7 и в обратку 60 59 58 57 56 55...
 

Dr.Pipetka

Client
Регистрация
12.12.2017
Сообщения
1 307
Благодарностей
865
Баллы
113
Это массив называется, если я конечно правильно понял:-)
 

CyberMax

Client
Регистрация
08.02.2018
Сообщения
16
Благодарностей
2
Баллы
3

LaGir

Client
Регистрация
01.10.2015
Сообщения
227
Благодарностей
927
Баллы
93
Ребят подскажите как можно реализовать такую задачу ?
Например, так:
C#:
//Число
int c = 57;

//Сколько брать предыдущих
int before = 6;
//Сколько брать следующих
int after = 6;

//Перебираем соседние числа (начинаем с число-6, заканчиваем число+6)
for (int i = c-before; i <= c+after; i++)
{
    int digit = i;
    //Если текущее число больше 60, уменьшаем его на 60
    if (digit > 60)    digit -= 60;
    //Если текущее число меньше 1, увеличиваем его на 60
    else if (digit < 1)    digit += 60;
    //Добавляем число в список "Числа"
    project.Lists["Числа"].Add(digit.ToString());
}
На кубиках логика такая же со счётчиком, думаю всё понятно.
 
  • Спасибо
Реакции: CyberMax

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 122
Баллы
113
Не совсем понятно, в каком виде нужно данные получить, пока как-то так:
C#:
int s = int.Parse(project.Variables["num"].Value);
DateTime dt = new DateTime(1970, 1, 1, 0, 0, s);
List<int> res = new List<int>();
for (int i = -6; i <= 6; i++)
    res.Add(dt.AddSeconds(i).Second);
return string.Join(" ", res);
 

CyberMax

Client
Регистрация
08.02.2018
Сообщения
16
Благодарностей
2
Баллы
3
думаю всё понятно
Спасибо , идея хорошая , это если числа идут по порядку , а если числа разбросаны не по порядку к примеру - 1 22 45 39 55 25 66 ....... Подскажи пожалуйста как реализовать ? Они хоть и не по порядку но постоянные...
 

Mikhail B.

Client
Регистрация
23.12.2014
Сообщения
14 415
Благодарностей
5 454
Баллы
113
@CyberMax


Запрещено
Создание тем с заголовком, несоответствующим теме или не несущем никакой информации, особенно темы в 1 слово: помогите, проблема, беда и т.д.[/COLOR]
 
  • Спасибо
Реакции: Sergodjan

LaGir

Client
Регистрация
01.10.2015
Сообщения
227
Благодарностей
927
Баллы
93
Спасибо , идея хорошая , это если числа идут по порядку , а если числа разбросаны не по порядку к примеру - 1 22 45 39 55 25 66 ....... Подскажи пожалуйста как реализовать ? Они хоть и не по порядку но постоянные...
Сразу нужно точные условия озвучивать)

Например, так. В списке проекта "Исходные числа" должны лежать числа "1 22 45 39 55 25 66 ...", результат в список "Числа".
C#:
//Число
int c = 57;

//Сколько брать предыдущих
int before = 6;
//Сколько брать следующих
int after = 6;

//Получаем исходный список
var inputList = project.Lists["Исходные числа"];
//Получаем индекс числа в списке
int num = inputList.IndexOf(c.ToString());
//Перебираем соседние по индексу числа в списке
for (int i = num-before; i <= num+after; i++)
{
    int digit = i;
    //Если текущий индекс больше кол-ва элементов в списке, уменьшаем его на это кол-во
    if (digit >= inputList.Count)    digit -= inputList.Count;
    //Если текущее число меньше 0, увеличиваем его на кол-ва элементов в списке
    else if (digit < 0)    digit += inputList.Count;
    //Добавляем число с текущим индексом в список "Числа"
    project.Lists["Числа"].Add(inputList[digit]);
}
 
  • Спасибо
Реакции: CyberMax

CyberMax

Client
Регистрация
08.02.2018
Сообщения
16
Благодарностей
2
Баллы
3
  • Спасибо
Реакции: Mikhail B.

Кто просматривает тему: (Всего: 2, Пользователи: 0, Гости: 2)