Отправляет email-рассылки с помощью сервиса Sendsay

RFpro.ru: Microsoft .NET

  Все выпуски  

RFpro.ru: Microsoft .NET


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты по данной тематике

Асмик
Статус: Академик
Рейтинг: 9298
∙ повысить рейтинг »
CradleA
Статус: Бакалавр
Рейтинг: 2616
∙ повысить рейтинг »
Micren
Статус: Профессор
Рейтинг: 1805
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И СОФТ / Программирование / Microsoft .NET : C#

Номер выпуска:229
Дата выхода:30.01.2012, 12:00
Администратор рассылки:Асмик (Академик)
Подписчиков / экспертов:125 / 46
Вопросов / ответов:1 / 1

Консультация # 185245: Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос: помогите пожалуйста упростить программу убрать оттуда гистограмму и сделать программу по проще и очень нужна блок схема помогите с ней очень надо и немного описание дабавить Задание:Даны k значений натуральных чисел n. Найти все различные цифры, входящие в запись чисел n ...


Консультация # 185245:

Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос: помогите пожалуйста упростить программу убрать оттуда гистограмму и сделать программу по проще и очень нужна блок схема помогите с ней очень надо и немного описание дабавить
Задание:Даны k значений натуральных чисел n. Найти все различные цифры, входящие в запись чисел n и их количество. Найти число с наибольшим и наименьшим количеством различных цифр.

Код :
using System;
using System.Linq;
namespace Program1
{
    class Program
    {
        //количество значений
        const int k = 5;
        static void Main(string[] args)
        {
            //решение построим на основе невыравненного массива
            char[][] n = new char[k][];
            //для ввода используем 64-битные числа для возможности ввести число побооольше 
            Int64 intvalue;
            bool IsInt;
            //переменные для определения максимальных-минимальынх количеств различных чисел
            int maxDistinct = 1;
            int minDistinct = 1;
            //переменные для хранения максимального-минимального значения
            Int64 maxDistinctValue = 0;
            Int64 minDistinctValue = 0;
            //массив для хранения количеств не повторяющихся чисел
            int[] Distincts = new int[k];
            //цикл для ввода чисел
            Console.WriteLine("===============ввод данных==================\r\n");
            for (int i = 0; i < k; ++i)
            {
                Console.Write("Введите число n[{0}]:", i);
                IsInt = false;
                while (!IsInt)
                {
                    IsInt = Int64.TryParse(Console.ReadLine(), out intvalue);
                    if (!IsInt)
                        Console.WriteLine("Введено не верное значение!");
                  else
                    {
                        //сразу определим размер массива для цифр, из которых состоит число
                        //и разобъем число в символьный массив
                        n[i] = new char[intvalue.ToString().Length];
                        n[i] = intvalue.ToString().ToCharArray();
                    }
                }
            }
            Console.WriteLine("\r\n==========поиск различных чисел и их количество============\r\n");
            //цикл по всем значениям
            for (int i = 0; i < k; ++i)
            {
                //массив различных цифр в значении
                var uniqueChars = n[i].Distinct();
                //запоминаем количество различных цифр, будет использоваться для построения гистограммы
                Distincts[i] = uniqueChars.Count();
                // число собираем из массива символов
                Console.WriteLine("В числе {0} найдены различные цифры:", new string(n[i]));
                //цикл по массиву различных элементов
                foreach (var uc in uniqueChars)
                {
                    //подсчитываем одинаковое количество цифр в числе
                    int amount = (from a in n[i]
                                  where a == uc
                                  select a).Count<char>();
                    Console.WriteLine("{0} в колличестве {1} шт.", uc, amount);
                }

                //запоминаем максимальное количество
                if (uniqueChars.Count() >= maxDistinct)
                {
                    //запоминаем максимальное количество различных цифр
                    maxDistinct = uniqueChars.Count();
                    //запоминаем число которому принадлежит максимальное количество различных цифр
                    maxDistinctValue = Int64.Parse(new string(n[i]));
                }
                if (uniqueChars.Count() <= minDistinct)
                {
                    //тоже самое для минимального
                    minDistinct = uniqueChars.Count();
                    minDistinctValue = Int64.Parse(new string(n[i]));
                }
            }
            //выводим на экран значения с максимальным и минимальным количеством различных цифр
            Console.WriteLine("\r\n==========max/min количества различных чисел============\r\n");
            Console.WriteLine("Число с максимальным количеством различных цифр: {0}", maxDistinctValue);
            Console.WriteLine("Число с минимальным количеством различных цифр: {0}", minDistinctValue);
            //гистограмма
            //в консоле гистограмму рисуем символами, по другому нельзя
            Console.WriteLine("\r\n===============гистограмма==================");
            Console.WriteLine("порядковый номер:количество различных цифр\r\n");
            for (int i = 0; i < k; ++i)
            {
                Console.WriteLine("{0}:{1}", i, new string('-', Distincts[i]));
            }
            //ждем нажатия клавиши для завершения программы
            Console.ReadKey();
        }
    }
}

