Ответы пользователя по тегу C++
  • Как решить данную задачу?

    aush
    @aush
    С произвольным шагом:

    using System;
    using System.Linq;
    
    class Program
    {
        static void Main()
        {
            Console.WriteLine(GetLastStanding(11, 4));
        }
    
        static int GetLastStanding(int n, int step)
        {
            var items = Enumerable.Range(0, n)
                            .Select(position => new Item { Position = position }).ToArray();
            var i = 0;
            var stepCounter = 0;
            var nCounter = n;
            while (nCounter > 1)
            {
                if (!items[i].Marked && ++stepCounter == step)
                {
                    stepCounter = 0;
                    items[i].Marked = true;
                    --nCounter;
                    Console.WriteLine(string.Join(", ",
                        items.Select(item => item.Marked ?
                            "_" : (item.Position + 1).ToString())));
                }
    
                i = (i + 1) % n;
            }
            return items.Single(item => !item.Marked).Position;
        }
    
        struct Item
        {
            public int Position;
            public bool Marked;
        }
    }
    Ответ написан
    Комментировать
  • Есть ли в C# аналог numeric_limits из C++?

    aush
    @aush
    У числовых типов в .Net есть статические поля MinValue и MaxValue, поэтому вашу задачу можно решить рефлексией:

    public class MyNumeric<T> where T : struct, IComparable<T>, IEquatable<T>, IConvertible
    {
      public static readonly T MaxValue = ReadStaticField("MaxValue");
      public static readonly T MinValue = ReadStaticField("MinValue");
    
      private static T ReadStaticField(string name)
      {
        FieldInfo field = typeof(T).GetField(name, BindingFlags.Public | BindingFlags.Static);
        if (field == null)
        {
          throw new InvalidOperationException("Нечисловой тип: " + typeof(T).Name);
        }
        return (T)field.GetValue(null);
      }
    }


    Соответственно, использование:

    Console.WriteLine(MyNumeric<int>.MaxValue);
    Console.WriteLine(MyNumeric<float>.MinValue);
    Ответ написан
    1 комментарий
  • Как работать с 2D-графикой?

    aush
    @aush
    На эту тему очень много инфы. Вам что конкретно надо? Написать на шарпе утилиту для перекодирования каких-нибудь форматов для курсовой работы, понять общие принципы кодирования изображений или хотите новый алгоритм придумать?

    В такой абстрактной формулировке могу посоветовать почитать спецификации JPEG-ов, если осилите, гораздо лучше будете ориентироваться в теме.
    Ответ написан
    Комментировать