proszę o pomoc :( PORÓWNYWANIE LEKSYKOGRAFICZNE

0

mam takie polecenie:

Mamy alfabet A złożony z trzech liter: c, a, b. Napisz funkcję
int my_strcmp(char S1[], char S2[]);
która porówna ze sobą łańcuchy S1 i S2 zapisane w alfabecie A. Wynikiem powinno być:
0, jeśli S1=S2;
-1, jeśli S1 jest leksykograficznie mniejszy niż S2;
1, jeśli S1 jest leksykograficznie większy niż S2.

Input:
5
aa cc
ac a
c ac
bc ab
bc ac

Output:
1
1
-1
1
1

GOTOWY POCZĄTEK/SZABLON:
#include <iostream>
#include <cstring>
#include <cassert>

using namespace std;

typedef char letter;

#define T_SIZE 1001
#define MAX_ZNAK 256

int my_strcmp(char S1[], char S2[]);

int main(){
int t,odp;
char S1[T_SIZE], S2[T_SIZE];

cin >> t; /* wczytaj liczbę testów */
cin.getline(S1,T_SIZE);
while(t){
cin.getline(S1,T_SIZE,' ');
cin.getline(S2,T_SIZE);
odp=my_strcmp(S1, S2);
cout << odp << endl;
t--;
}
return 0;
}

Nie wiem jak się za to zabrać, bo kompletnie nie ogarniam wskaźników i tych łańcuchów znaków, więc będę wdzięczna za jakąkolwiek pomoc.
W sumie nieważne jak, ważne by program robił to co ma robić :'(((

0

Użyj: http://www.cplusplus.com/reference/cstring/strcmp/

EDIT Jeśli nie Możesz używać dodatkowych funkcji to:

int compare_strings(char a [], char b []) {
	while (*a && *b) {
		if (*a < *b) 
			return -1;
		a++;
		b++;
	}
	return 1;
}


int main() {
	printf("%d\n", compare_strings("bbccc", "aabbc")); // -> -1
	return 0;
}

EDIT2 Jak słusznie zauważył @hauleth; brakowało wariantu równych ciągów(jak długości równe i inkrementacja cnt do nich "dojechała, to zwróć 0"). Dołozyłem też funkcję liczącą długość stringa, i naprawiłem buga w warunku while (jak on przeszedł to tylko chochlik wie!:)), niestety kod się trochę skomplikował:

int len(char a []){
    int cnt = 0;
    while (*a++)
       cnt++;
    return cnt;
}

int compare_strings(char a [], char b []) {
	int cnt = 0;
	int a_len = len(a);
	int b_len = len(b);
	while (*a && *b) {
	    if (*a == *b)
			cnt++;
		if (*a < *b) 
			return -1;
		a++;
		b++;
	}
	if ( a_len == b_len && a_len == cnt ) return 0;
	return 1;
}


int main() {
	char a[] = "aa";
	char b[] = "aa";
	printf("%d\n", compare_strings(a, b)); // -> 0
	printf("%d\n", compare_strings("ab", "aac")); // -> 1
	return 0;
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1