|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
12.12.2012, 21:07 | #1 |
Новичок
Джуниор
Регистрация: 12.12.2012
Сообщений: 3
|
Работа со степенями(pascal)
Приветствую всех. Суть проблемы такая, есть курсовая, которую я взялся помочь покодить, паскаль не знал, 4 день как разбираюсь.
Задание такое: есть 2 вещественных числа(т.е. с точкой) записанные в файл file_name.txt. Задача считать их посимвольно, т.е. в ASCII кодах, затем вычислить сколько % занимает каждое число из их суммы. Например если первое число 10.0 и второе 30.0 то первое будет 25% второе 75%(результаты надо показать в круговой диаграмме). С посимвольным вводом я разобрался, результат такой: 1)массив1(char)- содержит символы цифр.2)Переменная a1 количество символов в массиве1. 3) Переменная b1 - количество знаков после запятой. 1)массив2(char)- содержит символы цифр.2)Переменная a2 количество символов в массиве1. 3) Переменная b2 - количество знаков после запятой. Нужно как-то достать из этого набора их процентный эквивалент. Ну допустим если символ '9' то (word('9')-48) даст нам значение этой цифры в первом разряде, но она может находиться в разряде "-3"(т.е. 0.009, значит нужно множить на 10 в -3 степени). Это конечно даст нам хотябы значение, но суть всей этой канетели с символами, чтобы можно было перемножать числа любой длинны(ну, до 255 разрядов) эмитируя в коде перемножение в столбик на бумаге. Если порарзядово умножать и плюсовать циклично символы умноженные на 10 в степенях от -+ бесконечности можно получить переменную со значением числа, но предел типа extended меньше 255 знаков, если числа будут достаточно длинными их вообще нельзя будет преобразовать для вычисления их процентного соотношения. Я ужасно запутался, помогите теоретически, за примеры кода буду благодарен. P.S. Еще раз повторюсь, интересует способ вычисления %-го соотношения 2-х цифр представленных массивом символов('0'..'9'). |
13.12.2012, 00:53 | #2 |
Новичок
Джуниор
Регистрация: 12.12.2012
Сообщений: 3
|
Проблема логически решилась, я нашел что в Pascale'е за возведение в степень отвечает '^'. Дальше я сам, теперь проще преводить символы в их степень, думаю продолжу сам :D.
|
13.12.2012, 08:43 | #3 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
нет, не так... вот так - ЧТО?!?!??!?!!! это в каком Паскале такое есть? дайте подтверждающий пример или пруф-линк! меня терзают смутные сомнения... А Вы с обозначением ссылки на тип (указателем) не перепутали?! |
|
13.12.2012, 10:08 | #4 |
Новичок
Джуниор
Регистрация: 11.10.2011
Сообщений: 3,882
|
Серж, прекрасный отает.
А зачем так мудрить? Давайте читать строки или строку если с сов записаны в строчку. Дальше раскрываем их по строкам и перевод им в число. Складывание их. Дальше выводим число 1 поделить на сумму * 100 ну и число проценты для красоты. Без всякой степени.. Если Вам нужен именно по символьных ввод, то читайте по символьно и загляните в строку Насколько помню в фоне паскаля есть процедура возведения числа в степень.. Даже если нет, то можно воспользоваться формулой с экспонентов и логорифмами. или написать ее в ручную |
13.12.2012, 14:04 | #5 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
в том то и дело, что мудрить тут нечего. нужно читать число посимвольно СПРАВА налево, каждый раз умножая предыдущий результат на 10 и прибавляя текущую цифру. и всё. Никакими степенями тут даже не пахнет.
Но это полбеды.. Но, автор топика, похоже, собирается возводить в степень через знак "^". Более того, с его слов я понял, что у него это получается. Вот это меня и поразило! И ничего более того! |
14.12.2012, 20:29 | #6 |
Новичок
Джуниор
Регистрация: 12.12.2012
Сообщений: 3
|
Да не так я понял пример. "^" - этот символ означает возведение в степень во всяких приложениях, сама функция степени это power().Просто вчера не стал отписывать на форуме после разбора.
Мудрение с этой посимвольной темой нужно для того чтобы перешагнуть барьер знаков-разрядов в числе при арифметических операциях. Допустим для перемножения двух следующих чисел: 1)104958374510495837451049583745104 95837451049583745104958374510495837 45104958374510495837451049583745104 958374510495837451049583745 - 150 знаков в числе 2)104958374510495837451049583745104 95837451049583745104958374510495837 45104958374510495837451049583745104 95837451049583745104958374510495837 45104958374510495837451049583745104 958374510495837451049583745 - 200 знаков в числе. вот паскаль такие не перемножит, типов таких не существует,а в массив посимвольно поместится, их запросто можно перебрать циклом , потом конкатенацией выводить на экран результат. Проблема с разрядами отпала, нужно еще вычислить какой % число занимает от их суммы со вторым, т.е. их надо складывать посимвольно. Последний раз редактировалось Alexey_user_pascal; 14.12.2012 в 20:41. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
работа с массивами(pascal) | coll3ct0R | Помощь студентам | 2 | 28.10.2012 18:41 |
Работа в Pascal. | axel12 | Помощь студентам | 0 | 17.10.2012 21:48 |
Работа с файлами (Pascal) | MrVamp | Помощь студентам | 7 | 15.12.2011 00:29 |
Работа в PASCAL. | Bekzat | Помощь студентам | 0 | 08.12.2011 14:43 |
массив с количеством элементов N. Напечатать те его элементы, индексы которых являются степенями двойки | Маськ@ | Паскаль, Turbo Pascal, PascalABC.NET | 4 | 12.12.2008 16:34 |