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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.12.2012, 21:07   #1
Alexey_user_pascal
Новичок
Джуниор
 
Регистрация: 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').
Alexey_user_pascal вне форума Ответить с цитированием
Старый 13.12.2012, 00:53   #2
Alexey_user_pascal
Новичок
Джуниор
 
Регистрация: 12.12.2012
Сообщений: 3
По умолчанию

Проблема логически решилась, я нашел что в Pascale'е за возведение в степень отвечает '^'. Дальше я сам, теперь проще преводить символы в их степень, думаю продолжу сам :D.
Alexey_user_pascal вне форума Ответить с цитированием
Старый 13.12.2012, 08:43   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
я нашел что в Pascale'е за возведение в степень отвечает '^'
что?!

нет, не так...

вот так - ЧТО?!?!??!?!!!

это в каком Паскале такое есть? дайте подтверждающий пример или пруф-линк!
меня терзают смутные сомнения... А Вы с обозначением ссылки на тип (указателем) не перепутали?!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.12.2012, 10:08   #4
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Серж, прекрасный отает.
А зачем так мудрить?
Давайте читать строки или строку если с сов записаны в строчку. Дальше раскрываем их по строкам и перевод им в число. Складывание их. Дальше выводим число 1 поделить на сумму * 100 ну и число проценты для красоты.
Без всякой степени..

Если Вам нужен именно по символьных ввод, то читайте по символьно и загляните в строку

Насколько помню в фоне паскаля есть процедура возведения числа в степень.. Даже если нет, то можно воспользоваться формулой с экспонентов и логорифмами. или написать ее в ручную
Poma][a вне форума Ответить с цитированием
Старый 13.12.2012, 14:04   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

в том то и дело, что мудрить тут нечего. нужно читать число посимвольно СПРАВА налево, каждый раз умножая предыдущий результат на 10 и прибавляя текущую цифру. и всё. Никакими степенями тут даже не пахнет.
Но это полбеды..
Но, автор топика, похоже, собирается возводить в степень через знак "^". Более того, с его слов я понял, что у него это получается. Вот это меня и поразило!
И ничего более того!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 14.12.2012, 20:29   #6
Alexey_user_pascal
Новичок
Джуниор
 
Регистрация: 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.
Alexey_user_pascal вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
работа с массивами(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