Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

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

В-общем вот такая задачка(дословно не помню но смысл тот же): ввести с клавиатуры массив слов необходимо вывести ошибку если в нем больше 10 или меньше 2 слов латиницей при чем чтобы символов было не больше 30 в каждом слове(опять же вывести ошибку). в конце массива должна стоять точка(если не стоит, вывести ошибку) если в введенной строке больше одного пробела между словами то убрать лишний(оставить только 1) необходимо все слова отличные от последнего удалить, предварительно удалив в каждом слове последнюю букву ( если введена строка "privet kak dela privet." то должно выводится "ka del prive.") я большую часть сделал, не получается только удалить слова схожие с последним т.е. у меня программа выводит "prive ka del prive."
я попытался сделать но у меня не получается, исправьте пожалуйста
Код:
class Program
    {
        static void Main(string[] args)
        {
            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;
                }
                for (int j = 0; j <str1.Length - 1; j++)
                {
                    if (str1[j] != str1[j])
                        Console.WriteLine();

                }
            }
            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("Слишком много слов");
                }
                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("Слишком длинные слова");
                    }
                        for (int i = 0; i < words.Length - 1; i++)
                    
                        if (str1[i] !=str1[i-1])
                        {
                            str1 = str1.Remove(i);

                            Console.WriteLine();
                        }
                    else
                    {
                        string strFinal = string.Join(" ", wordsRemoveLastLiter) + ".";
                        Console.WriteLine("Результат: " + strFinal);
                    }
                    
                }
                
            }            
            Console.ReadLine();
        }
    }
помогите пожалуйста!!!(((

капец как надо...

......

Последний раз редактировалось Stilet; 15.05.2013 в 21:36.
gvozdik12 вне форума Ответить с цитированием
Старый 15.05.2013, 21:31   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        //ввести с клавиатуры массив слов
        static string[] input() {
            string s = "privet kak dela privet.";// Console.ReadLine();
            return s.Split(' ');
        }
        //если в нем больше 10 или меньше 2 слов латиницей
        
        static bool Latinos(string s) {
            foreach (char c in s.ToLower()) { if (c < 'a' || c > 'z') return false; }
            return true;
        }
        //чтобы символов было не больше 30 в каждом слове
        static bool Thirteen(string s) { return s.Length <= 30; }
        //все слова отличные от последнего удалить удалив в каждом слове последнюю букву
        static string[] Shrink(string[] a) {
            string[] q= a.Where(v => v != a[a.Length - 1]).ToArray();
            return q.Select(v => v.Substring(0, v.Length - 1)).ToArray();
        }
        static void Main(string[] args)
        {
            string[] s = input();
            int cnt = 0;
            foreach (string c in s) { if (!Latinos(c)) cnt++; } if (cnt < 2 || cnt > 10) Console.WriteLine("No Latine");
            foreach (string c in s) { if (!Thirteen(c)) Console.WriteLine("Great then 30 in {0} ",c); }
            foreach (string i in Shrink(s)) { Console.Write("{0} ", i); }
            Console.ReadKey();
        }
    }
}
Годится?
I'm learning to live...

Последний раз редактировалось Stilet; 15.05.2013 в 21:41.
Stilet вне форума Ответить с цитированием
Старый 15.05.2013, 21:44   #3
gvozdik12
Пользователь
 
Регистрация: 17.03.2013
Сообщений: 22
По умолчанию

спасибо) огромное, а можно сделать так что бы оставалось последнее слово а не первое, и обработать так чтобы если несколько слов при вводе слов с клавиатуры совпадают с последним их тоже удалять?
gvozdik12 вне форума Ответить с цитированием
Старый 15.05.2013, 23:37   #4
gvozdik12
Пользователь
 
Регистрация: 17.03.2013
Сообщений: 22
По умолчанию

)))))))
gvozdik12 вне форума Ответить с цитированием
Старый 16.05.2013, 07:53   #5
gvozdik12
Пользователь
 
Регистрация: 17.03.2013
Сообщений: 22
По умолчанию

/////////////////////////
gvozdik12 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
преобразование массива hunter03 Помощь студентам 3 22.09.2012 17:19
преобразование массива kuzya1994 Паскаль, Turbo Pascal, PascalABC.NET 0 08.02.2012 23:20
Преобразование массива kpachbiu PHP 13 09.10.2010 23:51
Преобразование массива с++ davart Помощь студентам 3 01.10.2010 09:25
преобразование массива PARTOS Microsoft Office Excel 4 20.01.2010 17:21