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

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

Войти
Регистрация
Восстановить пароль
 
Максим631995
0 / 0 / 0
Регистрация: 03.11.2013
Сообщений: 13
#1

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

24.05.2014, 19:35. Просмотров 283. Ответов 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++ Удалить каждое четное слово из текстовой строки
Строки. Удалить каждое второе слово 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     Реверсировать каждое слово строки
Ответ Создать тему
Опции темы

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