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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.12.2019, 11:07   #1
plktre
Пользователь
 
Регистрация: 09.09.2019
Сообщений: 43
По умолчанию Выделить целую и дробную часть у вещественного числа

Код:
static void Main(string[] args)
        {
            Console.Write("Введите объем алфавита M: ");
            int M = Convert.ToInt32(Console.ReadLine());
            double[] p = new double[M];
            double[] q = new double[M];
            double[] l = new double[M];
            Console.WriteLine("Примечание: сумма вероятностей должна быть равна 1");

            // Объявление вероятностей
            for (int i = 0; i < M; i++)
            {
                Console.Write("Введите вероятность буквы a = ",p[i]);
                p[i] = double.Parse(Console.ReadLine());
            }

            // Кумулятивная вероятность
            for (int i = 0; i < M-1; i++)
            {
                q[0] = 0;
                q[i+1] = q[i] + p[i];
            }
            for (int i = 0; i < M; i++)
                Console.WriteLine(q[i]);

            // Длина слова
            for (int i = 0; i < M; i++)
            {
                l[i] = Math.Log(p[i],2);
                var c = Math.Truncate(l[i]);
                Console.WriteLine(Math.Abs(c)+1);
            }

            // Перевод q[i] в двоичную систему счисления
            for (int i = 0; i < M; i++)
            {
                string s = Convert.ToString(q[i]);
                double left = Math.Truncate(q[i]);
                double right =q[i]-left;
                Console.WriteLine(left);
                Console.WriteLine(right);
            }

            Console.ReadKey();
        }
Получила q:0;0,35;0,55;0,7
Целая часть должна быть 0;0;0;0
Дробная 0;0,35;0,55;0,7
а получается 0;0;0;0,35 и 0;0,55;0;0,7
Я это делаю,чтобы перевести дробное число в 2 систему счисления
(целая часть всегда будет 0, потому что это вероятности,а она не может быть больше 1)
plktre вне форума Ответить с цитированием
Старый 01.12.2019, 11:42   #2
plktre
Пользователь
 
Регистрация: 09.09.2019
Сообщений: 43
По умолчанию

нашла ошибку, надо в разные циклы забить left и right
plktre вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как посчитать дробную и целую часть числа переводя его из 10-тичной в 8-ричную систему?! diallfam Помощь студентам 2 06.05.2012 01:44
Ассемблер(разделить 2 числа и вывести целую и дробную часть) Bleize Помощь студентам 0 22.11.2011 22:40
Разбить число вещественного расширенного формата на целую и дробную часть TRIZER Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 5 16.07.2011 01:29
выделить дробную часть числа unbanned Паскаль, Turbo Pascal, PascalABC.NET 12 18.06.2011 22:23
Как выделить целую часть из числа? Slash Общие вопросы Delphi 3 11.05.2007 00:53