Функция при вызове возвращает одно и то же значение - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, столкнулся со странным багом: При вызове одной и той же функции несколько раз, которая случайно генерирует математическое выражение на си и возвращает строку с данным выражением, она возвращает одну и ту же строку:
private string GetExampleEasy()
        {
            string Rezult = "";
            Random A = new Random();
            int N;
            //выбираем один из трех шаблонов
            switch (A.Next(1, 4))
            {
                //x1*pow(x,x2)+k - где x1,x2,k = {-5;5}; x1,x2 != 0 и != -1
                case 1:
                    //вычисляем x1
                    //x1 не должен равнятся 0 и -1
                    do
                    {
                        N = A.Next(-5, 6);
                    } while ((N == 0) || (N == -1));
                    if (N != 1)
                    {
                        Rezult += N.ToString();
                        Rezult += "*";
                    }
                    //вычисляем x2
                    //степень не должна равнятся 0
                    do
                    {
                        N = A.Next(-5, 6);
                    } while (N == 0);
                    if (N != 1)
                    {
                        Rezult += "pow(x,";
                        Rezult += N.ToString();
                        Rezult += ")";
                    }
                    else
                    {
                        Rezult += "x";
                    }
                    N = A.Next(-5, 6);
                    if (N > 0)
                    {
                        Rezult += "+" + N.ToString();
                    }
                    else if (N < 0)
                    {
                        Rezult += N.ToString();
                    }
                    break;
                //sqrt(x1*pow(x,x2))+k
                case 2:
                    Rezult += "sqrt(";
                    //вычисляем x1
                    //x1 не должен равнятся 0; x1 = {-3,3}
                    do
                    {
                        N = A.Next(-3, 4);
                    } while ((N == 0) || (N == -1));
                    if (N != 1)
                    {
                        Rezult += N.ToString();
                        Rezult += "*";
                    }
                    //вычисляем x2
                    //степень не должна равнятся 0
                    do
                    {
                        N = A.Next(-5, 6);
                    } while (N == 0);
                    if (N != 1)
                    {
                        Rezult += "pow(x,";
                        Rezult += N.ToString();
                        Rezult += "))";
                    }
                    else
                    {
                        Rezult += "x)";
                    }
                    N = A.Next(-5, 6);
                    if (N > 0)
                    {
                        Rezult += "+" + N.ToString();
                    }
                    else if (N < 0)
                    {
                        Rezult += N.ToString();
                    }
                    break;
                //sqrt(x1*pow(x,x2)+k)
                case 3:
                    Rezult += "sqrt(";
                    //вычисляем x1
                    //x1 не должен равнятся 0; x1 = {-3,3}
                    do
                    {
                        N = A.Next(-3, 4);
                    } while ((N == 0) || (N == -1));
                    int K = N;
                    if (N != 1)
                    {
                        Rezult += N.ToString();
                        Rezult += "*";
                    }
                    //вычисляем x2
                    //степень не должна равнятся 0
                    do
                    {
                        N = A.Next(-5, 6);
                    } while (N == 0);
                    if (N != 1)
                    {
                        Rezult += "pow(x,";
                        Rezult += N.ToString();
                        Rezult += ")";
                    }
                    else
                    {
                        Rezult += "x";
                    }
                    do
                    {
                        N = A.Next(-3, 4);
                    } while (K == N);
                    if (N > 0)
                    {
                        Rezult += "+" + N.ToString();
                    }
                    else if (N < 0)
                    {
                        Rezult += N.ToString();
                    }
                    Rezult += ")";
                    break;
            }
            return Rezult;
        }
Теперь, если ее вызвать из другой функции несколько раз, она вернет одну и ту же строку. Хотя если поставить брекпоинт на первую строку
 string Rezult = "";
то все проходит нормально. В чем дело?

Решение задачи: «Функция при вызове возвращает одно и то же значение»

textual
Листинг программы
static

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.286 из 5
Похожие ответы