Przestawianie znaków w wyrazie - sugestie.
Ostatnio zmodyfikowano 2011-11-18 14:19
Axx Temat założony przez niniejszego użytkownika |
Przestawianie znaków w wyrazie - sugestie. » 2011-11-17 17:30:56 Witam. Staram się napisać program który przemienia (miesza) znaki w zdaniu zamieniając kolejność wszystkich liter prócz pierwszej i ostatniej. Przykład: Teraz napiszę przykład -> Traez npzsaię pykałrzd Problem w tym iż Moja wiedza na temat programowania jest uboga więc postępowania także jest elementarny...
Obecnie staram się podzielić zdanie na wyrazy (wyszukując spację) a następnie utworzyć 2 wymiarową tablicę w której 1 to numer wyrazu a 2 to numer znaku w wyrazie. Przy pomocy srand pomieszałbym bez powtórzeń liczby z tablicy (nie jestem pewien jak to wykonać) i połączył efekt.
Problem w tym iż nie mam jeszcze realnej wiedzy jakich funkcji lub w jaki sposób ich użyć tak więc w tym miejscu proszę Was o pomoc, sugestie ,porady ,wskazówki będą mile widziane.
Może znacie prostsze sposoby uzyskania potrzebnego Mi efektu? Jeśli tak to proszę o pomoc. Za każdą próbę serdecznie podziękuję :)
|
|
pekfos |
» 2011-11-17 17:33:43 random_shuffle na stringu od .begin()+1 do .end()-1 dla .size()>3; #include <algorithm> #include <string> #include <iostream> #include <ctime> #include <cstdlib>
using namespace std;
struct _Initializer { _Initializer() { srand( time( nullptr ) ); } };
ptrdiff_t random( ptrdiff_t t ) { static _Initializer init; return rand() % t; }
void fun_text( string & str ) { if( str.size() < 4 ) return; random_shuffle( str.begin() + 1, str.end() - 1, random ); } fluorometylofosfonian został przekształcony na fofnoiutomoesofllyarn. Przeczytałbyś mimo to? |
|
Axx Temat założony przez niniejszego użytkownika |
» 2011-11-17 18:30:03 Dziękuję.
Postaram się wykorzystać podane przez Ciebie sposoby w Moim kodzie. |
|
pekfos |
» 2011-11-17 18:40:22 .., to jeden sposób :D a dzielenie ciągu na wyrazy najłatwiej przez istrinstream. |
|
Axx Temat założony przez niniejszego użytkownika |
» 2011-11-17 20:15:44 racja...wygłup i pośpiech z mojej strony. obecnie jednak kod nadaje się już do użytku dla pojedyńczych słowek (dla Mnie to już duży postęp). #include <algorithm> #include <string> #include <iostream> #include <ctime> #include <cstdlib>
using namespace std;
void funtext( string & str ) { if( str.size() < 4 ) return; random_shuffle( str.begin() + 1, str.end() - 1 ); }
int main() { FILE * pFile; srand( time( NULL ) ); string str; getline( cin, str ); funtext( str ); cout << str; pFile = fopen( "tekst.txt", "a+" ); fputs( str.c_str(), pFile ); fclose( pFile ); return 0; } istringstream z tego co czytam zamienia string na int lecz nie wiem na jakiej zasadzie miałoby to dzielić ciąg na wyrazy... |
|
pekfos |
» 2011-11-17 20:20:42 1. nie używaj cstdio 2. nie string na int tylko string na wszystko inne. w tym na mniejsze stringi. funkcja getline z delim = ' '. |
|
Axx Temat założony przez niniejszego użytkownika |
» 2011-11-17 22:02:00 Niestety nie wiem jak zastosować delim w getline. Zastanawiałem się nad wrzuceniem tego w pętlę lecz nie wiem jak zapisać warunek. |
|
pekfos |
» 2011-11-18 14:19:36 delim to nazwa ostatniego argumentu funkcji getline z nagłówka string. Czytaj dokumentację funkcji które podaje. tam znajdziesz wszystko. |
|
« 1 » |