2015-11-07 4 views
0

Это то, что я пытаюсь сделать:Создание матрицы

Напишите программу на C#, которая анализирует строку, такую ​​как A = like A = [5 4 1; 3 6 1; 2 3 9], который создает матрицу A из m> = 2 строк и n> = 1 столбцов.

Я знаю, как создать матрицу, введя единичные целые числа за один раз, но я не знаю, как читать ее так: A = [5 4 1; 3 6 1; 2 3 9] и создать из него матрицу. Я ударяю о стену. Я не знаю, как использовать синтаксис таким образом. Мне нужны советы и предложения.

я сделал что-то вроде этого:

 string x; 
     int m; 
     int n; 

     Console.WriteLine("Enter two no's seperated by space: "); 

     x = Console.ReadLine(); 
     m = Convert.ToInt32(x.Split(' ')[0]); 
     n = Convert.ToInt32(x.Split(' ')[1]); 

     Console.WriteLine("" + m + " " + n); 

, но где бы разобрать вступить в игру?

отредактировал: Я ошибаюсь, что такое синтаксический анализ? это синтаксический анализ string.split?

отредактировал: Я пытаюсь использовать код, который у них есть на msdn: он использует foreach и помещает каждый элемент в другую строку. Как бы я помещал его в матричный формат 3x3?

char[] delimiterChars = { ' ', ',', '.', ':', '\t' ,'[' ,']', ';', '"', 'A', '=' }; 

    string text = "A = [5 4 1; 3 6 1; 2 3 9]"; 
    System.Console.WriteLine("Original text: '{0}'", text); 

    string[] words = text.Split(delimiterChars); 
    System.Console.WriteLine("{0} words in text:", words.Length); 

    foreach (string element in words) 
    { 
     System.Console.WriteLine(element); 
    } 

    // Keep the console window open in debug mode. 
    System.Console.WriteLine("Press any key to exit."); 
    System.Console.ReadKey(); 
+0

Вы можете начать с чтения о '' string.Split' или Regex' – Eser

+0

я сделал что-то вроде этого: строки х; int m; int n; Console.WriteLine («Введите два ноль, разделенные пробелом:»); x = Console.ReadLine(); m = Convert.ToInt32 (x.Split ('') [0]); n = Convert.ToInt32 (x.Split ('') [1]); Console.WriteLine ("" + m + "" + n); –

+0

Чтобы прояснить вашу путаницу терминологии, синтаксический анализ - это всего лишь процесс принятия строки и преобразования ее в полезный объект. Он не относится к определенному методу или классу (хотя, конечно, существует множество методов и классов разбора, предоставляемых BCL). –

ответ

0

Немного Regex, строка раскола вместе с Linq

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

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      string input = "A = [5 4 1; 3 6 1; 2 3 9]"; 

      string pattern = @"(?'name'\w+)\s+=\s+\[(?'numbers'[^\]]+)\]"; 
      Match match = Regex.Match(input, pattern); 
      string name = match.Groups["name"].Value; 

      string numbers = match.Groups["numbers"].Value; 

      List<List<int>> array = numbers.Split(new char[] { ';' }).Select(x => x.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries).Select(z => int.Parse(z)).ToList()).ToList(); 
     } 
    } 
} 
​ 
+0

Я посмотрел на вас код, и это помогло мне больше. Спасибо! но что бы я использовал Console.WriteLine()? –

+0

помещает WriteLine() в два для циклов: for (int m = 0; m jdweng

Смежные вопросы