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

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

Войти
Регистрация
Восстановить пароль
 
saserlend
11 / 11 / 1
Регистрация: 25.11.2011
Сообщений: 145
#1

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

02.11.2013, 15:57. Просмотров 327. Ответов 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
#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);
    
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.11.2013, 15:57
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Передача аргументов в функцию (C++):

Передача аргументов в функцию - C++
как передать аргумент в функцию по указателю? нашел только по значению: int sqr(int x); int main() { int t=10; ...

Передача аргументов в функцию - C++
Доброго всем дня! Я немного не понял листинг программы из учебника Р.Лафоре: #include&quot;stdafx.h&quot; #include&lt;iostream&gt; ...

Передача аргументов в функцию - C++
Что сработает быстрее? void Func(const A &amp;a = A(0, 0, 0)) { } или void Func(A a = A(0, 0, 0))

Передача аргументов в функцию - C++
При сборке кода выдает ошибку (её я написал в комментарий). Что значит ошибка? #include &lt;iostream&gt; #include &lt;math.h&gt; using...

Передача аргументов в функцию по ссылке и указателю - C++
Чем отличается передача по ссылке от передачи по указателю аргументов в функцию?

Передача аргументов в функцию и возврат значения - C++
Зачем нужны аргументы функции? Что делает return, если задать ненулевое значение? Как из main() перенести переменную в другую...

4
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;  
}
0
Tulosba
:)
Эксперт С++
4396 / 3232 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
02.11.2013, 16:11 #3
saserlend, поясните подробнее, чего Вы хотите добиться.
P.S. Что такое Leght? Если префиксы i значат int (а не то, что эти переменные запатентованы фирмой Apple ) я бы не стал их использовать.
0
saserlend
11 / 11 / 1
Регистрация: 25.11.2011
Сообщений: 145
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);
}
0
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;  
}
[
0
02.11.2013, 19:46
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.11.2013, 19:46
Привет! Вот еще темы с ответами:

Передача аргументов в функцию динамической библиотеки - C++
И снова здравствуйте. Я пытаюсь написать универсальный класс, который позволит мне обращаться к любым функциям динамических билиотек. ...

Передача неизвестного количества аргументов в функцию, как реализовать? - C++
Вот есть функция и в нее будут передаваться какие-то аргументы, причем заранее не известен их тип и количество (там уже в зависимости от...

Передача аргументов в ф-ию - C++
void test(const T&amp; a) {} Это понятно, а что это за запись: void test(T const&amp; a) {} И как понять ссылку на ссылку,...

передача аргументов - C++
Здравствуйте,объясните пожалуйста,на примерах кода,что означает передача аргументов по ссылке, по значению,передача копий аргументов?


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

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