Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.74/35: Рейтинг темы: голосов - 35, средняя оценка - 4.74
0 / 0 / 1
Регистрация: 19.03.2013
Сообщений: 17

Нужно в предложении каждое слово вывести наоборот

19.03.2013, 21:45. Показов 7460. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Т.е. дано, к примеру, предложение (любые символы разделенные пробелами): ab cd ef, программа должна вывести ba dc fe.
Вот я написал код, протестировал, ошибок невыдает, но выводит только первое слово наоборот, а про остальные забывает...

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
...
/*Уже существует строка bup. Здесь кусок программы, который должен был записать слова
 наоборот */
k=0;
for (i=0;i<=j-1;i++) // j - длина строки bup, поэтому j-1, чтобы не выйти за массив
{
   if (bup[i]==' ')
   {for (j=i-1;j>=k;j--)
   cout<<bup[j];
   k=i+1; // k - флаг, до которого будут выводиться символы от следующего пробела
   }
}
...
Вообще, по моей задумке, должно было быть так:
Выполняетя основной цикл, где идет проверка для каждого символа в предложении
{ Если программа находит пробел, то
{
Этот цикл начинает выводить каждый символ начиная с символа ДО пробела, заканчивая символом под индексом k (в первый раз k=0, затем изменяется и принимает значение следующего индекса, где расположен пробел)
}
}
Весь код здесь:
Кликните здесь для просмотра всего текста
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
#include<iostream.h>
#include<conio.h>
#include<stdlib.h>
#include<string.h>
#include<iomanip.h>
#include<stdio.h>
 
void main ()
{
clrscr();
char str [80], bup[80];
int i,j=0,sch[80],l;
cout<<"Vvedite predlogenie\n";
gets(str);
int dl_str=strlen(str);
 
for (i=dl_str-1;i>=0;i--)
{bup[j]=str[i];
j++;}
bup[j]='\0';
j=strlen(bup);
cout<<"J = "<<j<<"\n";
 
cout<<"\nPromegutochnii rezultat:\n";
for (i=0;i<j;i++)
cout<<"Bup["<<i<<"] = "<<bup[i]<<"\n";
cout<<"\nI = "<<i<<"\n";
int k=0;
 
for (i=0;i<=j-1;i++)
{
   if (bup[i]==' ')
   {for (j=i-1;j>=k;j--)
   cout<<bup[j];
   k=i+1;
   }
}
 
getch();
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.03.2013, 21:45
Ответы с готовыми решениями:

Вывести каждое слово в предложении в обратном порядке
программа рабочая: Она переставляет буквы в обратном порядке. Например: привет - тевирп. НО эта программа переставляет одно слово в...

Нужно еще два способа (вывести введенное слово наоборот)
Ребят у меня программа выводит введенное слово наоборот(То есть ввожу привет, а выводит тевирп). Помогите сделать тоже самое только двумя...

Удвоить каждое слово во введённом предложении
Удвоить каждое слово во введённом предложении. На печать вывести введённую строку и результат её обработки.

7
1779 / 757 / 153
Регистрация: 03.06.2009
Сообщений: 5,940
19.03.2013, 23:17
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
#include<iostream.h>
#include<conio.h>
#include<stdlib.h>
#include<string.h>
#include<iomanip.h>
#include<stdio.h>
 
void main ()
{
clrscr();
char str [80];
int i,j,l;
cout<<"Vvedite predlogenie\n";
gets(str);
i=0;
while(str[i]!=0)
{
for(;str[i]==' '&&str[i]!=0;i++) cout << str[i];
j=i;
for(;str[i]!=' '&&str[i]!=0;i++);
for(l=i-1;l>=j;l--) cout << str[l];
 
}
 
getch();
}
1
 Аватар для Kins
60 / 59 / 7
Регистрация: 03.02.2013
Сообщений: 167
19.03.2013, 23:21
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
#include "stdafx.h"
#include <iostream>
#include <clocale>
#include <cstring>
 
using namespace std;
const int MAX=80;
void reversit(char mas[MAX])
    {
        for(int j=0; j<strlen(mas); j++)
        {
            char temp;
            temp=mas[j];
            mas[j]=mas[strlen(mas)-j];
            mas[strlen(mas)-j]=temp;
        }
    }
 
    int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL,"");
    const int max=MAX;
    char str[max];
    cout <<"Введите выражение: ";
    cin.get(str,max);
    reversit(str);
    cout <<"\nВы ввели: " <<str <<endl;
    system("pause");
    return 0;
}
0
1 / 1 / 0
Регистрация: 15.10.2012
Сообщений: 7
20.03.2013, 00:02
в последнем коде Kins предел цикла for надо ставить не strlen(mas), а strlen(mas)/2 чтоб строка реверсной оставалась

