Restituire una lunghezza dell'array int n contenente le prime cifre di PI?(c #)

StackOverflow https://stackoverflow.com//questions/23033367

  •  21-12-2019
  •  | 
  •  

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;

    }
.

È stato utile?

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; 
}
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top