Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.11.2010, 11:20   #1
mansp
Пользователь
 
Регистрация: 27.10.2010
Сообщений: 52
По умолчанию не правильно работает функция

создал функцию которая должна заполнять двухмерный масив рандомными значениями . в итоге функция заполняет все элементы масива только одним значением

Код:
void func5 (int mass [9][9]) 
{ 
 int m=9, n=9;
	int i=0;
	for(;i<=m;i++)
	{ 
		int j=0;
		cout<<endl;
		for(;j<=n;j++)
		{
			srand(time(0)); 
			mass[i][j]=rand(); 
			cout<<mass[i][j]<<" ";
		}
	}
}
mansp вне форума Ответить с цитированием
Старый 07.11.2010, 11:41   #2
Sam Gold
Форумчанин
 
Аватар для Sam Gold
 
Регистрация: 26.03.2010
Сообщений: 538
По умолчанию

Надо убрать строчку
Код:
srand(time(0));
тогда будет работать
Единственный способ стать умнее - играть с более умным противником.
Sam Gold вне форума Ответить с цитированием
Старый 07.11.2010, 11:47   #3
mansp
Пользователь
 
Регистрация: 27.10.2010
Сообщений: 52
По умолчанию

работает. но ещо одно ...
когода выставляю
Код:
mass[i][j]=rand(10);
выбивает ошибку

error C2661: rand: нет перегруженной функции, принимающей 1 аргументов

как это испаравить?
mansp вне форума Ответить с цитированием
Старый 07.11.2010, 11:52   #4
Sam Gold
Форумчанин
 
Аватар для Sam Gold
 
Регистрация: 26.03.2010
Сообщений: 538
По умолчанию

Цитата:
Код:
mass[i][j]=rand(10);
выбивает ошибку
Это ты хочешь выводить случайные числа из промежутка [0,10]?
Тогда делай так
Код:
mass[i][j]=rand()%10;
Функция rand() не принимает никаких аргументов
Единственный способ стать умнее - играть с более умным противником.
Sam Gold вне форума Ответить с цитированием
Старый 07.11.2010, 11:52   #5
mansp
Пользователь
 
Регистрация: 27.10.2010
Сообщений: 52
По умолчанию

да! огромное спасибо
тоько у меня почемуто всегда выбираютса одинаковые цифры, наверно всьо таки надо перегрузить
Код:
srand(time(0));
куда єто всунуть?

Последний раз редактировалось mansp; 07.11.2010 в 11:56.
mansp вне форума Ответить с цитированием
Старый 07.11.2010, 11:57   #6
mansp
Пользователь
 
Регистрация: 27.10.2010
Сообщений: 52
По умолчанию

всё сделал ...
mansp вне форума Ответить с цитированием
Старый 07.11.2010, 11:59   #7
mansp
Пользователь
 
Регистрация: 27.10.2010
Сообщений: 52
По умолчанию

а почему функция не хочет работать в таком случае?
как єто правильно реализировать?
Код:
int m=9, n=9;
void func5 (int mass [m][n]) 
{
	srand(time(0));
	int i=0;
	for(;i<=m;i++)
	{ 
		int j=0;
		cout<<endl;
		for(;j<=n;j++)
		{
			
			mass[i][j]=rand()%10; 
			cout<<mass[i][j]<<" ";
		}
	}
}

Последний раз редактировалось mansp; 07.11.2010 в 12:07.
mansp вне форума Ответить с цитированием
Старый 07.11.2010, 12:19   #8
Ezhuk
Форумчанин
 
Регистрация: 09.10.2010
Сообщений: 217
По умолчанию

Код:
int i=0;
	for(;i<=m;i++)
массив из 9 элементов имеет индексы от 0 до 8. В функции получается, что заполняется и выводятся элементы с индексом 9 не входящие в массив.
Ёж птица гордая, пока не пнешь не полетит.
Ezhuk вне форума Ответить с цитированием
Старый 07.11.2010, 13:24   #9
mansp
Пользователь
 
Регистрация: 27.10.2010
Сообщений: 52
По умолчанию

не в том проблема...
мне интересно как можно задать масив вот так
Код:
int m=10, n=10;
int da[m][n];
d:\амп\lab4\lab4\lab4.cpp(17) : error C2057: требуется константное выражение
d:\амп\lab4\lab4\lab4.cpp(17) : error C2466: невозможно выделить память для массива постоянного нулевого размера
d:\амп\lab4\lab4\lab4.cpp(17) : error C2057: требуется константное выражение
d:\амп\lab4\lab4\lab4.cpp(17) : error C2466: невозможно выделить память для массива постоянного нулевого размера
d:\амп\lab4\lab4\lab4.cpp(17) : error C2087: dA: отсутствует индекс
:\амп\lab4\lab4\lab4.cpp(133) : error C2664: func5: невозможно преобразовать параметр 1 из 'int [][1]' в 'int [][10]'

как для него память то выделить?

Последний раз редактировалось mansp; 07.11.2010 в 13:30.
mansp вне форума Ответить с цитированием
Старый 07.11.2010, 13:42   #10
mansp
Пользователь
 
Регистрация: 27.10.2010
Сообщений: 52
По умолчанию

всё равно выбивает ошибку(((
Код:
void func5 (int mass [10][10] ,int m,int n) 
{
	srand((unsigned) time(0));
	int i=0;
	for(;i<=m;i++)
	{ 
		int j=0;
		cout<<endl;
		for(;j<=n;j++)
		{
			mass[i][j]=rand()%10; 
			cout<<mass[i][j]<<" ";
		}
	}
}


int _tmain(int argc, _TCHAR* argv[])
{
	int m=10, n=10 ;
	int* da=new int[m*n];
	func5(da,m,n);
func5: невозможно преобразовать параметр 1 из 'int *' в 'int [][10]'
mansp вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа работает не правильно artem611 Паскаль, Turbo Pascal, PascalABC.NET 2 22.09.2010 07:49
Не правильно работает запрос ww01031977 Microsoft Office Access 12 21.04.2010 10:52
Не правильно работает программа Virus_L Помощь студентам 0 28.12.2009 22:52
Пожскажите.Правильно оттабулирована функция?(Basic C++). sawer5 Общие вопросы C/C++ 0 28.11.2009 14:37
Функция StrtoFloat не правильно возвращает число Ra88it Помощь студентам 2 02.12.2008 20:26