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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Капитан Техно
0 / 0 / 0
Регистрация: 18.07.2011
Сообщений: 32
#1

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

14.01.2012, 21:45. Просмотров 412. Ответов 4
Метки нет (Все метки)

Доброго времени суток, уважаемые форумчане. У меня такая проблемка. Возвращаемый функцией результат, а это у меня определенный элемент массива при определенном условии, при использовании в цикле 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     Старик Хоттабыч, хочу, что бы результат возвращаемый функцией не стакался...
Посмотрите здесь:

Как разделить результат, возвращаемый Multi curl? - C++
1)Я вообще непонимаю зачем нужна функция static int writer(char *data, size_t size, size_t nmemb, string *buffer) как по мне...

Множество возвращаемое функцией как результат - C++
Помогите пожалуйста с возвратом множества, как результата работы функции. int Cross(){ set&lt;int&gt; b; ...

Вычислить сумму ряда и сравнить результат с функцией у=pow (3,x) - C++
S=1+pow (ln,3)/1!*x+pow (ln,2)*3/2!*pow (x,2)+pow (ln,3)*3/3!*pow (x,3)+...+pow (ln,15)*3/15!*pow (x,15). Решите задачу и сравните...

Может ли третий проверка возвращаемого функцией значения влиять на результат линковки? - C++
Не торопитесь с ответом. Я тоже так думал. Кропаем dll: //dllka.cpp #include &lt;unknwn.h&gt; void f(){ //Размер взят от...

Что не так с функцией? - C++
#include&lt;iostream&gt; #include&lt;cstring&gt; #include&lt;Windows.h&gt; using namespace std; void sravn(char s); void main() { ...

Что то не то с функцией strtok!!! - C++
Вот есть код: #include&lt;string.h&gt; #include&lt;iostream.h&gt; int main() { char *string1 = &quot;sdfsdf sdfs gjhg 1 h5jj&quot;; char *string2...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 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
Жарю без масла
859 / 741 / 164
Регистрация: 13.01.2012
Сообщений: 1,694
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]
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.01.2012, 22:19     Старик Хоттабыч, хочу, что бы результат возвращаемый функцией не стакался...
Еще ссылки по теме:

Что не так с функцией? - C++
MASSIVE ME(MASSIVE X) { MASSIVE Z,C; int i; char Q; int N; X.EXIT(); C.n = X.n; for (i = 1; i &lt;= C.n; i++) {

Что не так с функцией RemoveToRight? - C++
#include &lt;iostream&gt; #include &lt;algorithm&gt; #include &lt;time.h&gt; class Position { public: int x, y; }; void PrintMap(int myMap);...

что за ошибка с функцией POW - C++
s=s+(pow(x,4*n+1)/4*n+1); что не так Добавлено через 1 минуту все ясно,надо было цифры как double,или float объявлять

Проблемма с функцией,подскажите что не так - C++
#include &quot;stdafx.h&quot; #include&lt;iostream&gt; #include &lt;clocale&gt; #include &lt;cmath&gt; using namespace std; void input (double x,...


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

Или воспользуйтесь поиском по форуму:
Капитан Техно
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     Старик Хоттабыч, хочу, что бы результат возвращаемый функцией не стакался...
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru