Odwracanie tekstu, proble

0

Powie mi ktoś czemu nie chce obrócić mi tekstu ? konkretnie takie polecenie mam http://iv.pl/images/99801821139855022507.png

 #include "stdafx.h"
#include <iostream>
#include <string>
#include <string.h>
using namespace std;



void reverseText(char * text) 
{

	char przedOdwr[100]; int dlugosc = 0;

	for (int i = 0; *text != '\0'; i++) {
		przedOdwr[i] = *text;
		text++;
		dlugosc++;
	}
	int j = 0;
	for (int i = dlugosc - 1; i >= 0; i--) {
		*(text + j) = przedOdwr[i];
		j++;
	}

	for (int i = 0; i <= 10; i++)
		cout << *(text + i);

}
int main()
{
	char text;
	cin >> text;
	void reverseText(char * text);

	system("pause");
		return 0;
}
2
#include <iostream>
#include <string>
using namespace std;

int main() {
	const string text = "Ala ma kota.";
	cout << string(rbegin(text), rend(text)) << endl;
	return 0;
}
0

Można też

#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
 
int main() {
    string text = "Ala ma kota.";
    std::reverse( string.begin(), string.end() );
    cout << text << endl;
    return 0;
}
2
pulson666 napisał(a):

Powie mi ktoś czemu nie chce obrócić mi tekstu ? konkretnie takie polecenie mam http://iv.pl/images/99801821139855022507.png
Bo brakuje ci kompletnych podstaw.
Nawet:

  • funkcji wywołać nie jesteś w stanie;
  • napisu wprowadzić również nie umiesz.
    Weź przeczytaj jakiś kurs, na początek wybierz najkrótszy:
#include <iostream>
#include <algorithm>
#include <cstring>
  
void reverseText(char *text) 
  {
   for(size_t p=0,k=strlen(text);p<--k;++p,--k) swap(text[p],text[k]);
  }
0
pulson666 napisał(a):

Powie mi ktoś czemu nie chce obrócić mi tekstu ?

Otóż do swojej funkcji do obracania podajesz wskaźnik na tekst text, potem w pętli ten wskaźnik zwiększasz text++. Po tej pętli wskaźnik wskazuje na koniec tekstu czyli \0, a nie na oryginalny tekst. Przed następną pętlą musisz ten wskaźnik odtworzyć.

void reverseText(char * text) 
{
    char *kopia = text;
    char przedOdwr[100]; int dlugosc = 0;
 
    for (int i = 0; *text != '\0'; i++) {
        przedOdwr[i] = *text;
        text++;
        dlugosc++;
    }

    int j = 0;
    text = kopia;

    for (int i = dlugosc - 1; i >= 0; i--) {
        *(text + j) = przedOdwr[i];
        j++;
    }
}

http://ideone.com/zsYeqN

1 użytkowników online, w tym zalogowanych: 0, gości: 1