С Новым годом! Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/15: Рейтинг темы: голосов - 15, средняя оценка - 4.73
 Аватар для igor myakota
73 / 74 / 16
Регистрация: 03.05.2012
Сообщений: 1,271

В строке удалить все слова на нечетных порядковых позициях, а слова на четных позициях напечатать перевернутыми

10.03.2014, 23:33. Показов 2983. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
в строке удалить все слова на нечетных порядковых позициях, а слова на четных позициях напечатать перевернутыми
Предложения может быть любое
зделал на С++ а вот в паскале не могу реализовать
C#
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
using System;
using System.Collections.Generic;
using System.Text;
using System.Text.RegularExpressions;
 
namespace ConsoleApplication1
{
    class Program
    {
        static string ChangeStr(string str)
        {
            bool isEven = false; // Флаг для оценки чётное-нечётное. false - нечётное. true - чётное.
            int pos = 0; // Позиция начала слова
            string changedStr = "Упс. Неудачный исход ChangeStr()"; // Возвращаемая строка
 
            char[] tempWord; // Массив символов
            StringBuilder newStr = new StringBuilder(str); // 
            Regex reg = new Regex(@"\w+"); // Регулярное выражение для выборки слова
 
            Match word = reg.Match(str); // Выбираем только слова из строки
            while (word.Success) // Пока получаем слова, обрабатываем их
            {
                if (isEven) // Если слово чётное
                {
                    pos = word.Index; // Запоминаем позицию слова в строке
                    tempWord = word.ToString().ToCharArray(); // Преобразуем его в массив символов
                    
tempWord = word.Value.ToCharArray(); // Преобразуем его в массив символов
 
 
                    // Заменяем слово в строке на новое. Для этого
                    newStr.Remove(pos, tempWord.Length); // Удаляем исходное слово из строки
                    newStr.Insert(pos, tempWord); // Вставляем новое слово
                } // if
                isEven = !isEven; // Инвертируем флаг чётности
                word = word.NextMatch(); // Ищем следующее слово в строке
            } // while
 
            changedStr = newStr.ToString();
            return changedStr; // Покидаем метод с возвратом строки
        } // ChangeStr(string str)
        
        
        static void Main(string[] args)
        {
            // Для ввода строки с клавиатуры эту строку убрать
            string strInput = "Постановка задачи такая: ввести строку символов с клавиатуры. Строка состоит из слов, разделенных пробелами (пробелов может быть несколько) и знаками препинания (, ;: ). В строке может быть несколько предложений, в конце каждого предложения стоит знак препинания (.!?).Необходимо перевернуть каждое четное слово.";
 
            Console.WriteLine("Исходная строка.");
            // Для ввода строки с клавиатуры эту строку убрать
            Console.WriteLine(strInput);
            // Для ввода строки с клавиатуры эту строку раскомментировать
            //strInput = Console.ReadLine();
 
            Console.WriteLine();
            Console.WriteLine("Изменённая строка");
            strInput = ChangeStr(strInput);
            Console.WriteLine(strInput);
        } // Main()
    }
}
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.03.2014, 23:33
Ответы с готовыми решениями:

Типизированные файлы: Найти максимум среди компонент, расположенных на четных позициях файла и минимум среди компонент на нечётных позициях
Задан числовой файл . Найти максимум среди компонент, расположенных на четных позициях файла и...

Отсортировать элементы на четных позициях по возрастанию, на нечетных позициях по убыванию
Помогите пожалуйста, срочна нужно помощь. Дан массив размера N. Отсортировать элементы, стоящие на...

Слова на четных позициях напечатать заглавными символами, а нечетные - в обратном порядке
Запросить с клавиатуры текст(строку символов). Изменить текст таким образом, чтобы слова, стоящие...

5
Модератор
10381 / 5668 / 3399
Регистрация: 17.08.2012
Сообщений: 17,312
11.03.2014, 03:49
Словом считаю множество символов, оканчивающихся пробелом. Моё решение, без проверок и украшений.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
program igor;
var s, w: string;
    i: integer;
