Restituire una lunghezza dell'array int n contenente le prime cifre di PI?(c #)
Domanda
Per la riga dell'oggetto Sto cercando di restituire una lunghezza dell'array int contenente le prime cifre n di PI.
Allora MakePI (3) -> {3, 1, 4}
So che ho bisogno di prendere PI e viene memorizzato come un doppio.Ho bisogno di convertire il doppio in un carattere in modo che io possa cercare attraverso l'array per trovare ogni char, n di lunghezza.Quindi convertirlo su un array int.
Sto avendo problemi su dove andare da qui.So che c'è un ciclo ma non riesco a far capire il cervello esattamente quello che devo fare.Grazie!
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;
}
. Soluzione
Prova questo: eliminerà anche il decimale.
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;
}
. Altri suggerimenti
Modificato per ritornare la matrice di int
var res = pi.ToString().Where(x => x != '.').Take(n).Select(x => (int)char.GetNumericValue(x)).ToArray();
. Ecco una soluzione che non richiede una conversione di stringa, dal momento che il tuo obiettivo finale è stato quello di restituire un int[]
.
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;
}
. La mia strategia doveva ottenere ogni cifra che volevo nella posizione delle unità moltiplicando la PI dalla pertinente potenza di dieci, quindi ottenendo il risultato di quel numero mod 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;
}
.