Gentoo Archives: gentoo-user-de

From: Daniel Schneider <BurnOver@×××.de>
To: gentoo-user-de@l.g.o
Subject: Re: [gentoo-user-de] pam zickt rum, kein login mehr möglich
Date: Tue, 21 Mar 2006 16:59:37
Message-Id: 200603211757.54533.BurnOver@gmx.de
In Reply to: Re: [gentoo-user-de] pam zickt rum, kein login mehr möglich by Karsten Langeloh
1 On Tuesday 21 March 2006 17:38, Karsten Langeloh wrote:
2
3 > > Hallo,Welt!
4 > > H,leoWatll!
5 >
6 > wobei sich das durch die Implementation der Beruecksichtigung der
7 > Sonderzeichen beheben laesst, und ausserdem macht man nach dem
8 > Komma ein Leerzeichen :P
9 ja normal schon aber da es ja nachher fuer nen chat gebraucht wird und man da
10 schnell tippt kann man sowas schon einmal vergessen
11
12 und bei perl geht es ja :)
13
14 nur leider kann ich kein perl das ist ne sprache die ich wohl noch lernen muss
15
16 aber ich poste jetzt auch mal meine loesung :)
17
18 ist sehr chaotisch da ich erst seit gestern richtig c++ an der fh hab :)
19
20 und vorher nur c gemacht und etwas c++
21
22 mfg
23 daniel
24
25 codeteile:
26
27 class MixWords
28 {
29 private:
30 string msg_;
31 unsigned short int max_;
32 public:
33 MixWords(string str, int max);
34 void setMsg(string str, int max);
35 void setMsg(string str);
36 void printMixedStr(void);
37 string mixing(string word);
38 };
39
40 string MixWords::mixing(string word)
41 {
42 if(word.length()<=3){
43 // Keine Aenderungn moeglich
44 return word;
45 }
46
47 string mixed;
48 int diff(word.length()-2); // anzahl zeichen die gemixt werden muessen
49 mixed=word[0]; // erstes Zeichen bleibt immer
50 while(diff>2){
51 int cur(rand()%diff--); // waehle zufaellig ein Zeichenindex
52 mixed+=word[++cur]; // Zeichen aus word an erste stelle von mixed
53 schreiben
54 // so wird die reihenfolge geaendert
55 word.erase(cur,1); // loesche das eben geholte zeichen
56 }
57 // die letzten 2 zeichen noch drehen
58 mixed+=word[word.length()-2];
59 mixed+=word[word.length()-3];
60
61 mixed+=word[word.length()-1]; // das letzte zeichen nicht vergessen
62
63 return mixed;
64 }
65
66 void MixWords::printMixedStr(void)
67 {
68 if(msg_.length()<=3){
69 // Keine Aenderung moeglich
70 // Text ausgeben
71 cout << msg_ << endl;
72 return;
73 }
74
75 do{
76 // Wort holen
77 char *word=new char[msg_.length()]; // auf nummer sicher gehen
78 char typ; // <TAB>, <SPACE>
79 sscanf(msg_.c_str(),"%s%c",word,&typ);
80 // Pruefen ob letztes zeichen auch wirklich buchstabe ist a-z/A-Z
81 string tmp(""); // fuer ! , . ...
82 string curWord(word); // enthaelt auch ! , ...
83 while((!( (curWord[curWord.length()-1]>='a' &&
84 curWord[curWord.length()-1]<='z') ||
85 (curWord[curWord.length()-1]>='A' &&
86 curWord[curWord.length()-1]<='Z') ) ) &&
87 !curWord.empty()){
88 tmp+=curWord[curWord.length()-1];
89 curWord.erase(curWord.length()-1,1);
90 }
91 // Wort mixen :)
92 if(curWord.length()==msg_.length()){
93 typ='\0';
94 }
95 curWord = mixing(curWord);
96 // Wort ausgeben
97 cout << curWord // gemixte Wort
98 << tmp // ! . ...
99 << typ; // Space oder Tab
100 // Wort loeschen
101 msg_.erase(0, curWord.length() + tmp.length() +1 ); // geht fuer mehrere
102 woerter
103 } while(!msg_.empty());
104
105 cout << endl;
106 }
107
108 --
109 gentoo-user-de@g.o mailing list