![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 22.10.2011
Сообщений: 12
|
![]()
Здравствуйте! Требуется написать программу: "Дана последовательность символов d1+-d2+-d3+-...+-dn (каждое di - цифра, n>1), которая заканчивается точкой. Найти данную алгебраическую сумму."
Язык программирования: Паскаль. Почему хочу создать массив - так как цифр может быть довольно много, возможно переполнение, но конечная сумма может входить в допустимый диапазон, то есть мне нужно считывать с клавиатуры символ (естественно с проверкой на правильные входные данные), и записывать в массив с соответствующим знаком (+или-), затем отсортировать массив так, чтобы в нем чередовались элементы со знаком + и -, и посчитать сумму. Поможете мне с написанием такой программы? Я новичок, и плохо знаю синтаксис Паскаля. Заранее спасибо!) |
![]() |
![]() |
![]() |
#2 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]() Цитата:
Фтопку массив, считай сумму по мере ввода чисел, и по барабану как они идут.
I'm learning to live...
|
|
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 22.10.2011
Сообщений: 12
|
![]()
Stilet: да, сумма не меняется, но частичная сумма может выйти за границу допустимого диапазона, поэтому я хочу так сделать, чтобы частичная сумма была минимальной.
|
![]() |
![]() |
![]() |
#4 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]() Цитата:
I'm learning to live...
|
|
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 22.10.2011
Сообщений: 12
|
![]()
К примеру есть сумма 8+7-6 = 9, есть частичная сумма, равная 8+7=15, а ограничение стоит на 10, и получается, что вся сумма попадает в допустимый диапазон (<=10 в нашем случае), а частичная сумма 15 - не попадает, и возникает переполнение, и вся сумма посчитается неправильно.
А если чередовать цифры с разными знаками, то можно привести нашу сумму к такому виду: 8-6+7=9, при этом любая сумма первых n слагаемых <=10 как-то так) |
![]() |
![]() |
![]() |
#6 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]()
А-а-а...
Ну пипец задача... М.м.м. Я даже не знаю, но ИМХО я бы делал два массива - один для положительных другой для отрицательных, сортировал их оба, и уже из обоих выбирал бы по очереди.
I'm learning to live...
|
![]() |
![]() |
![]() |
#7 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]() Цитата:
Поэтому прошу пояснить, откуда появилось у Вас такое ограничение и чему конкретно оно равно. p.s. ну, ладно 8+7-6=9 c ограничением 10. а как Вы вычислите, если будет 8-1+9 - ничего, никаких "переполнений" частичной суммы не будет?! p.p.s. а так, согласен с Виталием - отсортировать числа по модулю и брать одно положительное - одно отрицательное... |
|
![]() |
![]() |
![]() |
#8 |
Пользователь
Регистрация: 22.10.2011
Сообщений: 12
|
![]()
ограничение 10 - немного преувеличил) и кстати насчет 8-1+9 легко, ведь частичная сумма тут одна - 8-1, равная 7 - все нормально))) (частичная сумма НЕ первых n слагаемых меня не интересует - ведь сложение идет последовательно слева направо)
ограничение - Maxint, т.к. цифр может быть очень много, и много подряд с одним знаком. вот что написал, забив на это ограничение, но использовал строку: Код:
Последний раз редактировалось Stilet; 23.10.2011 в 20:36. |
![]() |
![]() |
![]() |
#9 |
Пользователь
Регистрация: 22.10.2011
Сообщений: 12
|
![]()
Тема закрыта, т.к. прогу написал
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Заполнения массива разными цифрами у VB | legendary | Помощь студентам | 1 | 30.11.2010 18:07 |
заполнение массива | GaLiof | JavaScript, Ajax | 4 | 01.11.2010 20:36 |
Заполнение массива. | Небесный | Общие вопросы C/C++ | 3 | 01.09.2009 01:39 |
Запись массива с цифрами файл, и его загрузка | Kycaka | Общие вопросы C/C++ | 4 | 08.06.2009 22:38 |
Именовать элементы массива не цифрами, а словами. | Air | Общие вопросы Delphi | 15 | 07.03.2008 18:49 |