Сохранение в двумерный массив значений посчитанных символов в подстроке - 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();
        }
 
    }
 
}

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


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

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

7   голосов , оценка 4.143 из 5
Похожие ответы