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

Старик Хоттабыч, хочу, что бы результат возвращаемый функцией не стакался... - C++

Восстановить пароль Регистрация
 
Капитан Техно
 Аватар для Капитан Техно
0 / 0 / 0
Регистрация: 18.07.2011
Сообщений: 32
14.01.2012, 21:45     Старик Хоттабыч, хочу, что бы результат возвращаемый функцией не стакался... #1
Доброго времени суток, уважаемые форумчане. У меня такая проблемка. Возвращаемый функцией результат, а это у меня определенный элемент массива при определенном условии, при использовании в цикле for/while прибавляется(стакается) с предыдущим возвращаемым результатом функции. Как, а главное почему это происходит? И как это устранить? Ниже тот самый "кот":
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
#include <iostream>
#include <unistd.h>
#include <ctime>
#include <cstdlib>
 
using namespace std;
 
int speedrange(int[], const int);
 
int main()
{
    const int tArrayS = 3;
    const int rArrayS = 5;
 
    int tuSpeedRg[tArrayS] = {3,-6, 1};
    int raSpeedRg[rArrayS] = {0, 9, -12, 1, 2};
 
    int turtlePos = 0;
    int rabbitPos = 0;
 
    int win = 0;
 
    cout << "Сегодня будет гонка, которую вы все так долго ждали!!" << endl
         << "В левом углу чемпион по версии WWF и WWO, спринтер по прозвищу серая молния." << endl
         << "Заяц!" << endl
         << "В правом углу дебил и тормоз по версии своей жены и тёщи" << endl
         << "Чер'И'пашка!"
         << "Ивригоооу!" << endl;
 
    usleep(2000000);
    cout << "3" << endl;
    usleep(2000000);
    cout << "2" << endl;
    usleep(2000000);
    cout << "1" << endl;
    usleep(2000000);
 
 
    for(int i = 0; i < 20; i++)
    {
       usleep(2000000);
       cout << "чирипашка: " << speedrange(tuSpeedRg, tArrayS) << endl;
       usleep(2000000);
       cout << "заекролик: " << speedrange(raSpeedRg, rArrayS) << endl;
 
    }
 
    return 0;
}
 
int speedrange(int pArrayS[], const int arraySize) 
{
    int tSpeed(int, int[]);
    int rSpeed(int, int[]);
 
    srand(static_cast<unsigned>(time(NULL)));
    int privy = rand() % 10;
 // cout << privy << endl;
    if(arraySize == 3)
    {
        return tSpeed(privy, pArrayS);
    }
    else if(arraySize == 5)
    {
        return rSpeed(privy, pArrayS);
    }
 
 
//return 0;
}
 
int tSpeed(int privy, int pArray[])
{
    if(privy >= 5)
    {
        return pArray[0];
    }
    else if(privy >= 6 && privy <= 7)
    {
        return pArray[1];
    }
    else if(privy >= 8 && privy <= 10)
    {
        return pArray[2];
    }
 
// return 0;
}
 
int rSpeed(int privy, int pArray[])
{
    if(privy == 0 && privy <= 1)
    {
        return pArray[0];
    }
    else if(privy >= 2 && privy <= 3)
    {
        return pArray[1];
    }
    else if(privy == 4)
    {
        return pArray[2];
    }
    else if(privy >= 5 && privy <= 7)
    {
        return pArray[3];
    }
    else if(privy >= 8 && privy <= 10)
    {
        return pArray[4];
    }
 
// return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.01.2012, 21:45     Старик Хоттабыч, хочу, что бы результат возвращаемый функцией не стакался...
Посмотрите здесь:

Что то не то с функцией strtok!!! C++
что за ошибка с функцией POW C++
C++ Множество возвращаемое функцией как результат
C++ Может ли третий проверка возвращаемого функцией значения влиять на результат линковки?
C++ Проблемма с функцией,подскажите что не так
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
14.01.2012, 21:57     Старик Хоттабыч, хочу, что бы результат возвращаемый функцией не стакался... #2
srand должен вызываться один раз, а не 20

Добавлено через 32 секунды
Цитата Сообщение от Капитан Техно Посмотреть сообщение
int tSpeed(int, int[]);
* * int rSpeed(int, int[]);
и почему эти прототипы внутри функции?
Капитан Техно
 Аватар для Капитан Техно
0 / 0 / 0
Регистрация: 18.07.2011
Сообщений: 32
14.01.2012, 22:01  [ТС]     Старик Хоттабыч, хочу, что бы результат возвращаемый функцией не стакался... #3
Jupiter, прототипы там, потому, что они вызываются внутри этой функции и нигде более, по пробовал вызвать srand один раз, результата нету, по крайней мере в моей проблеме, а за совет спасибо. У кого ещё варианты есть?
retmas
Жарю без масла
803 / 685 / 143
Регистрация: 13.01.2012
Сообщений: 1,580
14.01.2012, 22:09     Старик Хоттабыч, хочу, что бы результат возвращаемый функцией не стакался... #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
    if(privy >= 5)
    {
        return pArray[0];
    }
    else if(privy >= 6 && privy <= 7)
    {
        return pArray[1];
    }
    else if(privy >= 8 && privy <= 10)
    {
        return pArray[2];
    }
в этом коде где произойдет возврат из ф-ии при privy=5, при privy=7??
а при privy=4?
иными словами вы уверены, что при privy == 7 ф-я вернет pArray[1], а не pArray[0]
Капитан Техно
 Аватар для Капитан Техно
0 / 0 / 0
Регистрация: 18.07.2011
Сообщений: 32
14.01.2012, 22:19  [ТС]     Старик Хоттабыч, хочу, что бы результат возвращаемый функцией не стакался... #5
Цитата Сообщение от retmas Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
    if(privy >= 5)
    {
        return pArray[0];
    }
    else if(privy >= 6 && privy <= 7)
    {
        return pArray[1];
    }
    else if(privy >= 8 && privy <= 10)
    {
        return pArray[2];
    }
в этом коде где произойдет возврат из ф-ии при privy=5, при privy=7??
а при privy=4?
иными словами вы уверены, что при privy == 7 ф-я вернет pArray[1], а не pArray[0]
спасибо, ужас, ошибка на ошибке у меня, плюсую, помогло вроде, спасибо.
Yandex
Объявления
14.01.2012, 22:19     Старик Хоттабыч, хочу, что бы результат возвращаемый функцией не стакался...
Ответ Создать тему
Опции темы

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