Poszukuję sposobu na konwersję ze stringa w int.
Mianowicie na bazie napisu ma powstawać indywidualny kod liczbowy (coś ala suma md5 ale tylko na liczbach bez liter).
Z góry dziękuje za pomoc.

String liczba = "10";
int x = liczba.ToInt();
int y = (int)liczba;
int z = StrToInt(liczba);


int __fastcall CreateID(String name)
{
AnsiString litery[] = {"a", "b", "c", "d", "e"};
int liczby[] = {0, 1, 2, 3, 4};
int ID = 0;
for(unsigned int i = 0; i < ARRAYSIZE(litery); i++)
{
if(name[i].LowerCase() == litery[i].LowerCase()) // można też if(SameText(name[i], litery[i]))
{
ID = ID + liczby[i];
}
}
return ID;
}
//-------------------------------------------------------------------
void __fastcall TForm1::Button1(TObject *Sender)
{
int Identyfikator = CreateID("Kozioł");
}
//---------------------------------------------------------------------------
int CreateID(const String name)
{
int ID = 0;
PChar litery;
litery = name.c_str();
while(*litery != '\0')
{
ID = ID + (int)*litery;
litery++;
}
return ID;
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Caption = (String)CreateID("Koziol");
}
//---------------------------------------------------------------------------

No to nie ma na to jakichś gotowych algorytmów
- Kod: Zaznacz cały
AnsiString litery[] = {"a", "b", "c", "d", "e"};
const char *litery = "abcde";
Ech Baron, Baron. Nie można tak?int __fastcall CreateID(String name)
{
const AnsiString litery = "abcde";
int ID = 0;
for(unsigned int i = 1; i <= litery.Length(); i++)
{
int x = name.Pos(litery[i]);
if(x >= 0)
{
ID = ID + i;
}
}
return ID;
}
//-------------------------------------------------------------------
void __fastcall TForm1::Button1(TObject *Sender)
{
int Identyfikator = CreateID("Kozioł");
}


Koziol napisał(a):A tak odbiegając od tematu. Ostatnio zaczęła się robić nie ciekawa atmosfera na forum (np. wymiana zdań powyżej) moim zdaniem nie należy krytykować pomysłów innych każdy stara sie pomóc na jakiś sposób, a druga sprawa ilu programistow tyle algorytmów i sposobów podejścia do tematu. Kończąc wywód nie kłóćmy się, a dyskutujmy szukając najlepszego rozwiązania.

#define QUOTIENT 0x04c11db7
unsigned int crc32_init(unsigned char *data, int len)
{
unsigned int result;
int i,j;
unsigned char octet;
if (len < 4) abort();
result = *data++ << 24;
result |= *data++ << 16;
result |= *data++ << 8;
result |= *data++;
result = ~ result;
len -=4;
for (i=0; i<len; i++)
{
octet = *(data++);
for (j=0; j<8; j++)
{
if (result & 0x80000000)
{
result = (result << 1) ^ QUOTIENT ^ (octet >> 7);
}
else
{
result = (result << 1) ^ (octet >> 7);
}
octet <<= 1;
}
}
return ~result; /* The complement of the remainder */
} result = *data++ << 24;
result |= *data++ << 16;
result |= *data++ << 8;
result |= *data++;
result = ~ result;Nie wiem gdzie ty w tym wątku masz kłótnie?


Powrót do Ogólne problemy z programowaniem
Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 5 gości