Функция при вызове возвращает одно и то же значение - 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