@KirillIvanov28

Решил написать библиотеку.Вроде ошибок нету, но при тестировании говорит, что индекс находиться вне границ массива.Как исправить???

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

namespace AlphaEditor
{ //весь код считает кол-во слов в тексте 
    public class EditText
    {
        public static int NumberOfWords(string text)
        {
            string znaki = @" !@#$%^&*()_+-={}[]<>,./\1234567890";
            int lenght = text.Length;
            int i, j, n, result;
            char x;
            bool t = true;
            bool f = false;
            bool h;
            result = 0;
            for (i = 0; i == lenght; i++)
            {
                x = text[i];
                h = Helper(x,znaki,t);
                if (h)
                {
                    for (j = 1; j == lenght; j++)
                    {
                        n = i + j;
                        x = text[n];
                        h = Helper(x, znaki, f);
                        if(h)
                        {
                            result += 1;
                            i = n;
                            break;
                        }
                    }
                }
            }
            h = Helper(text[lenght], znaki, f);
            if (h)
            {
                result += 1;
            }
            h = Helper(text[0], znaki, t);
            if (h)
            {
                result -= 1;
            }
            return result;         
        }
        private static bool Helper(char a, string b, bool w)
        {
            int i=0;
            int c = b.Length;
            if (c == 0)
            {
                return (false);
            }
            if (i == c)
            {
                return false;
            }

            if (w == true)
            {


                for (i = 0; i == c; i++)
                {
                    if (a == b[i])
                    {
                        return (true);
                    }
                    else
                    {
                        return (false);
                    }
                }
            }
            else
            {
                for (i = 0; i == c; i++)
                {
                    if (a != b[i])
                    {
                        return (true);
                    }
                    else
                    {
                        return (false);
                    }
                }
            }
            return (false);
        }
    }     
}


2b8fdb8811cc4f3082c19fc4e8feea0a.png
  • Вопрос задан
  • 251 просмотр
Решения вопроса 1
AtomKrieg
@AtomKrieg
Давай я поищу в Google за тебя
Вам правильно говорят, что весь код одна большая ошибка. Если вы не взяли его с www.govnokod.ru, а написали сами, то у меня для вас плохие новости.

Вот пример ошибки:
Если i = length, j = length, то n = 2*length а это уже больше чем размер массива.
n = i + j;
x = text[n];
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
DmitryITWorksMakarov
@DmitryITWorksMakarov
Это шутка такая? Я более отвратительного кода в жизни не видел.
Это из цикла:
- где ошибка?
- в днк...
Ответ написан
Комментировать
sivabur
@sivabur
Заблокировали просто так!
Слов в тексте считает вот эта строчка
(text.split(" ?!".ToCharArray())).Length

В общем вы написали очень сильный велосипед начинайте с задач полегче. Смотрите на код других людей.
Цыкл на шарпе обычно пишут в таком формате в прицепе как и на других языках
for (int i = 0; i < c; i++)
{
...
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы