Софтуерно Инженерство
Loading...
+ Нов въпрос
retterathtom avatar retterathtom 4 Точки

Append Arrays

Привет

 

Задачата не ми е ясна. Като напиша конзолата да чете с "|", ми гърми и не се сещам как да обърна отзад/напред и отляво/надясно. Моля за помощ и ако може примерно решение.

7.Append Arrays

Write a program to append several array of numbers.

  • arrays are separated by ‘|’.
  • Values are separated by spaces (‘ ’, one or several)
  • Order the arrays from the last to the first, and their values from left to right.

Благодаря предварително! smiley

Тагове:
1
Fundamentals Module
VasilKostov avatar VasilKostov 134 Точки
Best Answer

Привет,

Първо трябва да прочетеш инпута и да гo Split-неш по ('|'), след което за да стане последния първи (Order the arrays from the last to the first) - просто го Reverse-ваш, може и още при четенето и ще се получи нещо такова:

List<string> numbersAsStrings = Console.ReadLine()
                                .Split('|')
                                .Reverse()
                                .ToList();

След това (вече са подредени отзад-напред), трябва да сплитнеш всеки стринг, по отделно и да ги добавиш в един List<int> или да събереш Lista-a от string-ове в 1 стринг и него да Split-неш, по един или повече спейсове и да го налееш в един List<int>.

Аз съм го направеил по първият начин и изглежда така:

foreach (var str in numbersAsStrings)
{
    numbers.AddRange(str.Split(" ", StringSplitOptions.RemoveEmptyEntries)
                        .Select(int.Parse)
                        .ToList()
                         );
}

Забележи, че Split-вам променливата "Str", която е индивидуален string от List-а със string-ове!

И по този начин числата си се редят отляво - надясно.

1
29/10/2018 14:47:04
retterathtom avatar retterathtom 4 Точки

Много добре описано! При примерите дадени са дали лист от 1 2 3 | 5 6 7 | 8 9 10. 5 6 и 7 няма да бъдат местени и резултата ще бъде 8 9 10 | 5 6 7 | 1 2 3. Как да напиша кода по начин където 5 6 и 7 няма да мръднат? 

1
VasilKostov avatar VasilKostov 134 Точки

Както написах, в предишния коментар:

List<string> numbersAsStrings = Console.ReadLine()
                                            .Split('|')
                                            .Reverse()
                                            .ToList();

По този начин сменяш само местата на стринговете, от инпута - разделени по '|', но не разменяш местата на числата в тях, следователно 1 2 3 | 5 6 7 | 8 9 10  ще сатане  List<string> 8 9 10  5 6 7  1 2 3, като всеки цвят е отделен стринг в този List, като всяко число остава на мястото си.

0
retterathtom avatar retterathtom 4 Точки

Благодаря ти. Проверих защо ми гърмеше и видя къде е грешката. Ето го правилното: numbers.AddRange(str.Split(new[] { " " }, StringSplitOptions.RemoveEmptyEntries)
                                    .Select(int.Parse)
                                    .ToList()
                                     );

Мерси, че ми помогна!

1
Kotomanov avatar Kotomanov 8 Точки

Здравейте

 

Споделям едно решение от мен , в случай, че някой от текущия Тех Модул  има нужда да погледне :

 

List<string> numbers = Console.ReadLine().Split('|', StringSplitOptions.RemoveEmptyEntries).Reverse().ToList();

   
   for (int i = 0; i < numbers.Count; i++)
   {
    List<string> work = numbers[i].Split(" ", StringSplitOptions.RemoveEmptyEntries).ToList();

    
    for (int j = 0; j < work.Count; j++)
    {

     Console.Write($"{work[j]} ");


    }

   }

 

0
Zstefanov avatar Zstefanov 1 Точки

Благодарим!

0