2016-04-20 17 views
1

Nicht sicher, ob ich es richtig mache oder nicht. Aber ich versuche, den Ausgang cat the sideways ran anstelle von the cat ran sideways anzuzeigen.Austauschen von Zeichenfolgen in einem Zeichenfolgenarray

#include <string> 
#include <iostream> 
using namespace std; 

void doSwap(string string1, string string2); 

int main() { 
    string theArray[5] = {"the", "cat", "ran", "sideways"}; 
    int i; 
    for (i = 0; i < 4; i++) { 
     doSwap(theArray[i], theArray[i+1]); 
     cout << theArray[i] << " "; 
    } 
} 

void doSwap (string string1, string string2) { 
    string temp; 
    temp = string1; 
    string1 = string2; 
    string2 = temp; 
} 

Nicht sicher, ob ich es richtig mache oder nicht.

+2

die Argumente in Bezug auf die Funktion übergeben, statt von Wert. –

Antwort

0

Sie sollten die Zeichenfolgen als Referenz übergeben, da Sie sie mutieren. So, wie Ihr Code geschrieben wird, senden Sie temporäre Kopien der Zeichenfolgen, die Sie austauschen möchten, indem Sie die Kopien austauschen, aber nicht im Array austauschen. Aktualisiert Code:

#include <string> 
#include <iostream> 
using namespace std; 

void doSwap(string string1, string string2); 

int main() { 
    string theArray[] = {"the", "cat", "ran", "sideways"}; 
    int i; 
    for (i = 0; i < (sizeof theArray)/sizeof(string); i++) { 
     doSwap(theArray[i], theArray[i+1]); 
     cout << theArray[i] << " "; 
    } 
} 

void doSwap (string &string1, string &string2) { 
    string temp; 
    temp = string1; 
    string1 = string2; 
    string2 = temp; 
} 
0

könnten Sie Ihre Aufgabe erfüllen ganz problemlos die <algorithm> Bibliothek:

int main() 
{ 
    vector<string> vec { "the", "cat", "ran", "sideways" }; 
    swap_ranges(begin(vec), begin(vec)+1, begin(vec)+1); 
    swap_ranges(begin(vec)+2, begin(vec)+3, begin(vec)+3); 
} 

Sie brauchen nicht es selbst schwer zu machen.

0

diesen Code Versuchen Sie, wird diese einfach sein:

#include <string> 
#include <iostream> 
using namespace std; 

void doSwap (int first, int last); 
string theArray[5] = {"the", "cat", "ran", "sideways"}; 
int main() { 
    int i; 
    for (i = 2; i <=4; i += 2) { 
     doSwap((i-2),(i-1)); 
    } 
    for(i=0;i<5;i++) 
     cout << theArray[i] << " "; 
} 

void doSwap (int first, int last){ 
    string tmp; 
    tmp = theArray[first]; 
    theArray[first] = theArray[last]; 
    theArray[last] = tmp; 
} 
Verwandte Themen