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

Напечатать строку, предварительно заменив на «ks» первое вхождение «x», если оно есть

09.06.2012, 00:26. Показов 3080. Ответов 20
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Дана строка латинских символов. Напечатать эту строку , предварительно заменив на «ks» первое вхождение
«x», если оно есть .
Пожалуйста,помогите написать

Добавлено через 15 минут
+ к этому:
1. Исходный текст находится в текстовом файле, имя которого вводится с клавиатуры .
2. Вывод результата осуществляется одновременно в текстовый файл, имя которого вводится с клавиатуры , и на
экран монитора.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.06.2012, 00:26
Ответы с готовыми решениями:

Напечатать строку, предварительно удалив первое вхождение ‘w’,
1)Дана строка латинских символов. Напечатать эту строку, предварительно удалив первое вхождение...

Удалите первое вхождение w в строку, если такое есть
Очень нужно на завтра!!! Известно, что в начале строки S находится не более 40 латинских букв,...

Строки. Удалить первое вхождение ‘w’, если такое есть
Дан текст. Напечатать его, предварительно преобразовав его следующим образом: удалить первое...

В предложении удалить первое вхождение “w”, если такое есть
Как можно выполнить это задание с помощью строк?? В предложении удалить первое вхождение “w”, если...

20
85 / 33 / 12
Регистрация: 12.03.2011
Сообщений: 234
Записей в блоге: 2
09.06.2012, 00:30 2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
using namespace std;
 
int main(void)
{
    char str[256]={0};
    cout << "Enter string\n";
    cin.getline(str,256);
    for(int i = 0; i < strlen(str); i++)
    {
        if(str[i] == 'x' || str[i] == 'X')
        {
            cout << "ks";
        }
        else cout << str[i];
    }
 
    cout << endl;
 
    system("PAUSE");
    return 0;
}
Добавлено через 35 секунд
а файл результат или входной?
1
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
09.06.2012, 00:33 3
Вадян,

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <string>
using namespace std;
 
int main(int argc, char *argv[]) {
    string s;
    string s1;
    cout << endl << "Enter the string:" << endl;
    cin >> s;
 
    size_t offset = s.find("ks");
    if (offset != -1) {
        s.erase(offset, 2);
        s.insert(offset, "x");
        cout << s << endl;
    }
 
    system("PAUSE");
    return 0;
}
1
1 / 1 / 0
Регистрация: 25.05.2012
Сообщений: 42
09.06.2012, 00:34  [ТС] 4
Цитата Сообщение от Jazz411 Посмотреть сообщение
а файл результат или входной?
и то и то походу.. два текстовых файла создать нужно
0
85 / 33 / 12
Регистрация: 12.03.2011
Сообщений: 234
Записей в блоге: 2
09.06.2012, 00:54 5
Вводить только имя файла без формата, формат файла ".txt"
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
#include <iostream>
using namespace std;
 
int main(void)
{
    char str[256]={0};
    FILE* file = NULL;
 
    cout << "Enter name of file" << endl;
    cin.getline(str,256);
    cin.sync();
 
    if(!(file = fopen(strcat(str, ".txt"), "r")))
    {
        cout << "Can't open file" << endl;
        system("Pause");
        _exit(1);
    }
 
    memset(str,0,256);
 
    char rezult_file_name[256]={0};
    FILE* rezult = NULL;
 
    cout << "Enter name of rezult file" << endl;
    cin.getline(rezult_file_name, 256);
 
    while(!feof(file))
    {
        fscanf(file, "%s", str);
 
        if(!(rezult = fopen(strcat(rezult_file_name, ".txt"), "w+")))
        {
            cout << "Can't creat file" << endl;
            system("Pause");
            _exit(1);
        }
 
        for(int i = 0; i < strlen(str); i++)
        {
            if(str[i] == 'x' || str[i] == 'X')
            {
                fprintf(rezult, "%s", "ks");
                cout << "ks";
            }
            else 
            {
                fprintf(rezult, "%c", str[i]);
                cout << str[i];
            }
        }
 
        fprintf(rezult, "%c", ' ');
        cout << ' ';
    }
    cout << endl;
 
    system("PAUSE");
    return 0;
}
1
1 / 1 / 0
Регистрация: 25.05.2012
Сообщений: 42
09.06.2012, 01:02  [ТС] 6
Огромной спасибо!!!

