Создание и выбор массивов для алгоритмов - PullRequest
0 голосов
/ 15 мая 2018

Я делаю консольное приложение на C #, я начинаю с этого языка, поэтому у меня есть некоторые препятствия.Моя задача - создать приложение, которое позволит вам выбрать один из подготовленных алгоритмов и провести с ним некоторые вычисления.Я должен создать три типа массивов, случайный, пользовательский и предопределенный.Затем мне нужно позволить пользователю выбрать один из них и использовать его в других алгоритмах.Например, мне нужно вычислить сумму по элементам из массива.Пользователь должен выбрать массив и затем нажать другую кнопку, чтобы запустить алгоритм.

Пока у меня есть это:

    namespace Menu
{

    static class MenuProste
    {
        public static void StartMenuProste()
        {
            Console.Title = "Moje menu";
            while (true)
            {
                Console.Clear();
                Console.WriteLine(">>> Witaj! Wciśnij klawisz, aby wybrać algorytm! <<<");
                Console.WriteLine("1- Wybierz zdefiniowany wcześniej ciąg.");
                Console.WriteLine("2- Zdefiniuj własny ciąg.");
                Console.WriteLine("3- Wybierz losowy ciąg.");
                Console.WriteLine("4- Suma elementów ciagu n-elementowego.");
                Console.WriteLine("5- Iloczyn elementów ciagu n-elementowego.");
                Console.WriteLine("6- Srednia arytmetyczna elementów ciagu n-elementowego.");
                Console.WriteLine("7- Wypisanie elementów ciagu Fibonacciego");
                Console.WriteLine("8- Ile razy dany element podany na wejsciu wystepuje w danym ciagu n-elementowym. ");
                Console.WriteLine("9- Znajdowanie elementu najwiekszego (najmniejszego) w danym ciagu n-elementowy.");
                Console.WriteLine("0- Koniec");

                int[] tab = null;

                ConsoleKeyInfo klawisz = Console.ReadKey();
                switch (klawisz.Key)


     {
                case ConsoleKey.D1:
                    Console.Clear();
                    tab = PreDefinedArray();
                    break;
                case ConsoleKey.D2:
                    Console.Clear();
                    tab = UserDefinedArray();
                    opcjaWBudowie();
                    break;
                case ConsoleKey.D3:
                    Console.Clear();
                    tab = RandomArray();
                    //average.Execute(tab);
                    break;
                case ConsoleKey.D4:
                    Console.Clear();
                    opcjaWBudowie();
                    break;
                case ConsoleKey.D5:
                    Console.Clear();
                    opcjaWBudowie();
                    break;
                case ConsoleKey.D6:
                    Console.Clear();
                    opcjaWBudowie();
                    break;
                case ConsoleKey.D7:
                    Console.Clear();
                    opcjaWBudowie();
                    break;
                case ConsoleKey.D8:
                    Console.Clear();
                    opcjaWBudowie();
                    break;
                case ConsoleKey.D9:
                    Console.Clear();
                    opcjaWBudowie();
                    break;
                case ConsoleKey.Escape:
                case ConsoleKey.D0:
                    Environment.Exit(0); break;

                default: break;
            }
        }
    }

    private static int[] RandomArray()
    {;
        Random RandomArray = new Random();
        int number = RandomArray.Next(1, 100);

        System.Console.WriteLine(number);
        Console.ReadKey();


    }

    private static int[] UserDefinedArray()
    {
        throw new NotImplementedException();
    }

    private static int[] PreDefinedArray()
    {
        int[] Array = new int[6] {4, 8, 15, 16, 23, 42 };
        return PreDefinedArray();

    }

    static void opcjaWBudowie()
    {
        Console.Write("Opcja w budowie!");
        Console.ReadKey();
    }
}

}

Алгоритмы находятся в том же решении,в разных файлах проекта.Я должен объединить все это.Может ли кто-нибудь помочь мне написать эти массивы, а затем помочь мне изменить мой код, чтобы он использовал эти новые массивы?Это мои средние алгоритмы, подсчитывающие среднее число чисел, которые вы введете

namespace AverageNums


{
    class average
    {
        public static void Execute(int[] tab)
        {
            int iloscLiczb = 0;  //Zmienne, wyzerowane na początku
            double suma = 0;

            Console.Write("Ile liczb chcesz zawrzeć w średniej: "); //Otrzymuję ile liczb będzie branych pod uwagę, int32.Parse konwertuje je na int.(liczbę całkowitą)
            iloscLiczb = Int32.Parse(Console.ReadLine());

            for (int i = 0; i < iloscLiczb; i++) //pętla obliczająca
            {
                Console.Write("Podaj liczbę: "); //Liczby wpisywane przez użytkownika, suma = suma + liczba
                suma += double.Parse(Console.ReadLine());
            }

            Console.WriteLine("Średnia arytmetyczna z podanych liczb wynosi: " + suma / iloscLiczb);
            Console.ReadKey();
        }
    }
}

Также мой код из алгоритма суммы элементов:

    namespace sum
{
    class Sum

    {
        //Suma elementów ciągu n-elementowego
        public void Main(string[] args)
        {
            int wynik = 0; //Wynik wynosi 0
            int[] zbior = new int[] { 4, 8, 15, 16, 23, 42 };  //Zbiór liczb ciągu, + pozycji, zaczyna się od i[0]=4
            for (int i = 0; i < zbior.Length; i++) //Rozpoczęcie pętli, dla i o indexie 0, które jest mniejsze od ilościu elementów zbioru, i zwiększa się o:
            {
                wynik += zbior[i];   // Wynik  + 4 + 8 + 15 + 16 
            }
            Console.WriteLine($"Wynik sumy elementów ciągu wynosi: {wynik.ToString()}");
            Console.ReadKey();
        }
    }
}

Как изменить код такон будет использовать предопределенные массивы?И я получаю сообщение об ошибке

"private static int [] RandomArray (): не все пути кода возвращают значение"

1 Ответ

0 голосов
/ 15 мая 2018

Вот версия для RandomArray() части с подсказками для UserDefinedArray():

private static int[] RandomArray()
{
    Random r = new Random();

    // define size of array (here random between 5 and 30)
    // so for user defined array, maybe ask user the size he wants
    int size = r.Next(5,30);

    // create the array
    int[] array = new int[size];

    // fill the array
    for(int i=0; i<size; i++)
    {
        // for user defined, ask for every value
        array[i] = r.Next(1,100);
    }

    return array;
}

Также обратите внимание, что ваш PreDefinedArray() должен выглядеть так:

private static int[] PreDefinedArray()
{
    int[] array = new int[6] {4, 8, 15, 16, 23, 42 };
    return array;
}

то, что вы написали с return PreDefinedArray(), приведет к бесконечному рекурсивному вызову -> stackoverflow

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...