Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Przestawianie znaków w wyrazie - sugestie.

Ostatnio zmodyfikowano 2011-11-18 14:19
Autor Wiadomość
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ę :)
P-44224
pekfos
» 2011-11-17 17:33:43
random_shuffle na stringu od .begin()+1 do .end()-1 dla .size()>3;

C/C++
#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?
P-44225
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.
P-44231
pekfos
» 2011-11-17 18:40:22
.., to jeden sposób :D a dzielenie ciągu na wyrazy najłatwiej przez istrinstream.
P-44234
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).

C/C++
#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...
P-44239
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 = ' '.
P-44240
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.
P-44244
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.
P-44271
« 1 »
  Strona 1 z 1