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

Обратить строку так, чтобы первое слово стало последним, второе – предпоследним и т.д.

24.10.2014, 00:13. Показов 1077. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Обратить стоку так, чтобы первое слово стало последним, второе – предпоследним и т.д.

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
#include "stdio.h"
#include "conio.h"
#include "locale"
 
void Invert(char *str)
{
    int dl = strlen(str);
    for (int i = 0; i < (dl / 2); i++)
    {
        char a = str[i];
        str[i] = str[dl - 1 - i];
        str[dl - 1 - i] = a;
    }
}
 
void Invert2(char *str, int a, int b)
{
    
    for (int i = a; i < (b / 2); i++)
    {
        char c = str[i];
        str[i] = str[b - 1 - i];
        str[b - 1 - i] = c;
    }
}
 
void inv(char *str)
{
    int dl = strlen(str);
    int n = 0, k;
    for (int j = 0; j < 1000; j++)
    {
        if (str[j] == ' ')
        {
            Invert2(str, n, j);
            n = j+1;
        }
    }
    Invert(str);
    printf("%s", str);
}
int main()
{
    setlocale(LC_ALL, ".1251");
    char *str = new char[1000];
    fflush(stdin);
    fgets(str, 1000, stdin);
    inv(str);
    _getch();
    return 0;
}
Помогите)
срабатывает только для 1-го слова(
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.10.2014, 00:13
Ответы с готовыми решениями:

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

Сформировать строку, «склеив» первое слово с последним, второе с предпоследним и т.д.
Нужно ввести строки с помощью функций gets или fgets, разбить строку на слова и выбрать нужные...

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

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

1
Вездепух
Эксперт CЭксперт С++
11192 / 6134 / 1679
Регистрация: 18.10.2014
Сообщений: 15,437
24.10.2014, 03:43 2
1. Откуда в программе на языке С взялся 'new char[1000]' или '#include "locale"'??? Исправить 'new' на 'malloc'. Исправить 'locale' на 'locale.h'. Для включения стандартных заголовков используются '<>', а не двойные кавычки. Для 'strlen' надо сделать '#include <string.h>"

2. Основная ошибка: в функции 'Invert2' написана белиберда с индексацией. Эту функцию можно написать по-разному. Вот мой вариант

C++
1
2
3
4
5
6
7
8
9
void Invert2(char *str, int a, int b)
{
    for (int i = 0; i < ((b - a) / 2); i++)
    {
        char c = str[a + i];
        str[a + i] = str[b - 1 - i];
        str[b - 1 - i] = c;
    }
}
3. Еще одна серьезная ошибка: зачем в функции 'inv' вычисляется 'int dl = strlen(str)', если 'dl' больше не используется, а цикл марширует аж до 1000? Цикл в 'inv' должен идти до 'dl', не до 1000. Исправить немедленно.

4. Зачем нужна функция 'Invert', если функциональность 'Invert2' ее полностью покрывает (при известной длине строки)? Немедленно выкинуть нафиг функцию 'Invert' и забыть о ней навсегда. Вместо нее в конце 'inv' вызывать 'Invert2(str, 0, dl);'.

5. Переменная 'k' в 'inv' не используется.

6. Программа рассчитана на то, что слова будут разделены ровно одним пробелом. Это гарантируется? Если это не гарантируется, то вам придется еще поработать над этой деталью.

Вот что получилось: http://ideone.com/ujUDl9
0
24.10.2014, 03:43
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.10.2014, 03:43
Помогаю со студенческими работами здесь

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

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

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

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


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

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

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