Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > C++

Ответ
 
Опции темы
Старый 03.10.2012, 01:05   #1
JACUK
Знающий
 
Регистрация: 09.10.2009
Сообщений: 340
Написано 37 полезных сообщений
(для 61 пользователей)
Створення статичної бібліотеки

Как в сделать result размеронезависимым и как определить длину массива?
Вложения
Тип файла: zip FindIndexLib.zip (2.55 Мб, 394 просмотров)
__________________




(Offline)
 
Ответить с цитированием
Старый 03.10.2012, 02:26   #2
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: Створення статичної бібліотеки

узнать размер массива:
sizeof(result) / sizeof(result[0])
но в нашем случае должно быть все по другому.
узнать размер массива по указателю гарантированно никак нельзя (если не пользоваться компиляторозависимыми хаками)

тебе нужно будет его передавать явно.
заголовок функции в либке будет выглядеть как то так:
void __stdcall returnNumbers_(int size_a,int size_b,int *a, int *b, int *result);
напишем хелпер для удобного вызова:
template<int A, int B>
void returnNumbers(int (&a)[A],int (&b)[b],int *result)
{
	returnNumbers_(A,B,a,b,result);
}
реализация будет какаято-такая:
void __stdcall returnNumbers_(int size_a,int size_b,int *a, int *b, int* result)
{												
	int count=0;
	
	
	for(int i=0;i<size_a;i++)
	{
		for(int j=0;j<size_b;++j)
		{
			if(a[i]==b[j])
			{
				count++;
			}
		}
	}
	int index=0;
	for(int i=0;i<size_a;++i)
	{
		for(int j=0;j<size_b;++j)
		{
			if(a[i]==b[j])
			{
				result[index++]=i;					
			}
		}
	}	
	for(int i=count;i<10;i++)
	{
		result[i]=-1;
	}
}
вызывающая сторона не изменится

это все делалось из условия что размер a равен размеру result. если это не так, то нужно аналогичным образом передать размер еще одного массива.

result можно инициализировать так:
int result[sizeof(a) / sizeof(a[0])]={-1};
(Offline)
 
Ответить с цитированием
Старый 14.10.2012, 04:10   #3
JACUK
Знающий
 
Регистрация: 09.10.2009
Сообщений: 340
Написано 37 полезных сообщений
(для 61 пользователей)
Ответ: Створення статичної бібліотеки

Спасибо уже и сам разобрался! Мой вариант:
Вложения
Тип файла: zip FindIndexLib.zip (2.56 Мб, 428 просмотров)
__________________




(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 10:06.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com