Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define _CRT_SECURE_NO_WARNINGS
- #include <iostream>
- #include <string>
- using namespace std;
- void reverser(char *s, int l, int r) {
- int j = 0;
- for (int i = l; i <= (l + r) / 2; i++) {
- swap(s[i], s[r - j]);
- j++;
- }
- }
- void swapper(char *s) {
- int n = 0;
- int i = 0;
- int l, l1, l2;
- int r, r1, r2;
- int length_max = -1;
- int length_min = 999999;
- while (s[i]) {
- while (s[i] == ' ' || s[i] == '.' || s[i] == ',') i++;
- l = i;
- while (s[i] && s[i] != ' ' && s[i] != '.' && s[i] != ',')i++;
- r = i - 1;
- n++;
- if (r-l>length_max) {
- length_max = r - l;
- r1 = r;
- l1 = l;
- }
- if (r - l < length_min) {
- r2 = r;
- l2 = l;
- length_min = r - l;
- }
- }
- if (l2 < l1) {
- swap(l1, l2);
- swap(r1, r2);
- }
- reverser(s, l1, r2);
- r1 = l1;
- while (s[r1] && s[r1] != ' '&& s[r1] != '.' && s[r1] != ',') r1++;
- r1--;
- reverser(s, l1, r1);
- l2 = r2;
- while (s[l2] && s[l2] != ' '&& s[l2] != '.' && s[l2] != ',') l2--;
- l2++;
- reverser(s, l2, r2);
- reverser(s, r1 + 1, l2 - 1);
- }
- int main()
- {
- setlocale(LC_ALL, "Russian");
- cout << "Введите строку" << endl;
- char *s = (char*)malloc(256 * sizeof(char));
- gets_s(s, 256);
- swapper(s);
- printf("%s", s);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement