Форум программистов, компьютерный форум CyberForum.ru

Ошибка в цикле с очередью - C++

Восстановить пароль Регистрация
 
romasimeiz
6 / 6 / 0
Регистрация: 11.04.2011
Сообщений: 260
03.04.2014, 18:11     Ошибка в цикле с очередью #1
Добрый день!
Придумал глупый, но рабочий цикл проверки элементов очереди queue
Моя очередь содержит числа с плавающей запятой (double).
В этом цикле, числа меньше M умножаются, а больше складываются.
После этого цикла на экране появляются результаты суммирования и умножения такие :

77898387
4114119301

не понимаю откуда такие результаты если почти все значения очереди (есть 1цы) меньше 1.
посмотрел в отладчике: в самом начале у переменной m_Result_mult значение 1.7986460728301209e-307

Что я неправильно делаю?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void lab03::Process(elem M)
{
    m_Result_mult = 1;
    m_Result_sum = 0; 
    while(!MQ.empty())
    {
        if (MQ.front()<M)
            m_Result_mult = m_Result_mult * MQ.front();
        else
        {
            m_Result_sum=m_Result_sum+MQ.front();
        }
        MQ.pop();
    }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.04.2014, 18:11     Ошибка в цикле с очередью
Посмотрите здесь:

C++ Ошибка в цикле while
Ошибка в цикле C++
C++ Ошибка в цикле
Ошибка в цикле C++
Ошибка в цикле C++
Ошибка в цикле C++
C++ Ошибка в цикле
C++ Ошибка в цикле while

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Wlk
49 / 49 / 13
Регистрация: 07.12.2011
Сообщений: 133
03.04.2014, 19:28     Ошибка в цикле с очередью #2
С моими данными у меня данная функция сработала правильно. Дайте хотя бы реализацию класса и входные данные очереди, а так же вызов функции lab03::Process();
romasimeiz
6 / 6 / 0
Регистрация: 11.04.2011
Сообщений: 260
07.04.2014, 10:38  [ТС]     Ошибка в цикле с очередью #3
Здесь пишутся в очередь и в файл данные.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void lab03::genChisla ()
{
    double MIN,MAX,shag,result;
    MIN = -3.1415; 
    MAX = 3.1415;
    shag = MAX/30;
    File.open("chisla.txt");
    for (int i=0; MIN<MAX; ++i )
    {
       MIN=MIN+shag;
       result = sin(MIN+(shag*i));
       MQ.push(result);
       File << result;
       File << "\n";
    }
    File.close();
}

А здесь вызываются все функции, в том числе и lab03::Process();

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
int APIENTRY _tWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, 
                int nCmdShow )
{
    main::RegisterClass( hInstance );
    if( !main::InitInstance( hInstance, nCmdShow ) )
        return -1;
    main::Processor.genChisla();
    main::Processor.Input( 100, -100, 100 );
    main::Processor.Process(-0.30000);
 
 
    //вызовем принудительное обновление окна
    PostMessage( main::hWnd, WM_PAINT, 0, 0 );
 
    MSG  msg;
    do
    {
        if( !PeekMessage( &msg, 0, 0, 0, PM_REMOVE ) ) 
            continue;
 
        TranslateMessage( &msg );
        DispatchMessage( &msg ); 
    }
    while( WM_QUIT != msg.message );
 
    return (int) msg.wParam;
}
Чтобы проще было вот основные файлы проекта. Буду очень благодарен за помощь.
lab01.rar
Yandex
Объявления
07.04.2014, 10:38     Ошибка в цикле с очередью
Ответ Создать тему
Опции темы

Текущее время: 13:34. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru