Mapowanie tablicy jednowymiarowej

0

Proszę pomocy. Uczę się programować i próbuję napisać program, który wyniki obliczeń wpisze do drugiej tablicy tego samego wymiaru to znaczy mam zadeklarowaną tablicę nr 1 wykonuję obliczenie i wyniki tych obliczeń mają się zapisać do drugiej tablicy pomimo tego, że kompilator nie pokauzje błędu to i tak program nie może się wykonać :/

Proszę o podpowiedź.

Pozdrawiam

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication7
{
    class Program
    {
        static void Main(string[] args)
        {
            double zgp = 8.47;
            double[] firstArray={0,1.63,3.31,5.04,6.49,7.55,8.22,8.50,8.44,8.03};

            for (int i = 0; i < 10; i++) 
            {
                double gz=firstArray[i] - (Math.Sin((i * 10) * (Math.PI / 180))) * zgp;

                double[] secondArray = new double[firstArray.Length];
                secondArray[firstArray.Length] = gz;
                Console.Write(secondArray + "   ");
                            
            }           
            Console.ReadKey();
        }
    }
}/>
2
static void Main(string[] args)
{
    double[] firstArray = {0,1.63,3.31,5.04,6.49,7.55,8.22,8.50,8.44,8.03};
    double[] secondArray = new double[firstArray.Length];

    for (int i = 0; i < firstArray.Length; i++) {
        secondArray[i] = Map(i, firstArray[i]);
    }

    foreach (double number in secondArray) {
        Console.Write(number);
    }
    
    Console.ReadKey();
}

double Map(int i, double input) {
  double zgp = 8.47;
  return input - (Math.Sin((i * 10) * (Math.PI / 180))) * zgp;
}
2
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication7
{
    class Program
    {
        static void Main(string[] args)
        {
            double zgp = 8.47;
            double[] firstArray={0,1.63,3.31,5.04,6.49,7.55,8.22,8.50,8.44,8.03};
            double[] secondArray=new double[firstArray.Length];
            for (int i=0;i<10;++i) 
            {
                secondArray[i]=firstArray[i]-(Math.Sin((i*10)*(Math.PI/180)))*zgp; // zrób funkcję dla obliczeń
                Console.Write(secondArray[i] + "   ");                            
            }           
            Console.ReadKey();
        }
    }
}
1

Bardzo dziękuję za informację jesteście super.

0
(new [] { 0, 1.63, 3.31, 5.04, 6.49, 7.55, 8.22, 8.50, 8.44, 8.03 })
    .Select((v, i) => Map(i, v))
    .ToList()
    .ForEach(v => Print(v));

Można też minimalistyczniej:

(new [] { 0, 1.63, 3.31, 5.04, 6.49, 7.55, 8.22, 8.50, 8.44, 8.03 })
    .Select((v, i) => { Print(Map(i, v)); return 0; })
    .ToList();
0
ŁF napisał(a):
(new [] { 0, 1.63, 3.31, 5.04, 6.49, 7.55, 8.22, 8.50, 8.44, 8.03 })
    .Select((v, i) => Map(i, v))
    .ToList()
    .ForEach(v => Print(v));

Można też minimalistyczniej:

(new [] { 0, 1.63, 3.31, 5.04, 6.49, 7.55, 8.22, 8.50, 8.44, 8.03 })
    .Select((v, i) => { Print(Map(i, v)); return 0; })
    .ToList();

Średnie chyba, z uwagi na to że .ToList() wygląda jakby miało zwrócić listę, a jest użyte tylko po to żeby zterminować chain i odpalić Print(). Moim zdaniem .ForEach() dużo lepiej przekazuje intencje.

1 użytkowników online, w tym zalogowanych: 0, gości: 1