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

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

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.09.2011, 08:59   #11
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
А lit что это такое?
lit это некий элемент (читай про лямбда-выражения), которому ForEach передает значение, соответствующее элементам массива (при проходе. ForEach - как рази проводит проход по массиву, по строке) в данном случае символов строки. => говорит о том что после идут некие неименованные действия, где будет участвовать этот lit.
Цитата:
Руслантус
Твой пример нагляден для обучения и первых шагов, но совершенно бесперспективен на практике.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 29.09.2011, 09:02   #12
Руслантус
Наркоман самоучка
Форумчанин
 
Аватар для Руслантус
 
Регистрация: 22.07.2007
Сообщений: 276
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Твой пример нагляден для обучения и первых шагов, но совершенно бесперспективен на практике.
А поточней?
#include <мозг.h>
Руслантус вне форума Ответить с цитированием
Старый 29.09.2011, 09:29   #13
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

я позволю себе чуть-чуть модифицировать вариант Скарам.

Хотя, конечно, всё лёгкость, красивость и воздушность кода теряют смысл, когда нужно выводить номер позиции, считать количество и т.д. и т.п.
Тогда уж действительно банальный цикл перебора строки через for проще... (только не нужна функция проверки на гласность, s.Contains и проще и наглядней и надёжней!)

Код:
namespace Гласные
{
    class Program
    {
        static void Main(string[] args)
        {
            var s = "АЕЁИОУЫЭЮЯ";
            s += s.ToLower();
            Console.WriteLine("Введите строку");
            int count = 0;
            int PosIndex = 0;
            var customstring = Console.ReadLine();
            if (customstring != null)
                customstring.ToCharArray().ToList().ForEach(
                    lit =>
                    {
                        PosIndex++;
                        if (s.Contains(lit))
                        {
                          Console.WriteLine("Гласная буква {0} в позиции {1}",lit, PosIndex);
                          count++;
                        }
                    }
                    );
            Console.WriteLine("Всего количество гласных букв = {0}", count);
 
            Console.ReadKey();
        }
    }
}
c циклом for я представляю себе решение так:
Код:
            var s = "АЕЁИОУЫЭЮЯ";
            s += s.ToLower();
            Console.WriteLine("Введите строку");
            string str = Console.ReadLine();

            int count = 0;
            for (int i = 0; i < str.Length; ++i)
            {
                if (s.Contains(str[i]))
                {
                    Console.WriteLine("Найдена гласная буква - {0}, позиция - {1}", str[i], (i + 1));
                    count++;
                }
            }
            Console.WriteLine("Всего количество гласных букв = {0}", count);

Последний раз редактировалось Serge_Bliznykov; 29.09.2011 в 22:35.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 29.09.2011, 11:39   #14
Скарам
Дружите с Linq ;)
Форумчанин
 
Аватар для Скарам
 
Регистрация: 15.10.2008
Сообщений: 822
По умолчанию

По поводу кода, который писал я:
Любая задача решена хорошо, когда использует всю мощь языка программирования.Если писать код "в лоб", то выглядит одинаково, что в C#, что в C++, что и в других языках. Это не выводит Вас на уровень абстракции, который предоставляет ( и подразумевает) язык. В С# есть возможность реализовать сложение битовыми операциями. Стоит ли так делать, если есть +?.. Поэтому, когда я писал код, я пытался опираться на возможности языка. Linq и лямбда-выражения очень мощные инструменты, значительно упрощают жизнь и время кодирования и отладки. Даже в таких простых задачах. Если учить С#, то стоит, увидев, кучу чего-то непонятного, почитать учебник.
Не давай организму поблажки, каждый день тренируй его в шашки..
Скарам вне форума Ответить с цитированием
Старый 29.09.2011, 12:50   #15
ds.Dante
Старожил
 
Аватар для ds.Dante
 
Регистрация: 06.08.2009
Сообщений: 2,992
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Твой пример нагляден для обучения и первых шагов, но совершенно бесперспективен на практике.
Зато это единственное правильное решение. Остальные забыли про букву "Ы".

Цитата:
Сообщение от Скарам Посмотреть сообщение
Любая задача решена хорошо, когда использует всю мощь языка программирования.Если писать код "в лоб", то выглядит одинаково, что в C#, что в C++, что и в других языках. Это не выводит Вас на уровень абстракции, который предоставляет ( и подразумевает) язык.
Это хорошо на этапе изучения языка (если с основами человек уже освоился), но лучше сравнивать конкретные решения. В данном случае for выглядит аккуратнее.

Полагаю, ТС выпал в осадок от такой помощи. :)

Последний раз редактировалось ds.Dante; 29.09.2011 в 12:54.
ds.Dante вне форума Ответить с цитированием
Старый 29.09.2011, 21:04   #16
Uniskull
Пользователь
 
Регистрация: 19.08.2010
Сообщений: 54
По умолчанию

Руслантус, Вот то что я искал, спасибо, держи отзыв!!!
Компьютерный форум - World-PC.NET
Uniskull вне форума Ответить с цитированием
Старый 29.09.2011, 21:07   #17
Uniskull
Пользователь
 
Регистрация: 19.08.2010
Сообщений: 54
По умолчанию

А какой вариант нужно использовать?

Serge_Bliznykov(Скарам) или Руслантус кто прав?
Компьютерный форум - World-PC.NET
Uniskull вне форума Ответить с цитированием
Старый 29.09.2011, 21:29   #18
Скарам
Дружите с Linq ;)
Форумчанин
 
Аватар для Скарам
 
Регистрация: 15.10.2008
Сообщений: 822
По умолчанию

Прав тот,кто сильнее..)
Не давай организму поблажки, каждый день тренируй его в шашки..
Скарам вне форума Ответить с цитированием
Старый 29.09.2011, 22:43   #19
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Uniskull
А какой вариант нужно использовать?
ну, во-первых, какой Вам ближе и понятней!
во-вторых, я бы рекомендовал Вам вариант, которым у меня приведён вторым в пост #13 (модификация варианта с FOR)


Цитата:
Сообщение от ds.Dante
Остальные забыли про букву "Ы".
Угу. согласен. в точку!
подправил свой пост Выше.
Зато у него только маленькие буквы учтутся! Большые (прописные) будут проигнорированы


Uniskull, кстати, перечитал задание.. а ведь в задании не сказано, гласные буквы какого алфавита нужны!!!
если латиницы, то это: 'A','E','I','O','U','Y','y'
Serge_Bliznykov вне форума Ответить с цитированием
Старый 29.09.2011, 23:09   #20
Скарам
Дружите с Linq ;)
Форумчанин
 
Аватар для Скарам
 
Регистрация: 15.10.2008
Сообщений: 822
По умолчанию

Цитата:
Зато у него только маленькие буквы учтутся! Большые (прописные) будут проигнорированы
Он их учитывает в
Код:
 char.ToLower(c)
Т.е. маленькая буква или большая,приводим к нижниму регистру и ищем. А выводим букву в ее изначальном регистре.
Не давай организму поблажки, каждый день тренируй его в шашки..
Скарам вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Функция Наташок Паскаль, Turbo Pascal, PascalABC.NET 1 05.04.2011 11:55
функция Артл Microsoft Office Excel 9 04.04.2011 20:35
функция golf Помощь студентам 4 14.11.2009 16:27
Функция в VB asd48 Помощь студентам 1 25.12.2008 23:29
одна функция потока, а другая функция - член класса запускающего этот поток Дмитрий_Ч Общие вопросы C/C++ 2 27.09.2007 08:50