Консультация # 184738: Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос:Помогите написать программу "Пакетный менеджер", ОС Windows XP, Borland Builder C++ 6, Visual Studio 2005.Код прокомментировать. Условие задачи: Разработать приложение-пакетный менеджер(базу данных о находящихся на некотором узле пакетах программ). Разновид...
Консультация # 184954: Уважаемые эксперты! Пожалуйста, ответьте на вопрос: Как можно доработать программу,чтобы она работала и с отрицательными числами? Выбрать идущие подряд тройки цифр,упорядоченных по возрастанию. Программа работает только с положительными числами. Помогите, пожалуйста!Ответ нужен до завтра! Заранее спасибо! С уважени...
Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос:Помогите написать программу "Пакетный менеджер", ОС Windows XP, Borland Builder C++ 6, Visual Studio 2005.Код прокомментировать. Условие задачи: Разработать приложение-пакетный менеджер(базу данных о находящихся на некотором узле пакетах программ). Разновидности пакетов: 1) Пакет, содержащий основную функциональность пользовательского или системного приложения. Все подобные пакеты должны быть в явном виде доступны
пользователю через некоторый интерфейс хранилища. Характеризуется признаком установки пакета, именем файла пакета, номером последней версии, номером установленной версии(если он установлен), именем издателя, ссылками на требуемые для его функционирования другие пакеты. 2) Пакет со вспомогательным ПО(библиотеками). Характеристики те же, но данный пакет должен устанавливаться в системе только при наличии хотя бы одного основного пакета, ссылающегося на него. 3)
"Пустой" пакет- связан с конкретным пакетом, но не содержит конкретной версии продукта; с этим пакетом обязательно связан пакет другого типа(основной или вспомогательный) последней версии. Действия: Для пакетного менеджера: инициализация списком пакетов, требуемых для первоначальной установки установка требуемого пользовательского или "пустого" пакета ( с автоматической установкой всех требуемых пакетов) установка требуемого пользовательского или "пустого" пакета
( с запросом пользователя на установку каждого требуемого пакета) удаление указанного пользовательского пакета с автоматическим удалением ненужных пакетов со вспомогательным ПО или без него очистка системы от неиспользуемых вспомогательных пакетов глобальное обновление системы с выводом данных о каждом обновленном пакете Для пакета: добавление пакета в хранилище(* с контролем ацикличности графа зависимостей) получение информации о состоянии пакета(тип,ус
тановлен или нет, текущая и последняя версии, количество связей с другими пакетами каждого типа) удаление пакета из хранилища, если это возможно(полное удаление, не снос ПО) обновление пакета Для пакета со вспомогательным ПО: разделение пакета на заданное количество частей с указанием их параметров; считать, что все зависимости наследуются пакетами-наследниками Для непустого пакета(не связанного с пустым): объединение пакетов заданного набора с заданием параметров и объединением зависимостей(дуюлирующиеся
зависимости устраняются)
Считать, что обновление пакета не влияет на функционал Порядок выполнения работы: На основе описания задачи определить состав классов Разработать иерархию классов и схему их взаимодействия Для каждого класса определить его состояние и необходимые методы Разработать и отладить все классы. Приложение для отладки реализовать в виде простой диалоговой программы Разработать и отладить класс, реализующий работу п
риложения. Предусмотреть в классе возможность сохранения таблицы в файле и ее восстановления Повторить разработку контейнерного класса(вместе с необходимыми итераторами), используя стандартную библиотеку STL. Использовать шаблон класса <vector>.
Здравствуйте, Maverick! Я размещаю ответом, чтобы больше не продлевать, остальное в мини-форуме буду дополнять. Тут вся программа по заданию, сохранение в файл добавила. Тестовую диалоговую программу Вы, в принципе, можете сами написать, но если не справитесь, я завтра где-то между 9 и 15 выложу, сегодня уже не успею ничего больше. Пакеты организованы в форме дерева, в принципе все они должны быть связаны с пакетом "система", но я предусмотрела ситуацию, в которой это будет не так. По
комментариям должно быть всё ясно, но если будут вопросы - задавайте.
Здравствуйте, Барс Иван! Моя версия в G++/Code::Blocks.
Код :
#include <stdio.h>
#include <ctype.h> /* Для isdigit() */
#include <stdlib.h> /* Для system() */
int main()
{
enum {SIZE=256}; /* Максимальный размер символьного массива */
char s[SIZE]; /* здесь будет храниться вводимая строка */
int i; /* индекс элемента строки */
int in_digits = 0; /* признак того, что предыдущий символ - цифра */
int len=3;
/* число элементов, для которых должно выполняться строгое возрастание */
int cnt=0; /* текущее число проверяемых в серии цифр */
int i_beg=0; /* индекс элемента в начале серии */
gets(s); /* прочли строку */
for (i=0; s[i]!='\0'; ++i) /* пока не конец строки */
if (isdigit(s[i])) /* если символ - цифра */
{
if (!in_digits || s[i-1]>=s[i])
/* если последовательность цифр только начинается или нарушена */
{
i_beg=i;
/* теперь последовательность начинается с текущего элемента */
cnt=1; /* число элементов новой последовательности */
}
else
{
++cnt; /* еще один элемент в "правильной" серии */
if (cnt==len) /* серия завершена ? */
{
/* пора печатать */
while (i_beg<=i)
putchar(s[i_beg++]);
putchar(';');
cnt=0; /* новая серия еще пустая */
}
}
in_digits=1; /* это последовательность цифр */
}
else
in_digits=0; /* это не последовательность цифр */
system("pause"); /* Ожидание нажатия клавиши */
return 0; /* Возвращаем 0 - нормальное завершение */
}
Удачи!
Консультировал: lamed (Академик)
Дата отправки: 28.12.2011, 11:18
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались.
Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора -
для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение.
Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал,
который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом.
Заходите - у нас интересно!