Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: Leetspeak vinkkiä

Azure [15.01.2006 00:43:57]

#

Ajattelin aloittaa suunnittelemaan, sellasta ohjelmaa joka muuttaa näyttöön syötetyn tekstin tai sanan numeroiksi, leetspeak;in mukaan. Monet varmaan ymmmärtää mikä on leetspeak, eli esim : l = 1, i = 1, A = 4, jne...

Eli koska opiskelen vasta C++ ohjelmointia, en halua tässä aiheessa heti saada valmiita koodeja ohjelmaan, vaan haluan vinkkiä siitä mistä lähden tätä tekemään ja jos tulee ongelmia projektissani niin tätä kautta ajattelin kysyä. Eli antakaa nyt aluksi pieniä vinkkejä mistä kannattaa aloittaa ja miten menetellä eteenpäin ohjelman suunnittelussa.

Vaikeinta on tietenkin, tuo yhdelle numerolle annettu kaksi merkkiä arvoksi ja se että ohjelma arpoisi ne, mitä käytetään.

Tässä vielä jänskä linkki:
http://www.google.com/intl/xx-hacker/

Jaska [15.01.2006 00:55:40]

#

Koitappa ensiksi saada ohjelma tunnistamaan syöte ja poimimaan siitä kirjaimet.

Tuohon kahden numeron ongelmaan sen verran, että sinun kannattaa arpoa satunnaislukuväliltä 0-1. Nyt eri kirjainten prosenttiosuudet voidaan samaistaa suhteen reaalilukuvälin 0-1 osajoukon pituus / koko välin pituus kanssa.

Enpä anna enempää tässä vaiheessa vinkkejä, kun kerran koodia et halua.

wumpus [15.01.2006 01:05:09]

#

jotain string kirjastoja varmaan tarvit tekstin käsittelyyn (cstring = string.h), mutta periaatteessa rungoksi vaan silmukka joka käy annetun tekstin kirjain kerrallaan läpi.

toivottavasti ei liikaa "koodia", mutta selventänee sitä mitä Jaska selitti...

switch (kirjain) {
case 'i':
switch (rand() % 2 + 1) {
          case 1: //muuta 1:ksi
          case 2: //muuta |:ksi
          }
case 'a': ...

CyberianRat [16.01.2006 00:54:05]

#

C++:ssa on ytimekäs tapa koodata silloin kun halutaan muuntaa merkkijonon merkkejä, vektorin alkioita tms. yksi kerrallaan, nimittäin std::transform-funktio, joka löytyy <algorithm>-headerista.

string teksti="MOI";
transform(teksti.begin(),teksti.end(),teksti.begin(),leet);
cout << teksti;

transform lukee merkkejä teksti:n alusta teksti:n loppuun, muuntaa merkit leet-funktiolla ja kirjoittaa tulokset teksti.begin():istä alkaen eli vanhan tekstin päälle.

leet-funktio hoitaa muunnostyön:

char leet(char normal)
{
   //voi käyttää myös switchiä tai taulukkoa,
  //nyt tehdään if:illä:
  if (normal == 'O') return '0';
  else if (normal == 'I') return '1';

   //...lisää vaihtoehtoja + arvonnat
  //   jaskan ja wumpuksen ohjeilla.

  else return normal;
}

Azure [21.01.2006 00:24:13]

#

Miten se Tyyppimuunnos meni C++:ssa?

phadej [21.01.2006 00:35:03]

#

Mitä sinä haet, ei c++ pitäisi tarvita suoraa tyyppimuunnosta mihinkään. Kun voi mm. overloadata funktioita kummiksin.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta