String's

01/02/2013 00:56 ExHack#1
hallo
Habe 2 Programme die ich nicht verstehe.
1->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Code:
#include <iostream>
#include <string>
int main()
{
    using namespace std;
    cout << "Enter a word: ";
    string word;
    cin >> word;

    
    char temp;
    int i, j;
    for (j = 0, i = word.size() - 1; j < i; --i, ++j)
    {                       // start block
        temp = word[i];
        word[i] = word[j];
        word[j] = temp;
    }                       // end block
    cout << word << "\nDone\n";
    // cin.get();
    // cin.get();
    return 0; 
}
__________________________
Enter a word: stressed
desserts
Done
Also was passiert hier im Block:
{
temp = word[i]; // 'd' geht in temp oder ?
word[i] = word[j]; //werden hier 's' und 'd' vertauscht ?
word[j] = temp; //werden hier 'd' und 's' wieder vertauscht ?
}
Es dreht sich doch alles im Kreis oder net ? (anscheinend nicht):confused:

2->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

Code:
#include <iostream>
int main()
{
    using namespace std;
    char ch;
    int count = 0;      
    cout << "Enter characters; enter # to quit:\n";
    cin >> ch;          
    while (ch != '#')   
    {
        cout << ch;   
        ++count;        
        cin >> ch;      
    }
    cout << endl << count << " characters read\n";
// get rid of rest of line
     // while (cin.get() != '\n')
        // ;
//cin.get();
    return 0; 
}
____________________________
Enter characters; enter # to quit:
see ken run#really fast
seekenrun
9 characters read

und was passiert hier im Block:
{
cout << ch;
++count;
cin >> ch;
}
Wenn man zum beispiel nur ein Symbol eingibt also:
Enter characters; enter # to quit:
S //dann ist mir alles klar

Aber wenn man eine ganze Zeile eingibt also :
see ken run
Das programm vergleicht doch immer nur 1 Symbol(mit '#') oder ?
Zuerst 's'dann 'e' , wieder 'e' , 'k', 'e' ,'n' usw.
Also->
while ('s' != '#') //das ist TRUE
im block dann ->
verstehe ich nicht was da passiert, da(cmd) wird ja sofort die ganze Zeile angezeigt :see ken run .Und ich kann wieder was eingeben :confused: .
Passierts so schnell dass ichs nicht sehen kann?
wie auch immer,weiter kommt ja "++count" hier bekommt count +1 ok (wir sind immer noch bei 's') so .Aber jetzt kommt ja cin >> ch;.Wie kommt das programm jetzt an 'e'. ?

:handsdown:Ich hoffe ihr konnt mich verstehen und mir helfen :handsdown:

Danke
01/02/2013 01:50 xNopex#2
Quote:
Also was passiert hier im Block:
{
temp = word[i]; // 'd' geht in temp oder ?
word[i] = word[j]; //werden hier 's' und 'd' vertauscht ?
word[j] = temp; //werden hier 'd' und 's' wieder vertauscht ?
}
Es dreht sich doch alles im Kreis oder net ? (anscheinend nicht)
Da dreht sich nichts im Kreis. Zuerst in eine hilfsvariable den alten wert von word[i] kopieren, dann word[i] mit word[j] überschreiben und zum schluss in word[j] den zwischengespeicherten, alten wert von word[i] reinschreiben. Man tauscht also die werte von word[i] und word[j].

Quote:
Passierts so schnell dass ichs nicht sehen kann?
Ja dat geht fix. Wenige Nanosekunden dauert das.

Quote:
Aber jetzt kommt ja cin >> ch;.Wie kommt das programm jetzt an 'e'. ?
Les dir das doch mal durch hier: [Only registered and activated users can see links. Click Here To Register...]
01/03/2013 14:11 .Scy#3
zum 2ten programm:
Code:
 while (ch != '#')   
    {
        cout << ch;   
        ++count;        
        cin >> ch;      
    }
solange keine raute dort ist führt er die schleife aus. er nimmt sich den ersten char und guckt ob dieser char eine raute ist, wenn nicht führt er die schleife aus und setzt so den counter auf 1, dann nimmt er den zweiten char und macht das gleiche wenn es wieder keine raute ist wird der counter auf 2 gesetzt und das solange bis er eine raute findet. danach gibt er den counter aus.