волшебная функция
// The magic function.
static (int Index, int Value) MagicFunction(int[] array, int target)
{
    int index = Array.IndexOf(array, target);
    return index != -1 ? (index, array[index]) : (-1, -1);
}
// Используем.
int[] numbers = {2, 4, 6, 8, 10};
int t = 6;
(int i, int v) = MagicFunction(numbers, t);
Console.WriteLine(i != -1 ? $"Элемент {v} найден по индексу {i}." : $"Элемент {t} не найден в массиве.");
// Элемент 6 найден по индексу 2.get_substr("один", "два три четыре"), ты в функцию передаешь два строковых литерала, тип которых - const char[ N ], где N - это длина строки литерала включая терминальный символ '\0'.const char* в char* недопустимо, поэтому компилятор и пишет тебе ошибку.char* вообще не нужен, т.к. полностью все операции у тебя не приводят к изменению состояния строки. Заменить char* на const char* будет и логичнее, и понимаемость кода тоже улучшит.      5 будет являться числовым литералом с типом int.5u, то тип бы уже был unsigned int. А если бы ты написал 5lu, то тип бы уже был unsigned long int.      namespace DelegateDemo
{
    public delegate string DemoDel(string s);
   
    class Program
    {  
        static void Main(string[] args)
        {
            ParamMethod(DelLink); // передача ссылки на метод DelLink в ParamMethod
            ParamMethod(s => "(" + s + ")"); // передача анонимной функции в ParamMethod
            Console.ReadKey();
        }
        static bool ParamMethod(DemoDel d)
        {
            if(d("что угодно") == "2")
            {
                Console.WriteLine("делегат вернул 2");
            }
            if(d("5") == "(5)" && d("100500") == "(100500)")
            {
                Console.WriteLine("делегат обернул число в скобки");
            }
        }
        static string DelLink(string s)
        {
            return "2";
        }
    }
} 
  
  почему я неправильно ссылаюсь к указателю в структуре?zmienna_strukt.a=NULL; ... scanf("%s", wsk->a);
struct morgan zmienna_strukt;
    struct morgan *wsk;
    unsigned char buf[100];
    wsk=&zmienna_strukt;
    printf("Впиши значение: ");
    fflush(stdout);
    scanf("%d", &zmienna_strukt.b);
    printf("%d \n\n", zmienna_strukt.b);
    zmienna_strukt.a=buf;
    buf[0] = 0;
    printf("%s \n\n", zmienna_strukt.a);
    printf("Впиши значение: ");
    fflush(stdout);
    scanf("%s", wsk->a);
    printf("%s \n\n", wsk->a);Console.WriteLine((1.0 / 7).ToString());Console.WriteLine((1 / 7.0).ToString());Console.WriteLine((1f / 7).ToString());Console.WriteLine((1 / 7d).ToString());Console.WriteLine((((double)1) / 7).ToString());Console.WriteLine((1 /((float)(7))).ToString());Console.WriteLine(((float)(1 / 7)).ToString("0.##"));Давно я конечно не писал на C#..
..или изменилась правила деления?