Odwrotna kolejność liter w zdaniu

0

Witam, muszę zrobić program taki jak w temacie, ale pierwsza i ostatnia litera zostaje na miejscu, np. "Program do zrobienia." na "Pargorm do zineibora.". Zrobiłem to w Visual Studio i wszystko jest tam dobrze. Problem jest taki, że muszę wkleić kod na stronę uczelni i ona mi go nie przyjmuje. Po wklejeniu tam kodu, jest pokazany przykład i błędy w nim. Na podstawie powyższego przykładu jako błąd pokazuje mi: "Pargorm do zineibora. zineibora. zineibora. zineibora.[...]", kiedy powinno być tylko "Pargorm do zineibora.".
Oto mój kod:

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

int main() 
{
	string wyraz;
	char c;
		for (int i = 0; i < 50; i++)
		{
			cin >> wyraz;
			int x = wyraz.length();
			if (wyraz[x - 1] == '.' || wyraz[x - 1] == ',')
			{
				cout << wyraz[0];
				for (int i = x - 3; i >= 1; i--)
					cout << wyraz[i];
				cout << wyraz[x - 2] << wyraz[x - 1] << ' ';
			}
			else
			{
				if (x > 1)
				{
					cout << wyraz[0];
					for (int i = x - 2; i >= 1; i--)
						cout << wyraz[i];
					cout << wyraz[x - 1] << ' ';
				}
				else cout << wyraz[0] << ' ';
			}
			if ((c = getchar()) == '\n') break;
		}
	return 0;
}

Dodałem coś takiego pod koniec, aby strona mi to przyjęła i działa(manipulation. i Kota to ostatnie słowa ze zdań na stronie):

if (wyraz == "manipulation." || wyraz == "Kota") break;

Chciałbym jednak wysłać kod bez tej linijki, ale nic mi nie wychodzi. Czy byłby ktoś w stanie pomóc?

0

Twój przykład rozmija się z zadaniem z tytułu.
Zdanie:
Tak działa Wolny Rynek
Odwrotna kolejność:
kenyR ynlow ałaizd kaT
Odwrotna kolejność, graniczne litery bez zmian:
TenyR ynlow ałaizd kak
To co opisujesz wygląda jak zamiana kolejności liter w słowach. A to można osiągnąć bardzo prosto za pomocą std::reverse

0
kq napisał(a):

Twój przykład rozmija się z zadaniem z tytułu.
Zdanie:
Tak działa Wolny Rynek
Odwrotna kolejność:
kenyR ynlow ałaizd kaT
Odwrotna kolejność, graniczne litery bez zmian:
TenyR ynlow ałaizd kak
To co opisujesz wygląda jak zamiana kolejności liter w słowach. A to można osiągnąć bardzo prosto za pomocą std::reverse

Ale czy to mi pomoże? Bo ja chciałbym tylko, aby strona nie wypisywała wielokrotnie ostatniego słowa

0

Przejechałeś to debugerem?

2

Użyj reverse,
Wymień pierwszą literę z ostatnią.

string s="Pargorm";
reverse(begin(s),end(s));
swap(s.front(),s.back());
cout<<s<<endl;
0
_13th_Dragon napisał(a):

Użyj reverse,
Wymień pierwszą literę z ostatnią.

string s="Pargorm";
reverse(begin(s),end(s));
swap(s.front(),s.back());
cout<<s<<endl;

Jak za pomocą reverse mogę z "Komputer." zrobić "Ketupmor." zamiast "Kretupmo."? Jeśli to jakieś proste rzeczy i nie trzeba dużo, żeby to osiągnąć, to przepraszam, ale jestem nowy w programowaniu i ciaglę się uczę.

0

Za co OP dostał bana?

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