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

Реверсировать каждое слово строки - C++

Восстановить пароль Регистрация
 
Максим631995
0 / 0 / 0
Регистрация: 03.11.2013
Сообщений: 13
24.05.2014, 19:35     Реверсировать каждое слово строки #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
52
53
54
/ 5 задание.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <iostream>
#include "math_lib.h"
#include <string.h>
#include <conio.h>
 
using namespace std;
//исх: текст записан в файл
//рез: реверсировано каждое слово текста
int _tmain(int argc, _TCHAR* argv[])
{
    int i=0;
    int n=100;
    char *x = new char [n];
    char *y = new char [n];
 
    FILE *f = fopen("1.txt", "rt");
    FILE *k = fopen("2.txt", "w");
    if (f==0){
        perror("Ошибка!");
        exit(1);
    }
    
    while(fscanf(f,"%c", &x[i++])!= EOF); // считывание в файл
    n=i-1;
    reverse(x, y, n); // реверс текста
        
    for (int j=0; j<n; j++){
        fprintf(k,"%c", y[j]);          
    }
 
    _getch();
    fclose(f);
    fclose(k);
    delete []x;
    delete []y;
    return 0;
}
 
//math_lib.h
void reverse(char x[], char y[], const int n);
 
//math_lib.cpp
#include "stdafx.h"
void reverse(char x[], char y[], const int n){
    int a=0;
    for (int i=n-1; i>=0; i--){ //записываем в массив y, в обратном порядке массив х
        y[a] = x[i];
        a++;
    }
}
Надо бы без дополнительных библиотек (типа math_lib) и строчку мы берем не из файла, а вводим с клавиатуры.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.05.2014, 19:35     Реверсировать каждое слово строки
Посмотрите здесь:

C++ Удалить каждое четное слово из строки
Удалить каждое четное слово из строки C++
Записать все слова символьной строки, чтобы каждое слово было с новой строки, и в отдельной переменной C++
В тексте удалить каждое четное слово, продублировать каждое нечетное слово C++
Записать каждое слово строки в новую переменную. C++
Вывести на печать каждое слово строки с новой строчки C++
C++ Удалить каждое четное слово из текстовой строки
Строки. Удалить каждое второе слово C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tenzor
5 / 5 / 9
Регистрация: 21.05.2014
Сообщений: 29
24.05.2014, 20:43     Реверсировать каждое слово строки #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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include "StdAfx.h"
 
#include <iostream>
#include <string>
using namespace std;
int main() {
 
    // Вводим строку
    char strCh[256];
    string str;
    string answer;
    cout << "Enter string" << endl;
    cin.getline(strCh,256);
    str = strCh;
    
    // Цикл по всей строке
    for(int i=0; i < (int)str.size(); i++) {
        // Если данный символ строки не пробел (т.е. символ слова)
        if(str[i]!=' ') {
            // Создаем временную строку (для переворота слов)
            string temp;
            // Переворачиваем строку, заметим, что в конце цикла счетчик i будет указывать не в конце слова, а на следующий элемент.
            for(int j=i; (j<(int)str.size() && str[j]!=' '); j++,i++) {
                temp = str[j] + temp;
            }
            answer+=temp;
        // Если же имеем пробел
        } else {
            // Вписываем в строку-ответ пробелы до тех пор, пока они идут подряд. После прохождения цикла счетчик i будет указывать на первый элемент нового слова.
            while(str[i]!='\0' && str[i]==' ') {
                answer+=" ";
                i++;
            }
        }
        // Убавляем счетчик i на единицу (чтобы встать на нужное место)
        i--;
    }
    
    // Выводим ответ
    cout << answer << endl;
    system("pause");
    return 0;
}
Yandex
Объявления
24.05.2014, 20:43     Реверсировать каждое слово строки
Ответ Создать тему
Опции темы

Текущее время: 02:06. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru