Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 5.00
Enpsydi
0 / 0 / 0
Регистрация: 19.03.2013
Сообщений: 17
#1

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

19.03.2013, 21:45. Просмотров 1434. Ответов 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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.03.2013, 21:45
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Нужно в предложении каждое слово вывести наоборот (C++):

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

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

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

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

нужно удалить и вывести все символы после *(его не нужно выводить). я смог наоборот вывести всё до него! помоите - C++
#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*...

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
alexcoder
1464 / 678 / 89
Регистрация: 03.06.2009
Сообщений: 3,565
Завершенные тесты: 1
19.03.2013, 23:17 #2
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
59 / 58 / 6
Регистрация: 03.02.2013
Сообщений: 167
19.03.2013, 23:21 #3
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
pdln2012
1 / 1 / 0
Регистрация: 15.10.2012
Сообщений: 7
20.03.2013, 00:02 #4
в последнем коде Kins предел цикла for надо ставить не strlen(mas), а strlen(mas)/2 чтоб строка реверсной оставалась

10 for(int j=0; j<strlen(mas)/2; j++)
0
Kins
59 / 58 / 6
Регистрация: 03.02.2013
Сообщений: 167
20.03.2013, 00:26 #5
Цитата Сообщение от pdln2012 Посмотреть сообщение
10 for(int j=0; j<strlen(mas)/2; j++)
странно, я на str=4 проверил и 3х символах
0
pdln2012
1 / 1 / 0
Регистрация: 15.10.2012
Сообщений: 7
20.03.2013, 01:06 #6
Цитата Сообщение от 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
easybudda
Модератор
Эксперт CЭксперт С++
9624 / 5572 / 946
Регистрация: 25.07.2009
Сообщений: 10,701
20.03.2013, 01:47 #7
Какой-то странный у вас С++, да и как оно с поставленной задачей вяжется - не понятно...
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
rangerx
1933 / 1542 / 141
Регистрация: 31.05.2009
Сообщений: 2,912
20.03.2013, 02:57 #8
Перевернуть в строке все слова
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.03.2013, 02:57
Привет! Вот еще темы с ответами:

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

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

Вывести каждое слово из файла на экран - C++
Имеется файл со следующим содержимым: 1 Иван Петров 2 Оля Семенова 3 Илья Петушко 4 Наталья Близер ........ Мне нужно...

Вывести каждое слово из файла в отдельную строку - C++
Привет всем. Искал это двое суток,нигде не могу найти. Как открыть файл и читать его через пробел и записывать в переменные. типа...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
20.03.2013, 02:57
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru