Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Программирование на C / C++


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Чемпионы рейтинга экспертов в этой рассылке

Гаряка Асмик
Статус: Специалист
Рейтинг: 3820
∙ повысить рейтинг »
lamed
Статус: Профессионал
Рейтинг: 2638
∙ повысить рейтинг »
Boriss
Статус: Академик
Рейтинг: 2343
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И ПО / Программирование / C/C++

Номер выпуска:1535
Дата выхода:20.05.2010, 21:30
Администратор рассылки:Verena, Профессионал
Подписчиков / экспертов:431 / 164
Вопросов / ответов:2 / 3
IRC-канал по теме:#C

Вопрос № 178404: Здраствуйте. Я написал программу. У меня было такое задание: вычислить: среднюю оценку, количество студентов, получивших оценку "отл.", "хор.", "...


Вопрос № 178405: Помогите, пожалуйста, написать программу на C++ Последовательность вещественных чисел сохранить в динамическом списке. Поместить в стек все отрицательные числа, исключив их из динамического списка.. ...

Вопрос № 178404:

Здраствуйте.
Я написал программу.
У меня было такое задание: вычислить: среднюю оценку, количество студентов, получивших оценку "отл.", "хор.", "удовл.", "неуд.".
У меня получается вычислить среднюю оценку каждого студента, а нужно вычислить среднюю оценку, количество студентов группы, средний балл по предмету, а как делать у меня не получается .
Есть ссылка http://rfpro.ru/upload/2374.
Спасибо заранее.
Среда разработки Borland C++ Builder 6

Отправлен: 14.05.2010, 21:26
Вопрос задал: Питулин Александр Михайлович, Посетитель
Всего ответов: 2
Страница вопроса »


Отвечает 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 (Россия) | Еще номера »
  • Отправить WebMoney:

  • Отвечает 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 (Россия) | Еще номера »
  • Отправить WebMoney:

  • Вопрос № 178405:

    Помогите, пожалуйста, написать программу на C++

    Последовательность вещественных чисел сохранить в динамическом списке. Поместить в стек все отрицательные числа, исключив их из динамического списка..

    Отправлен: 14.05.2010, 21:26
    Вопрос задал: sveta11115, Посетитель
    Всего ответов: 1
    Страница вопроса »


    Отвечает Micren, Профессионал :
    Здравствуйте, sveta11115.
    Программа. С++. Проверено MS VS 2008
    Код:
    #include <locale>
    #include <iostream>
    #include <cstdlib>
    #include <ctime>
    #include <list>
    #include <stack>
    #include <algorithm>
    #include <iterator>

    using namespace std;

    // Синонимы для используемых типов данных
    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


    Добавлено по просьбе из мини-форума:
    Код:
    #include <locale>
    #include <iostream>
    #include < ;cstdlib>
    #include <ctime>

    using namespace std;

    typedef double data_t;

    // Количество элементов
    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);

    _getwch();

    return 0;
    }

    data_t rnd_data()
    {
    return static_cast<data_t>((rand()*2.0/RAND_MAX-1.0)*MAX);
    }

    node_t* create_list(size_t count)
    {
    // Голова, хвост
    node_t *head=0,*tail=0;
    while(count--)
    {
    // Если список уже существует
    if(tail)
    {
    // Добавляем в хвост узел
    tail->next=new node_t;
    tail=tail->next;
    }
    else
    {
    // Иначе создаем 1й элемент
    head=tail=new node_t;
    }
    // Инициализируем случайным значением
    tail->data=rnd_data();
    }
    return head;
    }

    // Освобождаем список
    void free_list(node_t *&head)
    {
    // Перебор элементов
    while(head)
    {
    node_t* tmp=head;
    head=head->next;
    delete tmp;
    }
    }

    void print_list(const char* const msg,const node_t* head)
    {
    cout<<msg<<endl;
    while(head)
    {
    cout<<head->data<<endl;
    head=head->next;
    }
    }

    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 (Россия) | Еще номера »
  • Отправить WebMoney:

  • Оценить выпуск »
    Нам очень важно Ваше мнение об этом выпуске рассылки!

    Задать вопрос экспертам этой рассылки »

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров »

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2010, Портал RFpro.ru, Россия
    Авторское право: ООО "Мастер-Эксперт Про"
    Автор: Калашников О.А. | Программирование: Гладенюк А.Г.
    Хостинг: Компания "Московский хостер"
    Версия системы: 2010.6.15 от 18.05.2010

    В избранное