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

Заменить в строке одно слово на другое, заданное с клавиатуры.

04.04.2012, 23:05. Показов 21120. Ответов 17
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Строка: aa1 bb1 cc1 dd1
слово 1: bb1
слово 2: ff1
решение: aa1 ff1 cc1 dd1


Для начинающего программиста, если можно то программу сделать проще! Спасибо!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.04.2012, 23:05
Ответы с готовыми решениями:

Заменить в строке одно слово на другое, заданное с клавиатуры.
Условие задачи: Заменить в строке одно слово на другое, заданное с клавиатуры. Текст программы:...

Ввести строку. Заменить заданное слово на другое слово в строке
Всем доброго. Возможно тему отправила не по адресочку...извиняйте ! В общем очень нужна помощь с...

Можно ли перевести одно заданное слово в другое
Вот такая задача.Даже не знаю с какого края заходить.Может кто-нибудь подскажет идею?

Заменить заданное слово в тексте, находящемся в заданном файле, на другое слово.
Заменить заданное слово в тексте, находящемся в заданном файле, на другое слово.

17
15 / 15 / 3
Регистрация: 18.03.2012
Сообщений: 91
05.04.2012, 15:03 2
Ну а насколько проще? Вы знаете STL? С типом string знакомы?
И какой формат ввода? Как вы представляете себе работу программы?
Так пойдет? Вводится число N. Затем N слов, разделенных пробелами или символами конца строки, затем слово, которое нужно заменить и слово на которое нужно заменить.
То есть вы вводите:
4
aa1 bb1 cc1 dd1
bb1
ff1

А программа вам выводит:
aa1 ff1 cc1 dd1
0
0 / 0 / 0
Регистрация: 20.03.2012
Сообщений: 53
05.04.2012, 17:44  [ТС] 3
нет, только с++
да так пойдет как вы описали
Заранее спасибо за оказанную помощь

Добавлено через 1 минуту
stanis-morozov,
нет, только с++
да так пойдет как вы описали
Заранее спасибо за оказанную помощь
0
15 / 15 / 3
Регистрация: 18.03.2012
Сообщений: 91
05.04.2012, 17:48 4
STL входит в C++
http://ru.wikipedia.org/wiki/%... 0%BE%D0%B2

Сейчас напишу программу)
0
0 / 0 / 0
Регистрация: 20.03.2012
Сообщений: 53
05.04.2012, 17:50  [ТС] 5
Цитата Сообщение от stanis-morozov Посмотреть сообщение
Ну а насколько проще? Вы знаете STL? С типом string знакомы?
И какой формат ввода? Как вы представляете себе работу программы?
Так пойдет? Вводится число N. Затем N слов, разделенных пробелами или символами конца строки, затем слово, которое нужно заменить и слово на которое нужно заменить.
То есть вы вводите:
4
aa1 bb1 cc1 dd1
bb1
ff1

А программа вам выводит:
aa1 ff1 cc1 dd1
с библиотекой string знаком, co стандартными функциями работы со строками, например: strtok,strstr и другие
0
15 / 15 / 3
Регистрация: 18.03.2012
Сообщений: 91
05.04.2012, 17:55 6
Ну вообще STL string это другая библиотека, но я вам написал с обычной Си-шной
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
#include <iostream>
#include <cstring>
 
using namespace std;
 
char strings[1000][100];
char fnd[100];
char replace[100];
 
int main()
{
    int n;
    cin >> n;
 
    for (int i = 0; i < n; i++)
    {
        cin >> strings[i];
    }
    cin >> fnd;
    cin >> replace;
 
    for (int i = 0; i < n; i++)
    {
        if (strcmp(strings[i], fnd) == 0)
        {
            strcpy(strings[i], replace);
        }
    }
 
    for (int i = 0; i < n; i++)
    {
        cout << strings[i] << ' ';
    }
    cout << endl;
    return 0;
}
0
0 / 0 / 0
Регистрация: 20.03.2012
Сообщений: 53
05.04.2012, 17:56  [ТС] 7
а с самим типом string не знаком, строки если можно делать с типом char
спасибо!
0
15 / 15 / 3
Регистрация: 18.03.2012
Сообщений: 91
05.04.2012, 17:57 8
Ну вот я вам с char и сделал)
0
0 / 0 / 0
Регистрация: 20.03.2012
Сообщений: 53
05.04.2012, 18:08  [ТС] 9
Цитата Сообщение от stanis-morozov Посмотреть сообщение
Ну вообще STL string это другая библиотека, но я вам написал с обычной Си-шной
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
#include <iostream>
#include <cstring>
 