Добавлено через 5 минут
А как сделать,чтобы он только первое вхождение x заменял,а не все?
0
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
09.06.2012, 01:45 7
Вадян,
Цитата Сообщение от Вадян Посмотреть сообщение
А как сделать,чтобы он только первое вхождение x заменял,а не все?
Дык а разве он все заменяет? У меня только первое.

Jazz411, а у Вас данный код работает? У меня он замену "ks" почему-то не производит...
0
1 / 1 / 0
Регистрация: 25.05.2012
Сообщений: 42
09.06.2012, 01:55  [ТС] 8
Добавлено через 31 секунду
Цитата Сообщение от The_Immortal Посмотреть сообщение
Дык а разве он все заменяет? У меня только первое.
у меня все заменяет..
0
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
09.06.2012, 02:01 9
Вадян, странно...

Ну в общем, я вот так накидал, потестируйте.


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
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
 
int main(int argc, char *argv[]) {
    string s;
    char outfile[256];
    char inputfile[256];
 
    cout << "Enter filename (including \".txt\"): ";
    cin >> inputfile;
    ifstream fin(inputfile);
    if (fin.is_open()) {
 
        while (!fin.eof())
            s += fin.get();
        fin.close();
 
    }
    else {
        cout << "Trouble with opening the file" << endl;
        system("Pause");
    }
 
    s = s.erase(s.length() - 1, 1);
    size_t offset = s.find("ks");
    if (offset != -1) {
 
        cout << "Enter the name of output file (including \".txt\"): ";
        cin >> outfile;
        s.erase(offset, 2);
        s.insert(offset, "x");
        cout << s << endl;
        fstream file;
        file.open(outfile, ios::out);
        file << s;
 
    }
 
    system("PAUSE");
    return 0;
 
}
0
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
09.06.2012, 02:06 10
Цитата Сообщение от Вадян Посмотреть сообщение
у меня все заменяет..
Вот последний код от Jazz411 у меня так срабатывает (т.е. никак):

Jazz411, в чем фишка?
Миниатюры
Напечатать строку, предварительно заменив на «ks» первое вхождение «x», если оно есть  
0
1 / 1 / 0
Регистрация: 25.05.2012
Сообщений: 42
09.06.2012, 02:10  [ТС] 11
Не хочет из файла читать
0
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
09.06.2012, 02:12 12
Вадян, вот попробуйте мой файл

Соответственно в программе введите "input.txt".

А мне вышлите свой, который "не хочет".
Вложения
Тип файла: txt input.txt (8 байт, 6 просмотров)
0
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
09.06.2012, 02:16 13
Цитата Сообщение от The_Immortal Посмотреть сообщение
в чем фишка?
Фишка в том, что мне надо было читать внимательнее задание Я наоборот меняю x на ks

Вот поправил:

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
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
 