10 for(int j=0; j<strlen(mas)/2; j++)
0
 Аватар для Kins
60 / 59 / 7
Регистрация: 03.02.2013
Сообщений: 167
20.03.2013, 00:26
Цитата Сообщение от pdln2012 Посмотреть сообщение
10 for(int j=0; j<strlen(mas)/2; j++)
странно, я на str=4 проверил и 3х символах
0
1 / 1 / 0
Регистрация: 15.10.2012
Сообщений: 7
20.03.2013, 01:06
Цитата Сообщение от Kins Посмотреть сообщение
странно, я на str=4 проверил и 3х символах
ну по логике, если у Вас есть строка длинной в 4 символа (например 1234) и вы примените свой алгоритм с циклом for(i = 0; i<4; i++), то после первой итерации у Вас строка измениться на 4231, после второй 4321, третей 4231, четвертой 1234

C++
1
2
3
4
5
6
7
8
9
10
void reversit(char mas[MAX])
    {
        for(int j=0; j<strlen(mas); j++)
        {
            char temp;
            temp=mas[j];
            mas[j]=mas[strlen(mas)-j];
            mas[strlen(mas)-j]=temp;
        }
    }
в этом случае mas[5]={1,2,3,4}; после вызова функции reversit будет равен 1234
C++
1
2
3
4
5
6
7
8
9
10
 void reversit(char mas[MAX])
    {
        for(int j=0; j<strlen(mas)/2; j++)
        {
            char temp;
            temp=mas[j];
            mas[j]=mas[strlen(mas)-j-1];
            mas[strlen(mas)-j-1]=temp;
        }
    }
а так работает норм вроде...правда код не очень смотриться
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
20.03.2013, 01:47
Какой-то странный у вас С++, да и как оно с поставленной задачей вяжется - не понятно...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <string>
#include <sstream>
#include <algorithm>
#include <iterator>
 
void reverse_out(const std::string & s) {
    std::string t(s);
    std::reverse(t.begin(), t.end());
    std::cout << t << ' ';
}
 
int main() {
    std::string s("any many money more");
    std::cout << s << std::endl;
    std::istringstream ist(s);
    std::for_each(std::istream_iterator<std::string>(ist), std::istream_iterator<std::string>(), reverse_out);
    std::cout << std::endl;
 
    return 0;
}
http://codepad.org/Osxlkqyy
0
2022 / 1621 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
20.03.2013, 02:57
Перевернуть в строке все слова
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.03.2013, 02:57
Помогаю со студенческими работами здесь

Очереди. За один просмотр файла вывести на экран каждое третье слово, а затем каждое четвертое
Помогите студенту сделать задачу на с++, вот условие: Создать файл вещественных чисел за один просмотр файла вывести на экран каждое...

нужно удалить и вывести все символы после *(его не нужно выводить). я смог наоборот вывести всё до него! помоите
#include &quot;stdafx.h&quot; #include &quot;iostream&quot; #include &quot;string&quot; #include &quot;conio.h&quot; using namespace std; int _tmain(int argc, _TCHAR*...

В тексте удалить каждое четное слово, продублировать каждое нечетное слово
Не могу решить данную задачу, много чего перечитал, за помощь буду благодарен В тексте удалить каждое четное слово, продублировать...

В тексте удалить каждое четное слово, продублировать каждое нечетное слово
Не могу решить данную задачу, много чего перечитал, за помощь буду благодарен&quot; &quot;В тексте удалить каждое четное слово,...

В предложении вывести короткое слово
в предложении вывести короткое слово.


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru