Проблема с массивом

Vit_ amin

Добрая душа
Сообщения
1,525
Реакции
688
  1. Имеется какой-то массив, с размером 128
  2. С помощью функции я получаю SteamID игрока и заношу его в новый массив с 32 размером (к примеру)
  3. С помощью какой-то функции я вырезаю все из нового массива, кроме 4ех последних цифр STEAM ID
  4. Проверяю, если есть эти 4 цифры в массиве размером 128, тогда делаю что-то, иначе что-то делаю и заношу эти 4 цифры в массив.
P.S. Можете набросать код, туго идет с данным алгоритмом ...
 

selax

Добрая душа
Сообщения
1,172
Реакции
521
Vit_ amin, ну вы и задачку задали... :)
В пункте 2 обязательно заносить Steam ID или тоже можно 4 цифры?
 

gibs

Фитиль народного волненья
Сообщения
722
Реакции
407
Мошенник
Какой-то упоротый метод хранения данных)
 

selax

Добрая душа
Сообщения
1,172
Реакции
521
P.S. Можете набросать код, туго идет с данным алгоритмом ...
Я правда не знаю что я написал, но как то примерно так оно будет...
Код если что 100% нерабочий, просто набросок... :)

PHP:
char steamid_128	[ 128 ] [ 4 ];
char steamid		[ 32 ] [ 32 ];

void CheckSteamID ( )
{
	// Заносим steamid из какойта функции в массив
	for ( int i = 1; i <= MaxClients; i++ )
	{
		ev.GetString ( "networkid",	steamid [ i ], sizeof ( steamid [ i ] ) );
	}
	
	// узнаем номер ячейки последнего символа
	for ( int i = 0; i < 32; i++ )
	{
		int size = 0;
		
		// перебираем массив из 32 steamid по 32 (не всегда) символа
		// Нужно, так как размер steamid бывает разный на сколько я знаю;
		for ( int x = 0; x < 32; x++ )
		{
			if ( steamid [ i ] [ x ] = '\0' )
			{
				// не уверен что -1 нужно делать
				size--;
				break;
			}
		}
		
		// отрезаем у массива переднюю часть, оставляя 4 символа последних
		strcopy( steamid [ i ], sizeof( steamid [ i ] ), steamid [ size - 4 ] );
	}
	
	// перебираем массив из 32 steamid по 4 символа
	for ( int i = 0; i < 32; i++ )
	{
		// перебираем массив из 128 steamid по 4 символа
		for ( int x = 0; x < 128; x++ )
		{
			// Если символы совпадают переходим к следующему steamid
			if ( StrEqual ( steamid_128 [ x ], steamid [ i ], false ) )
			{
				// тут вы можете делать что то если строки не совпали
				break;
			}
			
			// Если строчка пустая - значит предыдущая запись была последней
			// Следовательно можем занести в эту
			if ( StrEqual ( steamid_128 [ x ], "", false ) )
			{
				// на сколько я знаю так нельзя делать, для примера просто
				steamid_128 [ x ] = steamid [ i ];
				
				// тут вы можете делать что то если строки не совпали
			}
		}
	}
}
 

Vit_ amin

Добрая душа
Сообщения
1,525
Реакции
688
Я правда не знаю что я написал, но как то примерно так оно будет...
Код если что 100% нерабочий, просто набросок... :)

PHP:
char steamid_128	[ 128 ] [ 4 ];
char steamid		[ 32 ] [ 32 ];

void CheckSteamID ( )
{
	// Заносим steamid из какойта функции в массив
	for ( int i = 1; i <= MaxClients; i++ )
	{
		ev.GetString ( "networkid",	steamid [ i ], sizeof ( steamid [ i ] ) );
	}
	
	// узнаем номер ячейки последнего символа
	for ( int i = 0; i < 32; i++ )
	{
		int size = 0;
		
		// перебираем массив из 32 steamid по 32 (не всегда) символа
		// Нужно, так как размер steamid бывает разный на сколько я знаю;
		for ( int x = 0; x < 32; x++ )
		{
			if ( steamid [ i ] [ x ] = '\0' )
			{
				// не уверен что -1 нужно делать
				size--;
				break;
			}
		}
		
		// отрезаем у массива переднюю часть, оставляя 4 символа последних
		strcopy( steamid [ i ], sizeof( steamid [ i ] ), steamid [ size - 4 ] );
	}
	
	// перебираем массив из 32 steamid по 4 символа
	for ( int i = 0; i < 32; i++ )
	{
		// перебираем массив из 128 steamid по 4 символа
		for ( int x = 0; x < 128; x++ )
		{
			// Если символы совпадают переходим к следующему steamid
			if ( StrEqual ( steamid_128 [ x ], steamid [ i ], false ) )
			{
				// тут вы можете делать что то если строки не совпали
				break;
			}
			
			// Если строчка пустая - значит предыдущая запись была последней
			// Следовательно можем занести в эту
			if ( StrEqual ( steamid_128 [ x ], "", false ) )
			{
				// на сколько я знаю так нельзя делать, для примера просто
				steamid_128 [ x ] = steamid [ i ];
				
				// тут вы можете делать что то если строки не совпали
			}
		}
	}
}
Спасибо, попробую.
 
Последнее редактирование:
Сверху Снизу