using namespace std;
 
char strings[1000][100];
char fnd[100];
char replace[100];
 
int main()
{
    int n;
    cin >> n;
 
    for (int i = 0; i < n; i++)
    {
        cin >> strings[i];
    }
    cin >> fnd;
    cin >> replace;
 
    for (int i = 0; i < n; i++)
    {
        if (strcmp(strings[i], fnd) == 0)
        {
            strcpy(strings[i], replace);
        }
    }
 
    for (int i = 0; i < n; i++)
    {
        cout << strings[i] << ' ';
    }
    cout << endl;
    return 0;
}
Спасибо вам огромное за оказанную помощь!
Для вас я смотрю больщого труда не составило наверное большой опыт программирования! еще раз спасибо!!!


Если у вас есть минута для меня то еще глянуть вот эту задачу?
Определить кол-во слов, входящих в обе заданные строки и составить из них предложение.
Например:
cтрока 1:aa1 bb1 cc1 ss1
строка 2: bb1 aa1 ff1 dd1 ss1
предложение: aa1 bb1 ss1


Добавлено через 1 минуту
И на этом будет все! Лаба в универе просто очень трудная, а по строкам не очень разбираюсь
0
15 / 15 / 3
Регистрация: 18.03.2012
Сообщений: 91
05.04.2012, 18:11 10
А по какому принципу должно составляться предложение?
0
347 / 292 / 37
Регистрация: 23.03.2012
Сообщений: 838
05.04.2012, 18:22 11
Цитата Сообщение от stanis-morozov Посмотреть сообщение
А по какому принципу должно составляться предложение?
думаю, просто запихнуть в строку3 те слова, которые есть и в строке1, и в строке2
0
138 / 138 / 39
Регистрация: 26.02.2011
Сообщений: 545
05.04.2012, 18:24 12
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
#include <conio.h>
#include <stdio.h>
#include <io.h>
#include <stdlib.h>
int main()
{
 
        FILE *f1,*f2;//2 файла
        char nameIn[20];//имя файла1(длина)
        char nameOut[20];//имя файла2(длина)
        char str[100] ;//строка в файле
        int size;//переменная
        printf("Vvedite imy faila: ");   //спрашиваешь имя
        scanf("%s",nameIn);       //считываешь имя
        f1 = fopen(nameIn,"r");//открываем файл 1
        while (f1 == NULL)//цикл от ошибок,если не сущевствует файла1
        {
              printf("\tError!\n");
              printf("Vvedite imy faila: ");   //спрашиваешь имя
              scanf("%s",nameIn);       //считываешь имя
              f1 = fopen(nameIn,"r");//открытие файла1
        }
        size = filelength(fileno(f1));//получаем размер файла
        int readsize = fread(str,sizeof(char),sizeof(char)*size,f1);//читают строку из файла по символам.в переменную readsize записывается размер
        for(int i=0;i<readsize;i++)//цикл замены букв в строке из файла
        {
                        if( str[i] == 'a' && str[i+1] == 'b' && str[i+2] == 'c')//происходит замена букв
                                 {
                                 str[i] = 'd';
                                 str[i+1] = 'e';
                                 str[i+2] = 'f';
                                 }
        }
        printf("Vvedite imy vihodnogo faila: ");   //спрашиваешь имя
        scanf("%s",nameOut);       //считываешь имя
        f2 = fopen(nameOut,"w");//открытие файла2
        printf("\n");
        printf("\tRezultat izmeneniy: \n");
        for(int i=0;i<readsize;i++)//цикл показа результата на экране монитора
        {
                printf("%c",str[i]);
                fprintf(f2,"%c",str[i]);
        }
        fclose(f2);//закрытие файла2
        fclose(f1);//закрытие файла1
getch() ;
}
abc на def можешь свои поставить
0
15 / 15 / 3
Регистрация: 18.03.2012
Сообщений: 91
05.04.2012, 18:31 13
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
#include <iostream>
#include <cstring>
 
using namespace std;
 
char strings1[1000][100];
char strings2[1000][100];
 
