Ошибка компиляции с массивом - System.ArgumentOutOfRangeException - C#

Узнай цену своей работы

Формулировка задачи:

В строке

33

выдает ошибку: почему?

Необработанное исключение типа "System.ArgumentOutOfRangeException" в mscorlib.dll Дополнительные сведения: Индекс и длина должны указывать на позицию в строке.

Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. namespace BrainfuckSolution{
  7. class BrainfuckCore{
  8. private int INDEX = 0; // индекс элемента buff
  9. private int COUNT = 0; // количество символов в buff
  10. private int SIZE = 0; // размер строки от символа до символа
  11. private string RESULT;
  12. private string code; //строка кода
  13. private char[] buff; //массив комманд
  14. private char[] code_chars; // масив code
  15. public BrainfuckCore(string code){
  16. this.code = "++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++. ------.--------.>+.>." // Для обозначения обрабатываемого текста;
  17. code_chars = code.ToCharArray();
  18. command();
  19. }
  20. // Комманды кода
  21. private void command(){
  22. int i=0;
  23. chars();
  24. while(i<code.Length){
  25. switch(code_chars[i]){
  26. case '[':
  27. int size = getSize(code.Substring(i,code.Length));
  28. String str = code.Substring(i+1,i+SIZE-1);
  29. int length = str.Length;
  30. cycle(buff[INDEX],length, str);
  31. i += size-1;
  32. break;
  33. case '>':
  34. next();
  35. i++;
  36. break;
  37. case '+':
  38. inc();
  39. i++;
  40. break;
  41. case '<':
  42. previous();
  43. i++;
  44. break;
  45. case '-':
  46. dec();
  47. i++;
  48. break;
  49. case '.':
  50. getChar();
  51. i++;
  52. break;
  53. default:
  54. i++;
  55. break;
  56. }
  57. }
  58. }
  59. // Подсчет символов в циклах
  60. private int getSize(String str)
  61. {
  62. this.SIZE = 0;
  63. int f=0;
  64. int l=0;
  65. for(int k=0;k<str.Length;k++) {
  66. if (str.ToCharArray()[k] == '[') {
  67. f++;
  68. SIZE++;
  69. }else if (str.ToCharArray()[k] == ']') {
  70. l++;
  71. SIZE++;
  72. }else SIZE++;
  73. if (f == l) {
  74. k = str.Length - 1;
  75. return SIZE;
  76. }
  77. }
  78. return SIZE;
  79. }
  80. }
  81. }

Решение задачи: «Ошибка компиляции с массивом - System.ArgumentOutOfRangeException»

textual
Листинг программы
  1.         string code = "++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++. ------.--------.>+.>.";
  2.         int begin = code.IndexOf("[");
  3.         int end = code.LastIndexOf("]");
  4.         begin = (begin != -1) ? begin + 1 : 0;
  5.         end = (end != -1) ? end : 0;
  6.         code = code.Substring(begin, (code.Length - begin) - (code.Length - end));
  7.         if (code.Length == 0) Console.ReadKey(); //Выход из функции
  8.         MatchCollection match = Regex.Matches(code, @"[\+\>\<\-\.]");
  9.         code = String.Empty;
  10.         for (int i = 0; i < match.Count; i++)
  11.         {
  12.             code += match[i].Value;
  13.         }
  14.         Console.Write(code);
  15.         char[] code_chars = code.ToCharArray();
  16.         //chars(); Понятия не имею к чему это о_О
  17.         foreach (char ch in code_chars)
  18.         {
  19.             switch (ch)
  20.             {
  21.                 case '>':
  22.                     //next(); Какая то функция next();
  23.                     break;
  24.                 case '+':
  25.                     //inc(); Какая то функция inc();
  26.                     break;
  27.                 case '<':
  28.                     //previous(); Какая то функция previous();
  29.                     break;
  30.                 case '-':
  31.                     //dec(); Какая то функция dec();
  32.                     break;
  33.                 case '.':
  34.                     //getChar(); Какая то функция getChar();
  35.                     break;
  36.             }
  37.         }
  38.         Console.ReadKey();

ИИ поможет Вам:


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

Оцени полезность:

12   голосов , оценка 3.917 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут