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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
Вадян
1 / 1 / 0
Регистрация: 25.05.2012
Сообщений: 42
#1

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

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

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

Добавлено через 15 минут
+ к этому:
1. Исходный текст находится в текстовом файле, имя которого вводится с клавиатуры .
2. Вывод результата осуществляется одновременно в текстовый файл, имя которого вводится с клавиатуры , и на
экран монитора.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.06.2012, 00:26
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Напечатать строку, предварительно заменив на «ks» первое вхождение «x», если оно есть (C++):

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

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

Вывести первое число, если оно больше второго, и оба числа, если это не так - C++
Даны два действительных числа. Вывести первое число, если оно больше второго, и оба числа, если это не так.

Первое вхождение символа в строку. С++ - C++
Для данного рядка оставить только первые вхождения каждого символа в ряд, и вывести результаты на экран. Заранее спасибо за помощь ))

Найти первое вхождение символов в строку - C++
В массиве строк , введенных пользователем , найти первые вхождения символов ' s ' и 'S' . Использовать функции strchr () tolower ( ) . ...

Заменить в строке s1 первое вхождение s2 на строку s3 - C++
Начал тренироваться в использовании базовых функций работы со строками, и тут же пришло непонимание. Нужно заменить в строке s1 подстроку...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Jazz411
85 / 33 / 3
Регистрация: 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
The_Immortal
1552 / 488 / 8
Регистрация: 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
Jazz411
85 / 33 / 3
Регистрация: 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
The_Immortal
1552 / 488 / 8
Регистрация: 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
The_Immortal
1552 / 488 / 8
Регистрация: 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
The_Immortal
1552 / 488 / 8
Регистрация: 04.04.2009
Сообщений: 1,891
09.06.2012, 02:06 #10
Цитата Сообщение от Вадян Посмотреть сообщение
у меня все заменяет..
Вот последний код от Jazz411 у меня так срабатывает (т.е. никак):

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

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

А мне вышлите свой, который "не хочет".
0
Вложения
Тип файла: txt input.txt (8 байт, 5 просмотров)
The_Immortal
1552 / 488 / 8
Регистрация: 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
вот он)
0
Вложения
Тип файла: txt inputfile.txt (8 байт, 6 просмотров)
The_Immortal
1552 / 488 / 8
Регистрация: 04.04.2009
Сообщений: 1,891
09.06.2012, 02:28 #15
Вадян, ну... вот результ (последнего кода):
1
Миниатюры
Напечатать строку, предварительно заменив на «ks» первое вхождение «x», если оно есть  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.06.2012, 02:28
Привет! Вот еще темы с ответами:

Найти первое вхождение в строку заданного ключевого слова - C++
1. Обеспечить ввод строки, затем определить ее длину, и определить в ней первое вхождение заданного ключевого слова, например, ‘from’,...

Даны два действительных числа. Вывести первое число, если оно больше второго, и оба числа, если это не так. - C++
Даны два действительных числа. Вывести первое число, если оно больше второго, и оба числа, если это не так.

Заменить первое число нулем, если оно меньше или равно второму - C++
Даны два действительных числа. Заменить первое число нулем, если оно меньше или равно второму, и оставить числа без изменения иначе. 2

Заменить первое число нулем, если оно меньше или равно второму - C++
Даны два действительных числа. Заменить первое число нулем, если оно меньше или равно второму и оставить числа без изменения в противном...


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

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

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