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

Передача аргументов в функцию - C++

Восстановить пароль Регистрация
 
saserlend
10 / 10 / 1
Регистрация: 25.11.2011
Сообщений: 137
02.11.2013, 15:57     Передача аргументов в функцию #1
Хочу размерность массива задать в отдельной функции, но не получается разобраться с передачей аргументов. Поясните, а то самому пока не получается разобраться.
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
#include <iostream>
#include <time.h>
using namespace std;
 
int dimension();
 
int main()
{
    int iLeght, iWidth, iHight;
 
    setlocale (LC_ALL, "Russian");
    dimension();
 
    bool bMass[iLeght][iWidth][iHight];
 
    for(int i=0; i<iLeght; i++)
    {
        for(int j=0; j<iWidth; j++)
        {
            for(int k=0; k<iHight; k++)
            {
                bMass[i][j][k]=static_cast < bool > ( rand ( ) % 2 );
                cout<<bMass[i][j][k];
            }
            cout << "\n";
        }
        cout << "\n\n";
    }
}
 
int dimension(int iLeght, int iWidth,int iHight)
{
    srand( (unsigned)time( NULL ) );
    
    const int *i, *j, *k = new int;
 
    iLeght = rand () % 10 + 1;
    iWidth = rand () % 10 + 1;
    iHight = rand () % 10 + 1;
    i = &iLeght;
    j = &iWidth;
    k = &iHight;
 
    cout << i << "  " << j << "  " << k << endl;
    return (iLeght, iWidth, iHight);
    
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
scenotaph
120 / 120 / 15
Регистрация: 29.03.2013
Сообщений: 237
02.11.2013, 16:10     Передача аргументов в функцию #2
Ну во-первых, у вас объявление функции отлично от определения
Во-вторых, при задании статического массива
C++
1
  bool bMass[iLeght][iWidth][iHight];
Так вы делать не можете, так как параметры внутри квадратных скобок должны быть константными. Используйте динам. массив
В-третьих, в функцию просто передавайте ссылки на переменные, которые являются размерам, да там их и задавайте

C++
1
2
3
4
5
6
7
8
void dimension(int &iLeght, int &iWidth,int &iHight)
{
    srand( (unsigned)time( NULL ) );
    iLeght = rand () % 10 + 1;
    iWidth = rand () % 10 + 1;
    iHight = rand () % 10 + 1;
    cout << iLeght << "  " << iWidth << "  " << iHight << endl;  
}
Tulosba
:)
Эксперт C++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
02.11.2013, 16:11     Передача аргументов в функцию #3
saserlend, поясните подробнее, чего Вы хотите добиться.
P.S. Что такое Leght? Если префиксы i значат int (а не то, что эти переменные запатентованы фирмой Apple ) я бы не стал их использовать.
saserlend
10 / 10 / 1
Регистрация: 25.11.2011
Сообщений: 137
02.11.2013, 18:20  [ТС]     Передача аргументов в функцию #4
Ясно. Я просто экспериментирую, потому что не понимаю. А тут я хотел в функции dimension() выделить память под 3 переменные, присвоить им рандомные значения и вернуть в main(), где я инициализирую массив этими переменными.

Добавлено через 2 минуты
Цитата Сообщение от Tulosba Посмотреть сообщение
saserlend, поясните подробнее, чего Вы хотите добиться.
P.S. Что такое Leght? Если префиксы i значат int (а не то, что эти переменные запатентованы фирмой Apple ) я бы не стал их использовать.
Ну простите =) iLenght=)

Добавлено через 1 час 58 минут
C горем пополам но я создал константные переменные через rand() в отдельной функции. Осталось их вернуть. Но в этом и заключался мой вопрос.
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
#include <iostream>
#include <time.h>
using namespace std;
 
int dimension();
 
int main()
{
    setlocale (LC_ALL, "Russian");
    dimension();
    bool bMass[iLenght][iWidth][iHight];
}
 
int dimension()
{
    srand( (unsigned)time( NULL ) );
    int iLe, iWi, iHi;
 
    const int *i = new int;
    const int *j = new int;
    const int *k = new int;
    
    iLe = rand () % 10 + 1;
    iWi = rand () % 10 + 1;
    iHi = rand () % 10 + 1;
 
    int *pi = const_cast < int* > (i);
    int *pj = const_cast < int* > (j);
    int *pk = const_cast < int* > (k);
 
    *pi = iLe;
    *pj = iWi;
    *pk = iHi;
 
    const int iLenght = *pi;
    const int iWidth = *pj;
    const int iHight = *pk;
 
    
    return (iLenght, iWidth, iHight);
}
scenotaph
120 / 120 / 15
Регистрация: 29.03.2013
Сообщений: 237
02.11.2013, 19:46     Передача аргументов в функцию #5
saserlend,
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
#include <iostream>
#include <time.h>
using namespace std;
 
void dimension(int&,int&,int&);
 
int main()
{
    setlocale (LC_ALL, "Russian");
    int iLenght,iWidth,iHight;
    dimension(iLenght,iWidth,iHight);
    int ***bMass=new int **[iLenght];
    for (int i=0;i<iLenght;i++)
    {
        bMass[i]=new int *[iWidth];
        for (int j=0;j<iWidth;j++)
            bMass[i][j]=new int [iHight];
    }
/*Дальнейшие действия с массивом + удаление*/
    system("pause");
    return 0;
}
 
void dimension(int &iLeght, int &iWidth,int &iHight)
{
    srand( (unsigned)time( NULL ) );
    iLeght = rand () % 10 + 1;
    iWidth = rand () % 10 + 1;
    iHight = rand () % 10 + 1;
    cout << iLeght << "  " << iWidth << "  " << iHight << endl;  
}
[
Yandex
Объявления
02.11.2013, 19:46     Передача аргументов в функцию
Ответ Создать тему
Опции темы

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