Верните длину массива INT N, содержащие первые N цифры PI?(C #)
Вопрос
на тему строку, которую я пытаюсь вернуть длину массива int n, содержащая первые n цифры Pi.
SO MACKPI (3) -> {3, 1, 4}
Я знаю, что мне нужно получить PI, и он хранится как двойной.Мне нужно преобразовать двойной в символ, чтобы я мог искать через массив, чтобы найти каждый чар, N по длине.Затем конвертировать его обратно в массив INT.
У меня есть проблемы, куда идти отсюда.Я знаю, что есть петля, но я не могу получить мозг, чтобы выяснить, что именно мне нужно сделать.Спасибо!
public int[] MakePie(int n)
{
double pi = Math.PI;
char newPi = Convert.ToChar(pi);
char[] newArray = new char[n];
newArray[0] = newPi;
int numbers = Convert.ToInt32(pi);
for (int i = 0; i < n; i++)
{
}
return newArray;
}
. Решение
Попробуйте это: он также избавится от десятичных данных.
public static int[] MakePie(int n)
{
double pi = Math.PI;
var str = pi.ToString().Remove(1, 1);
var chararray = str.ToCharArray();
var numbers = new int[n];
for (int i = 0; i < n; i++)
{
numbers[i] = int.Parse(chararray[i].ToString());
}
return numbers;
}
. Другие советы
var res = pi.ToString().Where(x => x != '.').Take(n).Select(x => (int)char.GetNumericValue(x)).ToArray();
. Вот решение, которое не требует конверсии строки, поскольку ваша конечная цель состояла в том, чтобы вернуть генеракодицетагкод.
public int[] MakePie(int n){
double pi = Math.PI;
int[] result = new int[n];
for (int i = 0; i < n; i++) {
result[i] = (int) Math.Floor(pi);
pi -= result[i];
pi *= 10;
}
return result;
}
. private int[] getPiVal()
{
string pi = Math.PI + "";
int[] piarray = new int[3];
for (int i = 0; i < 3; i++)
{
piarray[i] = Convert.ToInt32(pi[i] + "");
}
return piarray;
}
. Моя стратегия состояла в том, чтобы получить каждую цифру, которую я хотел в положении подразделений, умножая Pi по соответствующей мощности десять, а затем получение результата этого номера мода 10.
public int[] MakePi(int n)
{
int[] result = new int[n];
for (int i = 0; i < n; i++)
{
result[i] = (int)(Math.PI * Math.Pow(10, i)) % 10;
}
return result;
}
.