Консультация № 189345
11.05.2016, 18:09
0.00 руб.
0 2 1
Здравствуйте! Прошу помощи в следующем вопросе:

Задание:
Для решения различных задач используются методы Монте-Карло,
предполагающие применение массивов случайных чисел с большим количеством
элементов. Размер массива становится известным во время выполнения про-
граммы, т.е. массив должен создаваться динамически. Создайте две функции для
решения одной и той же задачи: динамическое создание и заполнение случайными
числами массива указанного размера. Первая функция должна использовать
возвращаемое значение для передачи пользователю сгенерированного массива, а
вторая должна передавать массив через один из своих аргументов. Стандартная
библиотека Си содержит функции int rand() и void srand(unsigned) для генерации
псевдослучайных чисел (прототипы в файле stdlib.h).


#include "stdafx.h"
#include <iostream>
#include <iomanip>
#include <ctime>

using namespace std;

int *mas_ret(int n)
{
int *mas = new int[n];
srand(time(NULL));
for (int i = 0; i < n; i++)
{
mas[i] = rand() % 100;
}
return mas;
}

void mas_var(int **mas, int n)
{
*mas = new int[n];
srand(time(NULL));
for (int i = 0; i < n; i++)
{
*(*mas + i) = rand() % 100;
}
}


void printArray(int *mas, int n)
{
cout << endl;
for (int i = 0; i < n; i++)
{
cout << setw(4) << *mas++;
}
cout << endl;
}


int main()
{
setlocale(LC_ALL, "Rus");

int *mas1 = NULL;
int *mas2 = NULL;
int n;

cout << "Введите размер массива" << endl;
cin >> n;
if (n > 0)
{
mas1 = mas_ret(n);//Первая функция должна использовать возвращаемое значение для передачи пользователю сгенерированного массива
mas_var(&mas2, n);//Вторая должна передавать массив через один из своих аргументов
printArray(mas1, n);
printArray(mas2, n);
delete[] mas1;
delete[] mas2;
}
else
{
cout << "Размер массива не может быть отрицательным!" << endl;
}

system("pause");
return 0;
}



Почему у нас тут:
void mas_var(int **mas, int n) две звездочки?

Обсуждение

давно
Посетитель
7438
7205
11.05.2016, 19:13
общий
Адресаты:
Потому что нам надо изменить переменную, в которой должен находиться адрес массива.
Для этого надо передать адрес этой переменной. Фактически адрес адреса массива целых.
Поэтому и пишутся две звездочки.
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
давно
Посетитель
7438
7205
14.05.2016, 10:48
общий
это ответ
Здравствуйте, Посетитель - 399158!
Потому что нам надо изменить переменную, в которой должен находиться адрес массива.
Для этого надо передать адрес этой переменной. Фактически адрес адреса массива целых.
Поэтому и пишутся две звездочки.
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
Форма ответа