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

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

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

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

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

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

Добавлено через 15 минут
+ к этому:
1. Исходный текст находится в текстовом файле, имя которого вводится с клавиатуры .
2. Вывод результата осуществляется одновременно в текстовый файл, имя которого вводится с клавиатуры , и на
экран монитора.
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 подстроку...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Вадян
1 / 1 / 0
Регистрация: 25.05.2012
Сообщений: 42
09.06.2012, 02:37  [ТС] #16
мне пишет trouble with opening file

Добавлено через 2 минуты
а не,все норм!)) Спасибо!
The_Immortal
1551 / 487 / 8
Регистрация: 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 / 0
Регистрация: 25.05.2012
Сообщений: 42
09.06.2012, 02:48  [ТС] #18
Visual studio )
The_Immortal
1551 / 487 / 8
Регистрация: 04.04.2009
Сообщений: 1,891
09.06.2012, 02:51 #19
Вадян, VS зло, переходите на Билдер! //ох меня заклюют!...))
В общем, траблу вроде как решили...
Вадян
1 / 1 / 0
Регистрация: 25.05.2012
Сообщений: 42
09.06.2012, 02:52  [ТС] #20
ок) еще раз огромное спасибо!
Jazz411
85 / 33 / 3
Регистрация: 12.03.2011
Сообщений: 234
Записей в блоге: 2
09.06.2012, 06:24 #21
Да, Господи ребят вы чего? просто в моем коде флаг повесте и все.

The_Immortal, Там заменить нужно х на ks, а не наоборот, читаем внимательно

The_Immortal, Код исправил правильно, спасибо только вот тут
C++
1
2
3
4
if ((str[i] == 'x' || str[i] == 'X') && !stop) 
{ 
   if (!stop)
  {
достаточно 1 if оно и так есть в условии
C++
1
2
if ((str[i] == 'x' || str[i] == 'X') && !stop) 
{
Добавлено через 47 минут
Блин, я идиот советую посмотреть внимательно на мой код, я там допусти ошибку, к примеру введите сложное предложение
Короче строки

C++
1
2
3
    while (!feof(file)) 
    {
        fscanf(file, "%s", str);
C++
1
2
3
4
5
6
7
8
9
    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);
        }
перенесите вниз =>
C++
1
2
3
4
5
6
7
8
9
        if (!(rezult = fopen(strcat(rezult_file_name, ".txt"), "w+"))) {
            cout << "Can't creat file" << endl;
            system("Pause");
            _exit(1);
        }
 
    while (!feof(file)) 
    {
        fscanf(file, "%s", str);
Добавлено через 2 минуты
да, в конце допишите
C++
1
2
fclose(file);
fclose(rezult_file_name);
Добавлено через 3 минуты
текс готовый код
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
#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);
 
        if (!(rezult = fopen(strcat(rezult_file_name, ".txt"), "w+")))
        {
            cout << "Can't creat file" << endl;
            system("Pause");
            _exit(1);
        }
 
    bool stop = false;
 
    while (!feof(file))
    {
        fscanf(file, "%s", str);
 
        for (int i = 0; i < strlen(str); i++) {
            if ((str[i] == 'x' || str[i] == 'X') && !stop)
            {
                    fprintf(rezult, "%s", "ks");
                    cout << "ks";
                    stop = true;
 
            }
            else 
            {
                fprintf(rezult, "%c", str[i]);
                cout << str[i];
            }
        }
 
        fprintf(rezult, "%c", ' ');
        cout << ' ';
    }
    cout << endl;
 
    fclose(file);
    fclose(rezult_file_name);
 
    system("PAUSE");
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.06.2012, 06:24
Привет! Вот еще темы с ответами:

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

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

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

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


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

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

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