Oryginalna strona colobot.cba.pl umarła, gdy cba.pl przestało oferować darmowy hosting. To jest statyczny mirror, pobrany w 2018. ~krzys_h
 Polski Portal COLOBOTa - COLOBOT Polish Portal
Forum - Polski Portal COLOBOTa
Strona głównaStrona główna UżytkownicyUżytkownicy GrupyGrupy StatystykiStatystyki


Poprzedni temat «» Następny temat
Przypisywanie wartości do łańcucha
Autor Wiadomość
colobotwymiiata 
Zjem cię


Twoja ulubiona misja: Swobodna na Krystalii
Pomógł: 6 razy
Wiek: 20
Dołączył: 02 Lut 2009
Posty: 329
Skąd: Oleśnica
Wysłany: 03-03-2009, 19:17   Przypisywanie wartości do łańcucha

Chciałbym się spytać, czy istnieje jakiś sposób aby do poszczególnych literek przypisać jakąś wartość? Np.: "a"=1 "b"=2 "c"=3 i robot jakąś funkją by to odbierał tak:

Kod:
extern void object::Lol()
{
string nazwa="abc";
int wartość=cod(nazwa);
message(""+wartość);
}
int object::cod(string costam)
{
//jakieś instrukcje co przypisują wartość liczbową literom, np.: jak "a" ma wartość 1, "b" 2, "c" 3 to funkcja zwraca z łańcucha "abc" wartość 123. Da się tak???
}
 
 
     
adiblol 
Administrator forum
FLOSS FTW!


Twoja ulubiona misja: porównywanie formatów audio
Pomógł: 18 razy
Dołączył: 21 Kwi 2008
Posty: 1313
Skąd: pokój odsłuchowy
Wysłany: 03-03-2009, 19:56   

Wiem do czego tego potrzebujesz! Robisz wymianę tekstów przez Stację Przekaźnikową. Zrezygnuj z tego... zamiast tego zrób klasę i pola statyczne... będzie szybciej działać i będzie wygodniejsze w obsłudze...
_________________
1Tbps Project && Telecomix Network

 
 
     
COLOBOT 
Administrator sieci
Założyciel portalu


Twoja ulubiona misja: Obie na Orfenii
Pomógł: 1 raz
Dołączył: 07 Lut 2008
Posty: 353
Skąd: Jarocin
Wysłany: 03-03-2009, 20:58   

Chyba da się, tylko trzeba użyć odpowiednich funkcji (jedna do cięcia ciągów, druga do łączenia i przydać się może "switch")
Mam tylko pytanie, jak ma wyglądać sprawa w dalszych literach alfabetu, bo dla K wychodzi 11, odkodowując wyjdzie AA.
_________________
Bykom STOP
A niechaj narodowie wżdy postronni znają, iż Polacy nie gęsi, iż swój język mają.
 
 
     
colobotwymiiata 
Zjem cię


Twoja ulubiona misja: Swobodna na Krystalii
Pomógł: 6 razy
Wiek: 20
Dołączył: 02 Lut 2009
Posty: 329
Skąd: Oleśnica
Wysłany: 03-03-2009, 21:54   

adiblol napisał/a:
Wiem do czego tego potrzebujesz! Robisz wymianę tekstów przez Stację Przekaźnikową.


Niestety, nie. chce zrobić robota-szyfranta, który kodowałby wiadomości.

COLOBOT napisał/a:
Mam tylko pytanie, jak ma wyglądać sprawa w dalszych literach alfabetu, bo dla K wychodzi 11, odkodowując wyjdzie AA.


Może między poszczególnymi liczbami oznaczającymi literę wstawiać przecinki? Np.: "abc" to po zakodowaniu 1,,2,3? I wynik string, który zwracałby gotowy łańcuch kodu?
 
 
     
adiblol 
Administrator forum
FLOSS FTW!


Twoja ulubiona misja: porównywanie formatów audio
Pomógł: 18 razy
Dołączył: 21 Kwi 2008
Posty: 1313
Skąd: pokój odsłuchowy
Wysłany: 03-03-2009, 23:10   

albo wszystkie liczby dwucyfrowe np. litera d to "04"
_________________
1Tbps Project && Telecomix Network

 
 
     
colobotwymiiata 
Zjem cię


Twoja ulubiona misja: Swobodna na Krystalii
Pomógł: 6 razy
Wiek: 20
Dołączył: 02 Lut 2009
Posty: 329
Skąd: Oleśnica
Wysłany: 03-03-2009, 23:25   

myślę, że pomysł adiblola jest lepszy.

[ Dodano: 06-03-2009, 16:06 ]
hmmm....... taka cisza oznacza, że ktoś ma jakiś pomysł, czy że się jeszcze zastanawia czy to wogóle jest możliwe?

PS.:Sorry za te "czy".

[ Dodano: 12-03-2009, 19:28 ]
No dobra, oto moje wypociny:
Kod:
extern void object::Engima()
{

message(szyfr("lol"));

}
string szyfr(string kod)
{
string zwrot,sprawdz,liczby;
zwrot="";
sprawdz=kod;
liczby=zmiana(strleft(sprawdz,1));
sprawdz=tnij(sprawdz);
for(int lol=0;lol<strlen(kod);lol++)
{
zwrot=zwrot+liczby;
liczby=zmiana(strleft(sprawdz,1));
if(strlen(sprawdz)>1)sprawdz=tnij(sprawdz);
}
return zwrot;
}
string tnij(string kod)
{
string zwrot=strright(kod,strlen(kod)-1);
return zwrot;
}
string zmiana(string kod)
{
if(kod=="a")return "01";
if(kod=="b")return "02";
if(kod=="c")return "03";
if(kod=="d")return "04";
if(kod=="e")return "05";
if(kod=="f")return "06";
if(kod=="g")return "07";
if(kod=="h")return "08";
if(kod=="i")return "09";
if(kod=="j")return "10";
if(kod=="k")return "11";
if(kod=="l")return "12";
if(kod=="m")return "13";
if(kod=="n")return "14";
if(kod=="o")return "15";
if(kod=="p")return "16";
if(kod=="q")return "17";
if(kod=="r")return "18";
if(kod=="s")return "19";
if(kod=="t")return "20";
if(kod=="u")return "21";
if(kod=="v")return "22";
if(kod=="w")return "23";
if(kod=="y")return "24";
if(kod=="z")return "25";
}


UWAGA! Pod żadnym pozorem nie koduj wiadomości, które zawierają znaki inne od liter(bez polskich[ą,ć,ę itd...]). W przeciwnym wypadku zawiesi ci się gra albo nawet komputer.
NIE PONOSZĘ ODPOWIEDZIALNOŚCI ZA TO, CO CI TEN PROGRAM ZROBI!

PS.:Zakodować umiem, ale odkodować za cholerę :lol: ..... może ktoś w tym pomóc?

PS.2:I nie pytajcie się mnie jak to działa, bo sam nie wiem...................
 
 
     
Iroks1


Dołączył: 18 Mar 2009
Posty: 7
Wysłany: 19-03-2009, 16:11   

ciekawe ciekawe
ale do tego potrzeba dwóch stringów chyba
jeden na kodowanie a=01 b=02...
drugi do zamiany liczb na litery 01=a 02=b
dokładnie ci nie powiem bo w tym dopiero przypominam sobie funkcje a w Pascalu są już przygotowane do tego tablice tak samo jak w C#
 
     
colobotwymiiata 
Zjem cię


Twoja ulubiona misja: Swobodna na Krystalii
Pomógł: 6 razy
Wiek: 20
Dołączył: 02 Lut 2009
Posty: 329
Skąd: Oleśnica
Wysłany: 19-03-2009, 16:32   

do odkodowywania możnaby drugą funkcję zrobić, i wtedy jedna nazywałaby się "szyfr", a druga "deszyfr" i Engima byłaby kompletna :-)

PS.: Próbowałem zmieniać samą funkcję "zmień", ale grę zawieszało.

[ Dodano: 24-03-2009, 17:40 ]
Hmm... Myślę, że rozwiązałem problem, kompletna Engima jest w dziale "Programy".

PS.: Myślę też, że temat można uznać za zamknięty ;-) .
 
 
     
Wyświetl posty z ostatnich:   

Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group
Polski Portal COLOBOTa © 2008 - 2012