int main()
{
    char ch;
    char pr;
    int k = 0, m = 0;
    int p = 0, n = 0;
    cin.sync();
    do
    {
        cin.get(ch);
 
        if (ch == ' ' && pr != ' ')
        {
            k++;
            m = 0;
        }
        else
        {
            strings1[k][m] = ch;
            m++;
        }
 
        pr = ch;
    } while (ch != '\n');
    k++;
 
 
    do
    {
        cin.get(ch);
 
        if (ch == ' ' && pr != ' ')
        {
            p++;
            n = 0;
        }
        else
        {
            strings2[p][n] = ch;
            n++;
        }
 
        pr = ch;
    } while (ch != '\n');
    p++;
 
    cout << "In the first line " << k << " words" << endl;
    cout << "In the second line " << p << " words" << endl;
 
    for (int i = 0; i < k; i++)
    {
        for (int j = 0; j < p; j++)
        {
            if (strcmp(strings1[i], strings2[j]) == 0)
            {
                cout << strings1[i] << ' ';
            }
        }
    }
    cout << endl;
    return 0;
}
У меня такой код получился)
0
0 / 0 / 0
Регистрация: 20.03.2012
Сообщений: 53
05.04.2012, 18:44  [ТС] 14
да в строку три закидывать повторяющиеся слова и программу сделать без файлов

Добавлено через 7 минут
и желательно без функций например get, можно использовать стандартные например strtok, strlen, strstr и другие

Добавлено через 2 минуты
stanis-morozov,
а зачем двумерный массив символов создавать? Объясните пожалуйста?
0
15 / 15 / 3
Регистрация: 18.03.2012
Сообщений: 91
05.04.2012, 18:47 15
Если без get(), то с scanf()

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
#include <cstdio>
#include <cstring>
 
using namespace std;
 
char strings1[1000][100];
char strings2[1000][100];
 
int main()
{
    char ch;
    char pr;
    int k = 0, m = 0;
    int p = 0, n = 0;
    do
    {
        scanf("%c", &ch);
 
        if (ch == ' ' && pr != ' ')
        {
            k++;
            m = 0;
        }
        else
        {
            strings1[k][m] = ch;
            m++;
        }
 
        pr = ch;
    } while (ch != '\n');
    k++;
 
 
    do
    {
        scanf("%c", &ch);
 
        if (ch == ' ' && pr != ' ')
        {
            p++;
            n = 0;
        }
        else
        {
            strings2[p][n] = ch;
            n++;
        }
 
        pr = ch;
    } while (ch != '\n');
    p++;
 
    printf("In the first line %d words\n", k);
    printf("In the second line %d words\n", p);
 
    for (int i = 0; i < k; i++)
    {
        for (int j = 0; j < p; j++)
        {
            if (strcmp(strings1[i], strings2[j]) == 0)
            {
                printf("%s ", strings1[i]);
            }
        }
    }
    printf("\n");
    return 0;
}
Двумерный массив нужен, т.к. каждая строка - это массив char-ов. А нам для удобства поиска нужен массив строк. Тогда нам нужен "массив массивов" или двумерный массив.
Первый индекс в этом массиве - номер строки, второй индекс - номер символа в строке.
1
0 / 0 / 0
Регистрация: 20.03.2012
Сообщений: 53
05.04.2012, 18:58  [ТС] 16
stanis-morozov,
спасибо. И еще маленький вопрос для чего библиотека нужна cstring?

Добавлено через 1 минуту
или о аналог сишной библиотеки string.h?
0
15 / 15 / 3
Регистрация: 18.03.2012
Сообщений: 91
05.04.2012, 19:00 17
Библиотека cstring - это та самая библиотека string, про которую вы говорили. Просто в чистом С была библиотека string, а когда был создан C++, то была создана еще одна библиотека с классом string, про которую я и говорил (STL). И чтобы различать эти библиотеки, старую Си-шную назвали сstring. А в этой программе она нужна для функции strcmp(), сравнивающей строки.
0
0 / 0 / 0
Регистрация: 20.03.2012
Сообщений: 53
05.04.2012, 19:03  [ТС] 18
stanis-morozov,
понятно. Огромное вам спасибо за помощь!
0
05.04.2012, 19:03
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.04.2012, 19:03
Помогаю со студенческими работами здесь

Заменить в введенном тексте одно заданное словосочетание на другое
Может у когото есть прога Написать программу, позволяющую заменить в введенном тексте одно...

Заменить заданное слово в тексте на другое слово
Здравствуйте.Помогите написать программу к данному заданию,используя процедуры или функции и...

Заменить в тексте одно слово на другое
Привет народ, помогите пожалуйста. Нужно решить задачу по поиску слова в тексте и замене его на...

Заменить в тексте одно слово на другое
в текстовом файле содержащий код программы на языке С, заменить все вхождения одного заданного...


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

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

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