Сохранение в двумерный массив значений посчитанных символов в подстроке - C#
Формулировка задачи:
Доброго времени суток, уважаемые! Студент просит о помощи)
Присутствует задача:
Дана строка. Ориентируясь на пробелы, разбить строку на подстроки. Создать двумерный массив. Посчитать количество символов в каждой строке, сохранить информацию в массиве и упорядочить его в порядке возрастания ключей.
До момента подсчета символов в строке все шло нормально, а дальше ступор... Если есть мысли и желание, прошу помочь. То, чего натворил, прилагаюusing System;
public class SplitTest
{
public static void Main()
{
Console.WriteLine("Введите строку ");
string a = Console.ReadLine();
string words = a;
string[] split = words.Split(new Char[] { ' ', ',', '.', ':', '\t' });
foreach (string s in split)
{
if (s.Trim() != "")
Console.WriteLine(s);
Console.ReadLine();
int strLen = s.Length;
Console.WriteLine("Количество символов в строке = {0}", strLen);
Console.ReadLine();
}
}
}Решение задачи: «Сохранение в двумерный массив значений посчитанных символов в подстроке»
textual
Листинг программы
using System;
namespace ConsoleApplication1 {
class Program {
static void Main() {
Console.Write("Введите любой текст: ");
string text = Console.ReadLine(); // получаем текст
char[] splitchars = new char[] { ' ' }; // какими символами разбиваем строку
char[] trimchars = new char[] { ',', '.', '!', '?' }; // какие символы в строке обрезать
var words = text.Split( splitchars, StringSplitOptions.RemoveEmptyEntries ); // игнорируем пустые строки
// создаём массив объектов Nx2
// 1-я размерность будет хранить строку,
// 2-я размерность будет хранить длину строки
object[,] array = new object[ words.Length, 2 ];
for( int i = 0; i < array.GetLength( 0 ); i++ ) {
array[ i, 0 ] = words[ i ].Trim( trimchars ); // вырезаем лишние символы, типа точки, запятой
array[ i, 1 ] = array[ i, 0 ].ToString().Length; // получаем длину строки
}
// если слов больше, чем одно, то
if( array.GetLength( 0 ) > 1 ) {
// сортировка по возростанию за длинной строки:
for( int i = 0; i < array.GetLength( 0 ) - 1; i++ ) {
for( int j = i + 1; j < array.GetLength( 0 ); j++ ) {
int first = ( int ) array[ i, 1 ];
int next = ( int ) array[ j, 1 ];
if( first > next ) {
// меняем местами длину
var temp = array[ i, 1 ];
array[ i, 1 ] = array[ j, 1 ];
array[ j, 1 ] = temp;
// меняем местами слова
temp = array[ i, 0 ];
array[ i, 0 ] = array[ j, 0 ];
array[ j, 0 ] = temp;
}
}
}
}
// вывод на дисплей результат
Console.WriteLine( "----------------------------\nЭлемент | Длина\t| Слово\n----------------------------" );
for( int i = 0; i < array.GetLength( 0 ); i++ )
Console.WriteLine( "{0}\t| {1}\t| {2}", i, array[ i, 1 ], array[ i, 0 ] );
Console.WriteLine( "----------------------------" );
Console.ReadLine();
}
}
}