begin
  writeln('Enter string:');
  readln(s);
  s := s + ' ';
  writeln('Result:');
  while length(s) > 0 do
    begin
      delete(s, 1, pos(' ', s));
      if length(s) > 0
        then begin
          w := copy(s, 1, pos(' ', s) - 1);
          delete(s, 1, pos(' ', s));
          for i := length(w) downto 1 do write(w[i]);
          write(' ');
        end
    end;
  readln
end.
1
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33369 / 21495 / 8234
Регистрация: 22.10.2011
Сообщений: 36,893
Записей в блоге: 12
11.03.2014, 04:33
Лучший ответ Сообщение было отмечено volvo как решение

Решение

Цитата Сообщение от igor myakota Посмотреть сообщение
зделал на С++
Не на С++, а на C#, это разные вещи... На Паскале (.NET-овском, разумеется) то же самое делается еще проще:
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
uses
  System.Collections.Generic, 
  System.Text.RegularExpressions;
 
function ChangeStr(str: string): string;
begin
  var isEven: boolean := false;
  result := str;
  var offset: Integer :=  0;
  
  var reg: System.Text.RegularExpressions.Regex := new Regex('\w+');
  var MyWord: Match := reg.Match(str);
  while MyWord.Success do
  begin
    result := result.Remove(MyWord.Index - Offset, MyWord.Length);
    if isEven then 
      result := result.Insert(MyWord.Index - Offset, ReverseString(MyWord.Value))
    else 
      inc(Offset, MyWord.Length);
    
    isEven := not isEven;
    MyWord := MyWord.NextMatch;
  end;
end;
 
begin
  var strInput: string := 
    'Постановка задачи такая: ввести строку символов с клавиатуры. ' +
    'Строка состоит из слов, разделенных пробелами (пробелов может ' +
    'быть несколько) и знаками препинания (, ;: ). В строке может ' +
    'быть несколько предложений, в конце каждого предложения стоит ' +
    'знак препинания (.!?).Необходимо перевернуть каждое четное слово.';
  
  writeln('Исходная строка:');
  writeln(strInput);
  
  writeln('Изменённая строка');
  writeln(ChangeStr(strInput));
end.
1
0 / 0 / 0
Регистрация: 02.03.2020
Сообщений: 30
08.12.2020, 21:37
Cyborg Drone, Можете пожалуйста написать эту же программу только на С (Си)
Заранее огроомное спасибо
0
Модератор
10381 / 5668 / 3399
Регистрация: 17.08.2012
Сообщений: 17,312
08.12.2020, 22:31
Вы уверены, что Вам нужна программа именно на этом архаичном C, а не на С++ или не на C#? Я не люблю делать зряшную работу.
0
0 / 0 / 0
Регистрация: 02.03.2020
Сообщений: 30
09.12.2020, 08:44
Cyborg Drone, Да впринципе без разницы
Сделайте если можете на С++
Я буду очень благодарен
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.12.2020, 08:44
Помогаю со студенческими работами здесь

Удалить все слова с нечетными порядковыми номерами и перевернуть все слова с четными номерами.
Помогите пожалуйста! Дана строка символов. Будем рассматривать слова, образованные сим-волами,...

Удалить из строки все слова, имеющие нечетные порядковые номера и четную длину
2. Вводится строка. Удалить из строки все слова, имеющие нечетные порядковые номера и четную длину...

Массив: Заменить все четные элементы заданного массива их «перевернутыми» индексами
Дано двумерный массив целых чисел. Заменить все четные элементы заданного массива их...

Массив. Заменить все четные элементы заданного массива их «перевернутыми» индексами
Дано двумерный массив целых чисел. Заменить все четные элементы заданного массива их...

Строки. В каждом четном по порядку слове удалить все нечетные буквы, а в каждом нечетном слове удалить все четные буквы
Дана строка символов, состоящая из русских слов, разделенных пробелами. В каждом четном по порядку...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru