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 756 Точки

Компилатора ясно ти казва,че не може да превърне аргумента към 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 756 Точки

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

Select(x => x).

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

0
StefanVez avatar StefanVez 1 Точки

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

0
StefanVez avatar StefanVez 1 Точки

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

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