Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

Porównanie nicków


  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
5 odpowiedzi w tym temacie

#1 ozoku

    Początkujący

  • Użytkownik

Reputacja: 0
Nowy

  • Postów:16
  • Lokalizacja:MC Podl
Offline

Napisano 01.11.2013 20:48

Witam, mam problem mógłby ktoś pokierować mnie jak porównać nicki graczy i wydobyć najbardziej powtarzające się znaki np:

  1. Smietana | g2
  2. Smietana | f1
  3. Smietana | s5
  4. Smietana | e7
  5. Smietana | q8

lub 

  1. .::Smietana::. g2
  2. .::Smietana::. f1
  3. .::Smietana::. s5
  4. .::Smietana::. e7
  5. .::Smietana::. q8

chodzi mi dokładniej o to ze jak porówna tych graczy to zauważy ze najczęściej powtarza się Smietana | lub .::Smietana::. oczywiście to będzie sporo różnych kombinacji tego 

Wiem że muszę mieć to w Array tylko teraz porównanie mi jest potrzebne, np. Smietana | g2 jest porównywana z Smietana | e7 wtedy zwrócić ma nam Smietana |  lub poprostu w Array'u 1 albo 0


  • +
  • -
  • 0

#2 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 554
Godlike

  • Postów:11 979
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 01.11.2013 21:12

Gotowe rozwiązania

http://peb.pl/progra...ch-tekstow.html

http://www.coderscit...ftopic23341.htm

 

Lub bardzo ciekawa lektura na temat wyszukiwania stringów w stringach

http://en.wikipedia....ching_algorithm


  • +
  • -
  • 1

#3 ozoku

    Początkujący

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:16
  • Lokalizacja:MC Podl
Offline

Napisano 01.11.2013 22:08

thx DarkGL, za szybką odpowiedź. Popatrzę to i jak mi się uda dam znać


Użytkownik ozoku edytował ten post 01.11.2013 22:09

  • +
  • -
  • 0

#4 GwynBleidD

    Godlike

  • Przyjaciel

Reputacja: 1 869
Godlike

  • Postów:3 066
  • Steam:steam
  • Lokalizacja:Przemyśl
Offline

Napisano 01.11.2013 23:39

Prorokuję, że jest Ci to potrzebne do wykrywania tagów klanowych?


  • +
  • -
  • 0

NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
 
1988650.png?theme=dark


#5 ozoku

    Początkujący

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:16
  • Lokalizacja:MC Podl
Offline

Napisano 03.11.2013 10:50

tak właśnie do tego


  • +
  • -
  • 0

#6 ozoku

    Początkujący

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:16
  • Lokalizacja:MC Podl
Offline

Napisano 05.11.2013 16:13

Witam teraz z pytania przechodzę na prośbę czy mógłby ktoś przerobić mi to na amxx

#include <iostream>
#include <string.h>
#include <stdlib.h>

//#define DEBUG

using namespace std;

#ifdef DEBUG
void displayString( char * c ) {

	int i = 0;

	while ( c[ i ] != 0 ) {
		if ( c[ i ] == 0x01 ) {
			cout << " ";
		} else {
			cout << c[ i ];
		}
		i++;
	}
	cout << endl;
}
#endif

int getMatch( const char * sz_s1, const char * sz_s2, char ** result ) {

	const char * sz_t1 = ( strlen( sz_s1 ) > strlen( sz_s2 ) ? sz_s1 : sz_s2 );
	const char * sz_t2 = ( strlen( sz_s1 ) > strlen( sz_s2 ) ? sz_s2 : sz_s1 );
		
	const int c_strLen 	= strlen( sz_t1 );		
	const int c_strLen2 	= strlen( sz_t2 );
		
	char * sz_tmp 	= new char[ c_strLen ];		
	
	char * sz_compare 	= new char[ c_strLen ];
	char * sz_final 	= new char[ c_strLen ];
	
	memset( sz_compare, 0, c_strLen );
	memset( sz_final, 0, c_strLen );
	
	/** We need to go through ( c_strLen2 + c_strLen ) - 1 iterations */
	const int c_max = ( c_strLen2 + c_strLen ) - 1;
	
	int n_pos = c_strLen - 1;

	for ( int i = 0; i < c_max; i++ ) {

		/** Fill array with non-zero and non-ascii code */
		memset( sz_tmp, 0x01, c_strLen );
		
		/** Make sure the last element is 0 */
		sz_tmp[ c_strLen ] = 0x0;
		
		/** Copy string from and to correct position */
		const int c_toCopy = n_pos < 0 ? c_strLen2 + n_pos : c_strLen - n_pos;
		
		strncpy( 
			&sz_tmp[ n_pos < 0 ? 0 : n_pos ], 
			&sz_t2[ n_pos < 0 ? -n_pos : 0 ], 
			c_toCopy );

#ifdef DEBUG		
		displayString( sz_tmp );
#endif
		/** Now we need to compare both strings: sz_t1 and sz_tmp. */		
		int idx = 0;
		
		for ( int j = 0; j < c_strLen; j++ ) {
			if ( sz_tmp[ j ] != 0x1 && sz_tmp[ j ] == sz_t1[ j ] ) {
				sz_compare[ idx ] = sz_tmp[ j ];
				idx ++;				
			} else {
				if ( idx > 0 ) {
					sz_compare[ idx ] = 0x0;
					if ( strlen( sz_compare ) > strlen( sz_final ) ) {
						strncpy( sz_final, 
							sz_compare, 
							strlen( sz_compare ) );
					}
				}
				idx = 0;
			}
		}
					
		n_pos --;
		
	}
	
	/** Copying result into (*result) */
	
	const int n_finalLen = strlen( sz_final );
	
	(*result) = new char[ n_finalLen ];
	strncpy( (*result), sz_final, n_finalLen );
		
	/** Releasing */	
	delete [] sz_compare;
	delete [] sz_final;
	delete [] sz_tmp;
	
	return n_finalLen;
}

int main( int argc, char ** argv ) {

	char * sz_result;

	if ( getMatch( "E30GT60D0A486F73743A65", "60D0A48743A20323", &sz_result ) > 0 ) {
		cout << "Result: " << sz_result << endl;		
	
	} else {
		cout << "No result found." << endl;
	}

	delete [] sz_result;

	return 0;
}

  • +
  • -
  • 0




Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych