Προς το περιεχόμενο

Συνάρτηση Αντιστροφής C++


kid4computer

Προτεινόμενες αναρτήσεις

Δημοσ.

Ψάχνω να βρω αν υπάρχει συνάρτηση αντιστροφής στην c++.

 

Παράδειγμα: Το char T μπορεί να πάρει τις τιμές R ή P. Αν πάρει την R να αντιστρέφεται σε P σε ένα βρόνχο σε κάθε loop..:-)

 

Αν ξέρετε παρακαλώ βοηθήστε!!

Ευχαριστώ εκ των προτέρων!! :-)

Δημοσ.

Αντί για char μιας και δουλεύεις με την C++ μπορείς να δοκιμάσεις το αντικείμενο string το οποίο περνάς στην STL ρουτίνα reverse (algorithm header) αντιστρέφοντας το.

 

π.χ.:

 

>
// Reverse String in C++

#include <iostream>
#include <algorithm>
#include <string>

int main(int argc, char* argv[])
{
std::string strTest = "PR";

// Repeat strTest reverse 5 times ...
for(int nCount = 0; nCount < 5; nCount++)
 {
	// Do the actual reverse with std::reverse
	std::reverse(strTest.begin(), strTest.end());
	// Print result
	std::cout << nCount << ") " << strTest << std::endl;
 }

// End ...
std::cout << "Press Enter to exit..";
std::cin.get();

return 0;
}

 

Αποτέλεσμα:

 

>
0) RP
1) PR
2) RP
3) PR
4) RP

 

Τώρα αν απλά θέλεις την μια το char = 'P' και την άλλη με 'R' σε ένα loop δες κάτι σε:

 

>
char T = 'P';

for(int nCount = 0; nCount < 5; nCount++)
 {
       // If T == P then change to R else (if not P) change to P
	T = (T == 'P') ? 'R': 'P';
	// Print result
	std::cout << nCount << ")" << T << std::endl;
 }

 

Αποτέλεσμα:

 

>
0)R
1)P
2)R
3)P
4)R

Δημοσ.

Α οκ άκυρο..κάνουν ένα διαγωνησμό και νόμιζα για εκεί το ήθελες γιατί λίγο που το είδα νομίζω κάτι τέτοιο ζηταν..

>www.pdp.gr

Δημοσ.

Χμ.. θα μπορούσε να έχει σχέση, βέβαια αυτή είναι η πρώτη φάση του διαγωνισμού, οπότε αν κάποιος δεν μπορεί να λύσει αυτό το (γελοίο) ζήτημα, δεν έχει καμία πιθανότητα (ούτε στα πιο τρελά όνειρα του) να επιλύσει τα ζητήματα που ακολουθούν και παραδοσιακά είναι αυξημένης δυσκολίας.

 

Υ.Γ.

1. Είχα την ευκαιρία πριν πολλά, πολλά χρόνια να συμμετάσχω, τον καιρό εκείνο γράφαμε σε χαρτί δίχως computer - compiler (!) κτλ. την λύση - source & αλγόριθμο (έχασα μια ώρα από την ζωή μου και αποχώρησα -- δεν είμαι ο τύπος που θα γράψει κώδικα σε χαρτί) :D

 

2. Δέχομαι ότι είσαι ειλικρινής και απλά έτυχε να ζητάς κάτι παρόμοιο, αλλά επ' ευκαιρίας καλό είναι να εξηγώ κάποια πράγματα καθώς πριν αρκετό καιρό είχα δημοσιεύσει εν αγνοία μου λύση σε ένα θέμα εισαγωγικών εξετάσεων πληροφορικής (που κάποιος είχε το θράσος να αναρτήσει εδώ για βοήθεια) όπως έμαθα αργότερα (πράγμα αντιδεοντολογικό). Αυτά.

Δημοσ.

Για γενικά κάποια εναλλαγή δυο χαρακτήρων, ακολουθούμε τον τρόπο που έδωσε ο DirectX. Για τη συγκεκριμένη περίπτωση όμως (αλλαγή του 'R' σε 'P' και αντίστροφα) έχουμε έναν πολύ πιο γρήγορο τρόπο.

 

Το 'P' είναι το 80 στον κώδικα ascii και το 'R' το 82 και σε δυαδική μορφή 0101 0000 και 0101 0010 αντίστοιχα. Στο xor με το δύο έχουμε για την περίπτωση του 'P'

>
'P'  = 0101 0000  
      0000 0010 XOR
--------------------------
      0101 0010 = 'R'

και για το 'R'

 

>
'R' = 0101 0010
     0000 0010 XOR
-------------------------
     0101 0000 = 'P'

άρα στη C :

>
T ^= 2;

Δημοσ.
Απ'ότι είπε το παιδί όμως δεν έχει σχέση μ'αυτό...απλώς το είχα δεί φίλε μου το πρόβλημα και υπέθεσα.. :)

 

Μην νιώθεις ενοχές :-D

 

@Directx: Φίλε το πρόβλημα που είδα και εγώ είναι πανεύκολο!! :-) Λοιπόν εγώ κάνω πρόγραμμα καμίας σχέσης με αυτό!!! Για να το λύσεις αυτό σκέψου πια μεταβήτή παίρνει μόνο 2 τιμές!! :-). Πιστεύω πως θα ήταν ο ποιός απλώς τρόπος!!!

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...