Arkadaşlar saatlerdir şu saçmalıkla uğraşıyorum. Bir türlü bulamadım hatanın nerede olduğunu. Yardımcı olabilir misiniz? Özellikle kütüphane kullanmadım yazarken antrenman olsun diye.
Function
int isanagram(char const* a, char const* b) {
int lenghta,lenghtb;
for(int i=0; a[i]!='\0'; i++) // get lenght a
lenghta = i+1;
for(int i=0; b[i]!='\0'; i++) /// get lenght b
lenghtb = i+1;
if(lenghta != lenghtb)
return FALSE;
char arr1[lenghta], arr2[lenghtb];
for(int i=0; i<lenghta-1; i++)
for(int j=i+1; ja[j])
{
arr1[i] = a[j];
arr1[j] = a[i];
}
else
{
arr1[i] = a[i];
arr1[j] = a[j];
}
if(b[i]>b[j])
{
arr1[i] = b[j];
arr1[j] = b[i];
}
else
{
arr2[i] = b[i];
arr2[j] = b[j];
}
}
arr1[lenghta-1] = '\0';
arr2[lenghta-1] = '\0';;
for (int i = 0; i < lenghta-1; i++)
{
if(arr1[i] != arr2[i])
return FALSE;
}
return TRUE;
}
Fonksiyon iki diziyi alır ve onların anagram olup olmadığını bulur. Önce dizi uzunluklarının eşit olup olmadığına bakar. Eğer eşitse iki diziyi de harf sırasına göre sıralayıp geçici bir diziye atar. Eğer bu geçici diziler eşitse TRUE, değilse FALSE döndürür.
Not: TRUE ve FALSE makrolarını yukarıda tanımladım.
Düzenleme 1: Sorunu buldum, dizideki sürekli en küçük eleman bulunup kopya diziye aktarılıyor.
yani dizi [9,8,7,6,5,4,3,2,1] şeklindeyse [1,1,1,1,1,1,1,1,1] oluyor.