int main(int argc, char *argv[]) {
    string s;
    char outfile[256];
    char inputfile[256];
 
    cout << "Enter filename (including \".txt\"): ";
    cin >> inputfile;
    ifstream fin(inputfile);
    if (fin.is_open()) {
 
        while (!fin.eof())
            s += fin.get();
        fin.close();
 
    }
    else {
        cout << "Trouble with opening the file" << endl;
        system("Pause");
    }
 
    s = s.erase(s.length() - 1, 1);
    size_t offset = s.find("x");
    if (offset != -1) {
 
        cout << "Enter the name of output file (including \".txt\"): ";
        cin >> outfile;
        s.erase(offset, 1);
        s.insert(offset, "ks");
        cout << s << endl;
        fstream file;
        file.open(outfile, ios::out);
        file << s;
 
    }
 
    system("PAUSE");
    return 0;
 
}
1
1 / 1 / 0
Регистрация: 25.05.2012
Сообщений: 42
09.06.2012, 02:19  [ТС] 14
вот он)
Вложения
Тип файла: txt inputfile.txt (8 байт, 7 просмотров)
0
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
09.06.2012, 02:28 15
Вадян, ну... вот результ (последнего кода):
Миниатюры
Напечатать строку, предварительно заменив на «ks» первое вхождение «x», если оно есть  
1
1 / 1 / 0
Регистрация: 25.05.2012
Сообщений: 42
09.06.2012, 02:37  [ТС] 16
мне пишет trouble with opening file

Добавлено через 2 минуты
а не,все норм!)) Спасибо!
0
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
09.06.2012, 02:39 17
Вадян, какой компилятор?

Вот если надо код Jazz411 (исправляет только первый x). Вроде

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
#include <iostream>
using namespace std;
 
bool stop = false;
 
int main(void) {
    char str[256] = {0};
    FILE* file = NULL;
 
    cout << "Enter name of file" << endl;
    cin.getline(str, 256);
    cin.sync();
 
    if (!(file = fopen(strcat(str, ".txt"), "r"))) {
        cout << "Can't open file" << endl;
        system("Pause");
        _exit(1);
    }
 
    memset(str, 0, 256);
 
    char rezult_file_name[256] = {0};
    FILE* rezult = NULL;
 
    cout << "Enter name of rezult file" << endl;
    cin.getline(rezult_file_name, 256);
 
    while (!feof(file)) {
        fscanf(file, "%s", str);
 
        if (!(rezult = fopen(strcat(rezult_file_name, ".txt"), "w+"))) {
            cout << "Can't creat file" << endl;
            system("Pause");
            _exit(1);
        }
 
        for (int i = 0; i < strlen(str); i++) {
            if ((str[i] == 'x' || str[i] == 'X') && !stop) {
                if (!stop) {
                    fprintf(rezult, "%s", "ks");
                    cout << "ks";
                    stop = true;
                }
 
            }
            else {
                fprintf(rezult, "%c", str[i]);
                cout << str[i];
            }
        }
 
        fprintf(rezult, "%c", ' ');
        cout << ' ';
    }
    cout << endl;
 
    system("PAUSE");
    return 0;
}
Протестируйте плиз.
1
1 / 1 / 0
Регистрация: 25.05.2012
Сообщений: 42
09.06.2012, 02:48  [ТС] 18
Visual studio )
0
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
09.06.2012, 02:51 19
Вадян, VS зло, переходите на Билдер! //ох меня заклюют!...))
В общем, траблу вроде как решили...
0
1 / 1 / 0
Регистрация: 25.05.2012
Сообщений: 42
09.06.2012, 02:52  [ТС] 20
ок) еще раз огромное спасибо!
1
09.06.2012, 02:52
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.06.2012, 02:52
Помогаю со студенческими работами здесь

Строка: В строке заменить на ‘ks’ первое вхождение ‘x’, если такое есть
. Дан текст. Напечатать его, предварительно преобразовав его следующим образом: заменить на ‘ks’...

В списке Р заменить первое вхождение списка Р1 (если такое есть) на список Р2
Написать программу с функциями, которая: а)в списке Р заменяет первое вхождение списка Р1( если...

Строка: Образовать новую строку, предварительно заменив все вхождения abc на def.
Известно, что в начале строки s находится не более 40 латинских букв, за которыми следуют пробелы....

Вывести на экран введенную строку, предварительно заменив пробелы символами табуляции и удалив знаки препинания
Вывести на экран введенную строку, предварительно заменив пробелы символами табуляции и удалив...


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

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

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