Професионална програма
Loading...
StefanVez avatar StefanVez 1 Точки

Проблем със .Split и StringSplitOptions.RemoveEmptyEntries

Здравейте, 
Имам  проблем със .Split и StringSplitOptions.RemoveEmptyEntries. VS ми ги подчертава и ми дава грешка:
Error    CS1503    Argument 1: cannot convert from 'string' to 'char'    


Error    CS1503    Argument 2: cannot convert from 'System.StringSplitOptions' to 'char'    
 

Така не мога да стартирам компилатора. Слагам решението в Judge и получавам 100/100. Явно имам някакъв проблем с версията или настройките. Ползвам Visual Studion 2017. Предполагам че трябва да се добави нещо но не зная какво. Всяка насока ще ми бъде полезна. Благодаря! 

 

krum_43 avatar krum_43 379 Точки

Компилатора ясно ти казва,че не може да превърне аргумента към char.

Интересно как взимаш 100/100 в джъджа?!?

                             :):):)

0
StefanVez avatar StefanVez 1 Точки

Да, и то се случва на различни задачи и различни решения. Пробвам да кача VS 2019 и да видя дали ще се оправи. Прилагам едно решение от форума  което на мен ми гърми но минава в Judge. Дава ми тази грешка:
Severity    Code    Description    Project    File    Line    Suppression State
Error    CS1503    Argument 2: cannot convert from 'System.StringSplitOptions' to 'char'        12    Active

 

 

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

namespace _08._Anonymous_Threat
{
    public class Anonymous_Threat
    {
        public static void Main()
        {
            var input = Console.ReadLine().Split(' ', StringSplitOptions.RemoveEmptyEntries).Select(x => x).ToList();

            string command = Console.ReadLine();
            while (command != "3:1")
            {
                string[] commandDetails = command.Split(' ');
                switch (commandDetails[0])
                {
                    case "merge":
                        int startIndex = int.Parse(commandDetails[1]);
                        int endIndex = int.Parse(commandDetails[2]);
                        if (startIndex < 0)
                        {
                            startIndex = 0;
                        }
                        else if (startIndex >= input.Count)
                        {
                            command = Console.ReadLine();
                            continue;
                        }

                        if (endIndex >= input.Count)
                        {
                            endIndex = input.Count - 1;
                        }

                        input = Merge(input, startIndex, endIndex);
                        break;
                    case "divide":
                        int index = int.Parse(commandDetails[1]);
                        int partitions = int.Parse(commandDetails[2]);  // range 0 - 100
                        if (partitions == 0)
                        {
                            command = Console.ReadLine();
                            continue;
                        }

                        Divide(input, index, partitions);
                        break;
                }

                command = Console.ReadLine();
            }

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

        private static void Divide(List<string> input, int indexOfElementToDivide, int partitions)
        {
            string elementToDivide = input[indexOfElementToDivide];
            string dividedElement = "";
            if (elementToDivide.Length % partitions != 0)
            {
                // when division CANNOT make equal parts
                int lengthOfPartitions = elementToDivide.Length / partitions;
                int lengthOfLastPartition = lengthOfPartitions + (elementToDivide.Length % partitions);
                for (int i = 0; i < partitions - 1; i++)
                {
                    dividedElement += elementToDivide.Substring(0, lengthOfPartitions);
                    dividedElement += " ";
                    elementToDivide = elementToDivide.Remove(0, lengthOfPartitions);
                }

                dividedElement += elementToDivide;
            }
            else
            {
                // when division CAN make equal parts
                int lengthOfPartitions = elementToDivide.Length / partitions;
                for (int i = 0; i < partitions; i++)
                {
                    dividedElement += elementToDivide.Substring(0, lengthOfPartitions);
                    dividedElement += " ";
                    elementToDivide = elementToDivide.Remove(0, lengthOfPartitions);
                }
            }


            // collect all parts
            List<string> result = input;

            result.RemoveAt(indexOfElementToDivide);
            result.InsertRange(indexOfElementToDivide, dividedElement.Split(" ".ToCharArray(), StringSplitOptions.RemoveEmptyEntries).ToList());

            input = result.ToList();
        }

        private static List<string> Merge(List<string> input, int startIndex, int endIndex)
        {
            List<string> merged = input;

            StringBuilder sb = new StringBuilder();
            for (int i = startIndex; i <= endIndex; i++)
            {
                sb.Append(input[i]);
            }

            merged.RemoveRange(startIndex, endIndex - startIndex + 1);
            merged.Insert(startIndex, sb.ToString());

            return merged.ToList();
        }
    }
}

 

 

тук е линка за Judge:

https://judge.softuni.bg/Contests/Practice/Index/1211#7

0
28/10/2019 11:09:25
krum_43 avatar krum_43 379 Точки

На линия 12 единственото нещо,което ме съмнява дали е вярно е :

Select(x => x).

Пробвай без него!

0
StefanVez avatar StefanVez 1 Точки

Пробвах, няма резултат. Същия проблем или и със .Split.

0
StefanVez avatar StefanVez 1 Точки

Току що качих 2019 и няма проблем, предполагам че всичко идва от старата версия(2017). Мерси 

0