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

Вызов функции в C++ - C++

Восстановить пароль Регистрация
 
Shutz00
0 / 0 / 0
Регистрация: 13.02.2011
Сообщений: 23
15.04.2012, 17:20     Вызов функции в C++ #1
есть циклический вызов функции:
C++
1
2
3
4
                for (int i=0; i<start; i++)
                {
                if (classicZOT()) Psync++;
                }
функция classicZOT() типа bool, возвращает true или false.
Почему-то при таком вызове функция вызывается один раз, а возвращаемое ей значение прогоняется через цикл. Как сделать так, чтобы на каждой новой итерации функция вызывалась заново?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.04.2012, 17:20     Вызов функции в C++
Посмотрите здесь:

C++ Вызов функции
C++ Вызов функции.
C++ Вызов функции
C++ Вызов функции!
Вызов функции в возврате значения функции C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
15.04.2012, 17:58     Вызов функции в C++ #2
возможно, оптимизатор решил, что содержание функции никак не зависит от счётчика цикла и решил оптимизировать процесс.
Хотя слабо верится.
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
15.04.2012, 18:24     Вызов функции в C++ #3
А можно глянуть на реализацию функции? Потому что, например, в данном примере функция вызывается на каждой итерации.
Shutz00
0 / 0 / 0
Регистрация: 13.02.2011
Сообщений: 23
15.04.2012, 23:37  [ТС]     Вызов функции в C++ #4
Вот сама функция:
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
bool classicZOT()
{
        LRR();
        randomize();
        bool count1=false;      //удачная попытка
        int m;             //счетчик совпадений
        int i;
if  (Form1->Edit1->Text != "")
        {Form1->Edit1->Text = AnsiReplaceStr(Form1->Edit1->Text, ".", ",");
        Kosh = StrToFloat(Form1->Edit1->Text);}
        else {MessageBox(MB_OK," Неверно заполнены исходные данные  ", " Ошибка!", MB_ICONERROR);}
if (Kosh > 1)
        {MessageBox(MB_OK," Коэффициент ошибок не может быть больше 1  ", " Ошибка!", MB_ICONERROR);
        Form1->Edit1->Text = "";}
 
if  (Form1->Edit3->Text != "") RkP = StrToInt(Form1->Edit3->Text);
        else MessageBox(MB_OK," Неверно заполнены исходные данные  ", " Ошибка!", MB_ICONERROR);
 
        count=0;
        m=0;
        for (i=0; i<RkP; i++)
                if ((Kosh*1000)>(random(1000))) count++;
 
        for (i=0; i<count; i++)
                {
                nomer[i]=random(RkP);
                rekp[nomer[i]]=rekp[nomer[i]]^1;
                }
 
        for (i=0; i<RkP; i++)
                {
                if (rekp[i]==-1) break;
                else
                        {
                        if (rekp[i]==rekp1[i]) m++;
                        else m=0;
                        if (m==M)
                                {
                                count1=true;
                                break;
                                }
                        }
                }
 
return (count1);
 
}
Yandex
Объявления
15.04.2012, 23:37     Вызов функции в C++
Ответ Создать тему
Опции темы

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