Вопрос № 178404: Здраствуйте. Я написал программу. У меня было такое задание: вычислить: среднюю оценку, количество студентов, получивших оценку "отл.", "хор.", "...
Вопрос № 178405: Помогите, пожалуйста, написать программу на C++ Последовательность вещественных чисел сохранить в динамическом списке. Поместить в стек все отрицательные числа, исключив их из динамического списка.. ...
Вопрос № 178404:
Здраствуйте. Я написал программу. У меня было такое задание: вычислить: среднюю оценку, количество студентов, получивших оценку "отл.", "хор.", "удовл.", "неуд.". У меня получается вычислить среднюю оценку каждого студента, а нужно вычислить среднюю оценку, количество студентов группы, средний балл по предмету, а как делать у меня не получается . Есть ссылка http://rfpro.ru/upload/2374. Спасибо заранее. Среда разработки Borland C++ Builder 6
Отвечает Dr_Andrew, Старший модератор :
Здравствуйте, Питулин Александр Михайлович. Для доступа к каждому из полей таблицы базы данных используйте метод FieldByName класса TTable. Для перемещения по полям базы данных используйте конструкцию вида
Код:
// Переходим на первую запись таблицы StudentsTable->First();
// Пока не достигнут конец файла БД while(!StudentsTable->Eof) { // Что-то делаем... StudentsTable->Next(); // Переходим к следующей записи }
Подробнее см. в приложении, комментарии в коде. Проект Borland C++ Builder прилагается к ответу. NB! Проект для правильной работы должен располагаться в каталоге C:\students. В противном случае измените на нужное (реальный путь к базе да
нных) свойство DatabaseName объекта StudentsTable.
Ответ отправил: Dr_Andrew, Старший модератор
Ответ отправлен: 15.05.2010, 17:36
Номер ответа: 261413 Казахстан, Алма-Ата Организация: Казахский научный центр карантинных и зоонозных инфекций Адрес сайта:Медицинские программы для Linux ICQ # 256452186
Вам помог ответ? Пожалуйста, поблагодарите эксперта за это! Как сказать этому эксперту "спасибо"?
Отправить SMS#thank 261413
на номер 1151 (Россия) |
Еще номера »
Отвечает Alex_S, 8-й класс :
простой пример консольного приложения с двумя объектами "Студент" и "Группа"
компилировался Microsoft (R) 32-bit C/C++ Standard Compiler Version 12.00.8168 for 80x86
Обратите внимание на формулировку вопроса: пользователь просил исправить его программу, которая создана в среде Borland C++ Builder.
-----
∙ Отредактировал: Dr_Andrew, Старший модератор
∙ Дата редактирования: 15.05.2010, 20:02 (время московское)
Приложение:
----- йо-хо-хо!
Ответ отправил: Alex_S, 8-й класс
Ответ отправлен: 15.05.2010, 06:06
Номер ответа: 261416
Вам помог ответ? Пожалуйста, поблагодарите эксперта за это! Как сказать этому эксперту "спасибо"?
Отправить SMS#thank 261416
на номер 1151 (Россия) |
Еще номера »
Вопрос № 178405:
Помогите, пожалуйста, написать программу на C++
Последовательность вещественных чисел сохранить в динамическом списке. Поместить в стек все отрицательные числа, исключив их из динамического списка..
// Синонимы для используемых типов данных typedef double data_t; typedef list<data_t> list_t; typedef list_t::iterator list_iter_t; typedef stack<data_t> stack_t;
// Количество элементов const size_t COUNT=10; // Диапазон значений -MAX..+MAX const data_t MAX=100.0;
int main() { locale::global(locale("")); srand(static_cast<unsigned int>(time(0)));
list_t
my_list;
// Заполним список for(size_t i=0;i<COUNT;++i) { my_list.push_back(static_cast<data_t>((rand()*2.0/RAND_MAX-1.0)*MAX)); }
ostream_iterator<data_t> out(cout,"\n");
// Выведем его cout<<"Список содержит:"<<endl; copy(my_list.begin(),my_list.end(),out);
// Стек stack_t my_stack;
// Выберем отрицательные в стек list_iter_t it=my_list.begin(); while(it!=my_list.end()) { //
Если отрицательное if(*it<0) { // В стек my_stack.push(*it); // Удалить из списка it=my_list.erase(it); } else { ++it; } }
// Выведем что у нас получилось cout<<"Стек содержит отрицательные:"<<endl; copy(my_stack._Get_container().begin(),my_stack._Get_container().end(),out);
cout<<"Список после операции содержит:"<<endl; copy(my_list.b
egin(),my_list.end(),out);
_getwch();
return 0; }
Пример работы:
Код:
Список содержит: -99.7497 12.7171 -61.3392 61.7481 17.0019 -4.02539 -29.9417 79.1925 64.568 49.321 Стек содержит отрицательные: -99.7497 -61.3392 -4.02539 -29.9417 Список
после операции содержит: 12.7171 61.7481 17.0019 79.1925 64.568 49.321
// Количество элементов const size_t COUNT=10; // Диапазон значений -MAX..+MAX const data_t MAX=100.0;
// Узел списка struct node_t { data_t data; node_t* next; node_t():next(0){}; // Конструктор. Исключительно для обнуления указателя };
// Возвращает случайное значение в диапазоне -MAX..MAX data_t rnd_data(); // Создает список node_t* create_list(size_t
count); // Освобождает память занимаемую списком void free_list(node_t *&head); // Выводит список stdout void print_list(const char* const msg,const node_t* head); // Удаляет из списка отрицательные и возвращает их в другом списке node_t* remove_negative_copy(node_t *&head);
int main() { locale::global(locale("")); // Инициализируем ДСЧ srand(static_cast<unsigned int>(time(0)));
// Создадим список node_t
* my_list=create_list(COUNT);
// Выведем его print_list("Исходный список:",my_list);
// Сделаем что надо по
условию node_t* my_stack=remove_negative_copy(my_list);
// Результат print_list("Получили в стеке:",my_stack); print_list("Оставшийся список:",my_list);
// Освободить память free_list(my_list); free_list(my_stack);
node_t* remove_negative_copy(node_t *&head) { // Стек, предыдущий узел с неотрицательным и следующий обрабатываемый узел node_t *stack=0,*last_nonnegative=0,*next=head; // Пока есть что перебирать while(next) { //
Текущий узел node_t* cur=next; // Следующий next=next->next; // Если значение <0 if(cur->data<0) { // Изменим связи между элементаи // Если это голова списка if(cur==head) { head=next; } else { last_nonnegative->next=next; } // В другой список по принципу LIFO cur->next=stack; stack=cur; } else { // Сохрани
м последний неотрицательный last_nonnegative=cur; } } return stack; }
Ответ отправил: Micren, Профессионал
Ответ отправлен: 14.05.2010, 22:36
Номер ответа: 261386
Оценка ответа: 5 Комментарий к оценке: Огромное спасибо за ответ! Даже не ожидала так быстро его получить, да еще и работающий вариант!!! Спасибо и за пояснения - не надо разбираться дополнительно!!!
Вам помог ответ? Пожалуйста, поблагодарите эксперта за это! Как сказать этому эксперту "спасибо"?
Отправить SMS#thank 261386
на номер 1151 (Россия) |
Еще номера »
Оценить выпуск »
Нам очень важно Ваше мнение об этом выпуске рассылки!
* Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи.
(полный список тарифов)
** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
*** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.