Форум программистов
 
Регистрация на форуме тут, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме 15-35 тыс рублей в месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.03.2013, 14:10   #1
gvozdik12
Пользователь
 
Регистрация: 17.03.2013
Сообщений: 22
По умолчанию

Дан массив (вводится с клавиатуры) состоящий от 2 до 10 слов, каждое из которых состоит из не более 30 латинских букв. в конце последнего слова стоит точка. Между словами должен быть 1(!) пробел. Необходимо в слове удалить последнюю букву. Если между словами пробелов больше чем 1, то необходимо убрать лишние пробелы(оставить только 1). выводится должны все слова отличные от последнего

Код:
string str1 = Console.ReadLine();
        
        for(int i=0; i<str1.Length-1; i++)
        {
            if (!Char.IsLetter(str1[i]) && str1[i]!=' ')
            {
                Console.WriteLine("В строке есть не латинские буквы");
                Console.ReadLine();
                return;
            }
        }
        if (str1.LastIndexOf(".") != str1.Length - 1)
        {
            Console.WriteLine("Нет точки в конце");
        }
        else
        {
            str1 = str1.Remove(str1.Length - 1);
            string[] words = str1.Split(default(string[]), StringSplitOptions.RemoveEmptyEntries);//разбить строку на слова
            if (words.Length > 10 || words.Length < 2)
            {
                Console.WriteLine("Слишком много слов"); //2-10 слов
            }
            else
            {              
                //удалить последний символ в каждом слове
                string[] wordsRemoveLastLiter = words.Where(x => x.Length <= 30).Select(x => x.Remove(x.Length - 1)).ToArray<string>();
                if (words.Length != wordsRemoveLastLiter.Length)
                {
                    Console.WriteLine("Слишком длинные слова"); //30 символов
                }
                else
                {
                    //собрать назад
                    string strFinal = string.Join(" ", wordsRemoveLastLiter) + ".";
                    Console.WriteLine("Result: " + strFinal);
                }
 
            }
        }
        Console.WriteLine("Press the Enter key to exit the program.");
        Console.ReadLine();
только не получается вывести все отличные от последнего слова

Последний раз редактировалось Stilet; 17.03.2013 в 16:34.
gvozdik12 вне форума Ответить с цитированием
Старый 17.03.2013, 19:56   #2
gvozdik12
Пользователь
 
Регистрация: 17.03.2013
Сообщений: 22
По умолчанию

может кто нибудь помочь?
gvozdik12 вне форума Ответить с цитированием
Ответ
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Turbo Pascal. В каждом нечетном по порядку слове поменять местами первый и последний символы cdc Помощь студентам 0 08.11.2012 13:21
Переставить буквы в слове слева направо вася радугов Помощь студентам 2 03.10.2012 17:52
Повторяющиеся буквы в слове. lypyotr Общие вопросы Delphi 4 27.02.2012 19:32
в каждом слове обратить порядок букв Maksik Паскаль, Turbo Pascal, PascalABC.NET 7 20.10.2009 19:24
Установить сколько согласных букв в каждом слове данного предложения ivan89 Общие вопросы C/C++ 2 12.11.2008 15:29