Loading...
Elena123456 avatar Elena123456 235 Точки

Въпрос от Arrays-запис на точно определени елементи от един масив в друг с различна дължина от първоначалния

Изгледах няколко лекции от Programming Fundamental за масиви, търсех информация във форуми, но не успях да намеря отговора на въпроса ми. Възможно е и нещо да съм пропуснала от обучението. Зная как да записвам елементи от един масив в друг, но ако искам новия масив да е с различна дължина записа не се получава. Моля за малко разяснение за да мога да приключа с масивите и да продължа по-нататъка. Вече трета седмица стоя само на масиви.

Ето един пример за по-нагледно:

Input:               Output:

1 3 2 4 6            2 4

2 even

 

Input:               Output:

1 3 2 4 6            2 4 6 (искам да печата, колкото има, т.е в случая само 3)

4 even

 

Input:               Output:

2 2 4 6            "Invalid index"

3 odd

 

Input:                  Output:

1 4 6 8 3 5             1 3 5

3 odd

 

 

 

За съжаление успявам само да прочета масива и командата, но не и да запиша четните числа в нов масив:

using System;
using System.Linq;


namespace Arrays1
{
    class MainClas
    {
        public static void Main()
        {

            int[] array = Console.ReadLine().Split().Select(int.Parse).ToArray();
            string command = Console.ReadLine();
            string[] commandArr = command.Split();
            int index = int.Parse(commandArr[0]);
            string type = commandArr[1];


            if (type == "even")
            {
                int[] newArr = new int[index];
                if (index <= array.Length)
                {
                    for (int i = 0; i < array.Length - 1 && i < index; i++)
                    {
                        if (array[i] % 2 == 0)
                        {

                            newArr[index] = array[i];
                        }

                    }

                    Console.WriteLine(string.Join(" ", newArr));
                }

                else
                {
                    Console.WriteLine("Invalid index");
                }

            }
        }
    }

}

 

Тагове:
0
Programming Fundamentals
krum_43 avatar krum_43 756 Точки

Задачата се решава много по лесно ако използваш един списък,в който да натрупваш числата,които трябва да извдеш.

Ето ти един кратък код на C#:

 


        static void Main(string[] args)
        {
            int[] numbers = Console.ReadLine().Split().Select(int.Parse).ToArray();
            List<int> output = new List<int>();
            string command = Console.ReadLine();
            string[] commandSplit = command.Split();
            int currentCount = 0;
            int count = int.Parse(commandSplit[0]);
            string evenOrAdd = commandSplit[1];
            if (evenOrAdd == "even")
            {
                for (int i = 0; i <numbers.Length  ; i++)                              
                {
                    if (numbers[i] % 2 == 0)
                    {
                        currentCount++;
                        output.Add(numbers[i]);
                        if ((currentCount == count) || (i ==numbers.Length - 1))
                        {
                            if(output.Count==0)
                            {
                                Console.WriteLine("Invalid index");
                            }
                            Console.WriteLine(String.Join(" ", output));
                            return;
                        }
                    }
                }
            }
            if (evenOrAdd == "odd")
            {
                foreach (var number in numbers)
                {
                    if (number % 2 == 1)
                    {
                        currentCount++;
                        output.Add(number);
                        if ((currentCount == count) || (number == numbers[numbers.Length - 1]))
                        {
                            if (output.Count == 0)
                            {
                                Console.WriteLine("Invalid index");
                            }
                            Console.WriteLine(String.Join(" ", output));
                            return;
                        }
                    }
                }
            }
                                      
        }
    }
}
 

 

1
22/07/2020 09:03:41
Elena123456 avatar Elena123456 235 Точки

Благодаря! Тъкмо навлизам в списъците и ми трябва малко време да осъзная решението Ви, но със сигурност ще ми е от полза.

Поздрави!

 

1
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.