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

Перенести первую букву каждого слова в его конец

01.12.2019, 22:17. Показов 1142. Ответов 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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
#include <stdio.h>
#include <conio.h>
#include <iostream>
#include <string.h>
#include <stdlib.h>
#include <locale.h>
 
#define FNAME_I "D:\\st_i.txt\0"
#define FNAME_R "D:\\st_r.txt\0"
 
const int RAZ = 80;
const char PR_R[] = "r";
const char PR_W[] = "w";
void make_file(char *fname);
int proverka_file(char *fname, const char *);
void obrabotka_file(char *, char *); 
void vivod_file(char*);
using namespace std;
 
int main()
{setlocale(LC_ALL,"Russian") ;
 
    char fname_i[20] = FNAME_I;
    char fname_r[20] = FNAME_R;
    make_file(fname_i);
 
    if (!proverka_file(fname_i, PR_R))
    {
        cout << "Ошибка открытия файла " << fname_i << " на чтение" << endl;
        cout << "Нажмите <Enter>" << endl;
        getchar();
        return 0;
    }
    cout << "Содержимое исходного файла:" << endl;
    vivod_file(fname_i);
 
    obrabotka_file(fname_i, fname_r);
 
    if (!proverka_file(fname_r, PR_R))
    {
        cout << "Ошибка открытия файла " << fname_r << " на чтение" << endl;
        cout << "Нажмите <Enter>" << endl;
        getchar();
        return 0; 
    }
    cout << "Результат :\n";
    vivod_file(fname_r);
 
    cout << endl << "Для завершения нажмите <Enter>";
    getchar();
    return 0;
}
 
void make_file(char *fname_i)
{
    char st[RAZ];
    FILE *in;
    char otv; 
    
    while (proverka_file(fname_i, PR_R))
    {
        cout << "Такой файл уже есть! Зададите новое имя Y/N?" << endl;
        cin.get(otv);
        if (otv == 'Y' || otv == 'y')
        {
            cout << "Введите новое имя:" << endl;
            cin >> fname_i;
            cin.get(); 
        }
        else {
            cin.get();
            break;
        }
    }
 
    if (!proverka_file(fname_i, PR_W))
    {
        cout << "Ошибка открытия файла " << fname_i << " на запись" << endl;
        cout << "Нажмите <Enter>" << endl;
        getchar();
        exit(0);
    }
    
    in = fopen(fname_i, PR_W);
    cout << "Создание файла." << endl;
    cout << "Признак окончания ввода - ввод пустой строки" << endl;
    cout << "Введите строку и нажмите <Enter>" << endl;
    cout << "->";
    cin.getline(st, RAZ); 
    
    while (strlen(st))
    {
        fprintf(in, "%s\n", st);
        cout << "Введите строку и нажмите <Enter>" << endl;
        cout << "->";
        otv++;
        cin.getline(st, RAZ);
    }
    fclose(in);
}
 
int proverka_file(char *fname, const char *pr)
{
    if ((fopen(fname, pr)) == NULL) 
        return(0);
    return(1);
}
 
void obrabotka_file(char *fname_i, char *fname_r) {
    FILE *in, *out;
    
    char buffer[2];
    std::string str = " ";
    std::string words;
 
in = fopen(fname_i, PR_R) ;
out = fopen(fname_r, PR_W) ;
 
            while (!feof(in))
            {
                if (fgets(buffer, 2, in) == NULL) break;
                if (buffer[0] == ' ' || buffer[0] == '\n') {
                    str[0] = str[str.length() - 1];
                    str[str.length() - 1] = buffer[0];
                    fprintf(out, str.c_str());
                    str.clear();
                    str = " ";
                }
                else {
                    str.append(buffer);
                }
            }
            fclose(in);
            fclose(out);
}
 
void vivod_file(char *fname)
{
    FILE *in_out;
    char st[RAZ];
    in_out = fopen(fname, PR_R);
    fgets(st, RAZ, in_out);
    while (!feof(in_out))
    {
        cout << st;
        fgets(st, RAZ, in_out);
    }
    fclose(in_out);
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.12.2019, 22:17
Ответы с готовыми решениями:

Перенести первую букву каждого слова в его конец
В произвольном тексте,хранящемся в файле и содержащем не более 10 строк(в каждой строке не более 80...

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

Перенести первую букву в конец слова
Напечатать все слова, отличающиеся от последнего слова, перед печатью перенеся первую букву в конец...

Сделать первую букву каждого слова большой и поставить точку после каждого слова
Немного не получается сделать первую букву слов большой, может я чтото неправильно делаю( точно ). ...

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.12.2019, 22:17
Помогаю со студенческими работами здесь

Сделать первую букву каждого слова большой и поставить точку после каждого слова
У меня есть программа, она делает то, что нужно. Но нужно поменять алгоритм выполнения, сделать...

Написать программу, меняющую первую букву каждого слова на эту же букву верхнего регистра
Дан массив из 10 строк по 80 символов, требуется заменить первую букву в каждом слове на эту же...

Переместить первую букву слова в конец слова(Строки)
Здравствуйте уважаемые форумчане. Помогите пожалуйста. Напечатать все слова, заранее перенести...

Переместить в слове первую букву в конец слова
Как можно переместить в слове первую букву в конец слова?


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

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

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