Дата отправки: 22.01.2012, 11:25
Вопрос задал: Иванов Евгений Александрович (Посетитель)
Всего ответов: 1
Страница онлайн-консультации »


Консультирует Асмик (Академик):

Здравствуйте, Иванов Евгений Александрович!

Код :
using System;
using System.Linq;
namespace Program1
{
    class Program
    {
        //количество значений
        const int k = 5;
        static void Main(string[] args)
        {
            //решение построим на основе невыравненного массива
            char[][] n = new char[k][];
            //для ввода используем 64-битные числа для возможности ввести число побооольше
            Int64 intvalue;
            bool IsInt;
            //переменные для определения максимальных-минимальных количеств различных чисел
            int maxDistinct = 1;
            int minDistinct = 1;
            //переменные для хранения максимального-минимального значения
            Int64 maxDistinctValue = 0;
            Int64 minDistinctValue = 0;
            //массив для хранения количеств не повторяющихся чисел
            //цикл для ввода чисел
            Console.WriteLine("===============ввод данных==================\r\n");
            for (int i = 0; i < k; ++i)
            {
                Console.Write("Введите число n[{0}]:", i);
                IsInt = false;
                while (!IsInt)
                {
                    IsInt = Int64.TryParse(Console.ReadLine(), out intvalue);
                    if (!IsInt)
                        Console.WriteLine("Введено неверное значение!");
                    else
                    {
                        //сразу определим размер массива для цифр, из которых состоит число
                        //и разобъем число в символьный массив
                        n[i] = new char[intvalue.ToString().Length];
                        n[i] = intvalue.ToString().ToCharArray();
                    }
                }
            }
            Console.WriteLine("\r\n==========поиск различных чисел и их количество============\r\n");
            //цикл по всем значениям
            for (int i = 0; i < k; ++i)
            {
                //массив различных цифр в значении
                var uniqueChars = n[i].Distinct();
                // число собираем из массива символов
                Console.WriteLine("В числе {0} найдены различные цифры:", new string(n[i]));
                //цикл по массиву различных элементов
                foreach (var uc in uniqueChars)
                {
                    //подсчитываем одинаковое количество цифр в числе
                    int amount = (from a in n[i]
                                  where a == uc
                                  select a).Count<char>();
                    Console.WriteLine("{0} в количестве {1} шт.", uc, amount);
                }
                //запоминаем максимальное количество
                if (uniqueChars.Count() >= maxDistinct)
                {
                    //запоминаем максимальное количество различных цифр
                    maxDistinct = uniqueChars.Count();
                    //запоминаем число которому принадлежит максимальное количество различных цифр
                    maxDistinctValue = Int64.Parse(new string(n[i]));
                }
                if (uniqueChars.Count() <= minDistinct)
                {
                    //тоже самое для минимального
                    minDistinct = uniqueChars.Count();
                    minDistinctValue = Int64.Parse(new string(n[i]));
                }
            }
            //выводим на экран значения с максимальным и минимальным количеством различных цифр
            Console.WriteLine("\r\n==========max/min количества различных чисел============\r\n");
            Console.WriteLine("Число с максимальным количеством различных цифр: {0}", maxDistinctValue);

            //ждем нажатия клавиши для завершения программы
            Console.ReadKey();
        }
    }
}


Консультировал: Асмик (Академик)
Дата отправки: 29.01.2012, 23:28
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Оценить выпуск | Задать вопрос экспертам

главная страница  |  стать участником  |  получить консультацию
техническая поддержка  |  восстановить логин/пароль

Дорогой читатель!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!



В избранное