0 / 0 / 0
Регистрация: 25.10.2014
Сообщений: 48
1

Что нужно поменять что бы программа меняла местами слова первое с последним второе с предпоследним и т.д?

09.11.2014, 22:45. Показов 1167. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
program Project1;
const
  D = ['.', ',', ':', ';', '!', '?', '-', ' ', #9, #10, #13];
var
  S, Sw : String;
  i, Len, Cnt, CntMid : Integer;
  CntW, LenW, LenW1, P1, P2 : Integer;
begin
  repeat
    Writeln('Задайте строку:');
    Readln(S);
    Len := Length(S);
    //Подсчёт количества слов.
    Cnt := 0;
    for i := 1 to Len do begin
      //Пропускаем разделители.
      if S[i] in D then Continue;
      //Отслеживаем конец слова и выполняем подсчёт.
      if (i = Len) or (S[i + 1] in D) then Inc(Cnt);
    end;
 
    //Если количество слов чётное, то переставляем слова.
    if Cnt mod 2 = 0 then begin
      CntW := 0;
      LenW := 0;
      LenW1 := 0;
      P1 := 0;
      //Перебор символов строки слева - направо.
      for i := 1 to Len do begin
        //Пропускаем разделители.
        if S[i] in D then Continue;
        //Учитываем очередной знак в длине слова.
        Inc(LenW);
        //Отслеживаем конец слова.
        if (i = Len) or (S[i + 1] in D) then begin
          //Счётчик слов.
          Inc(CntW);
          //Если это чётное слово, то выполняем перестановку слов.
          if CntW mod 2 = 0 then begin
            P2 := i - LenW + 1; //Позиция начала чётного слова.
            Sw := Copy(S, P2, LenW); //Запоминаем чётное слово.
            Delete(S, P2, LenW); //Удаляем чётное слово.
            Insert(Copy(S, P1, LenW1), S, P2); //Вставляем на место чётного нечётное слово.
            Delete(S, P1, LenW1); //Удаляем нечётное слово.
            Insert(Sw, S, P1); //Вставляем на место нечётного чётное слово.
          //Если это нечётное слово, то запоминаем его координаты.
          end else begin
            P1 := i - LenW + 1;
            LenW1 := LenW;
          end;
          //Сброс длины очередного слова.
          LenW := 0;
        end;
      end;
    //Если количество слов нечётное, то удаляем слово в середине.
    end else begin
      //Номер слова, которое находится в середине.
      CntMid := Cnt div 2 + 1;
      //Счётчик слов.
      CntW := 0;
      //Длина очередного слова.
      LenW := 0;
      //Перебор символов строки слева - направо.
      for i := 1 to Len do begin
        //Пропускаем разделители.
        if S[i] in D then Continue;
        //Учитываем очередной знак в длине слова.
        Inc(LenW);
        //Отслеживаем конец слова и выполняем обработку.
        if (i = Len) or (S[i + 1] in D) then begin
          //Номер очередного слова.
          Inc(CntW);
          //Если это слово находится в середине - удаляем его и прерываем цикл.
          if CntW = CntMid then begin
            Delete(S, i - LenW + 1, LenW);
            Break;
          end;
          //Сброс длины очередного слова.
          LenW := 0;
        end;
      end;
    end;
 
    //Ответ.
    Writeln('Количество слов в исходной строке: ', Cnt, '.');
    Writeln('Строка после обработки:');
    Writeln(S);
 
    Writeln('Повторить - Enter. Выход - любой символ + Enter.');
    Readln(S);
  until S <> '';
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.11.2014, 22:45
Ответы с готовыми решениями:

В строке поменять слова первое с последним,второе с предпоследним и т.д.
Как в строке поменять слова первое с последним,второе с предпоследним и тд.?

Поменять слова в сообщении по принципу: первое с последним, второе с предпоследним и т.д.
На уроке преподаватель не объясняет как решать. Задачи берутся из &quot;Основы программирования на языке...

Переставить слова, поменяв местами первое слово с последним, второе с предпоследним
Прошу помощи с задачей. Эмулятор i8086 Задана строка из буквенных символов, разделенных на слова...

Переставить в строке слова, поменяв местами первое слово с последним, второе с предпоследним
По пути обучения встретился с данным заданием, не могу придумать принцип решения, может у кого...

1
1646 / 1075 / 1081
Регистрация: 03.07.2013
Сообщений: 4,507
10.11.2014, 10:14 2
Дубль: В строке поменять слова первое с последним,второе с предпоследним и т.д.
0
10.11.2014, 10:14
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.11.2014, 10:14
Помогаю со студенческими работами здесь

Дана строка. Поменять Первое слово с последним, второе с предпоследним и т.д
Не понимаю как сделать вообше.

Переставить все слова в исходном тексте так, чтобы первое слово стало последним, второе-предпоследним и т.д.
переставить все слова в исходном тексте так, чтобы первое слово стало последним,...

В заданой последовательности чисел поменять местами первое число с последним, другое с предпоследним и т.д
В заданой последовательности чисел поменять местами первое число с последним, другое с...

Переставить первое слово с последним, второе с предпоследним
Ввести текст. Переставить местами слова в каждом предложении (первое с последним, второе с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru