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

Удаление слова из строки - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Программирование циклов с неизвестным заранее числом повторений http://www.cyberforum.ru/cpp-beginners/thread424109.html
вот еще лабораторная, как её делать ума не приложу, и одногруппники тоже сделать не могут. если кто сделает, пожалуйста добавьте алгоритмы, алгоритмы тоже нужны. Выкладывайте задания в теме. Не все из способных вам помочь захотят что-то там скачивать... Лабораторная работа №3 Программирование циклов с неизвестным заранее числом повторений Цель работы: освоение средств языка C++ для...
C++ разбить квадратную матрицу на 4 части подскажите, как разбить квадратную матрицу размерностью n на 4 матрицы с размерностью n/2 http://www.cyberforum.ru/cpp-beginners/thread424104.html
Описать класс для работы с целочисленной матрицей произвольного размера C++
Составить класс для работы с целочисленной матрицей произвольного размера, который задается в конструкторе,где данная матрица создается динамически. Включить саму матрицу во внутреннюю часть класса. Во внешней части задать и реализовать следующие функции-методы: -функция автоматического (через функцию rand) заполнение матрицы значениями из диапазона от -N до N (данный параметр передаются в...
Спецификация файла. WTF? C++
Здравствуйте. Что такое спецификация файла (в контексте данной задачи)? В Google ничего понятного не нашел. Заранее спасибо.
C++ Используя функции и режим меню, создать файл из 10 структур, просмотреть файл, добавить в файл новую информацию и, применяя режим прямого доступа, Выв http://www.cyberforum.ru/cpp-beginners/thread424087.html
Здравствуйте! Если кто-нибудь мог бы помочь в решении только той части где касается написания функции о поиске самого высокого спортсмена из 10 созданных структур.(if r.rost>r.rost) я просто не знаю как именно. Была бы очень благодарна. Используя функции и режим меню, создать файл из 10 структур, просмотреть файл, добавить в файл новую информацию и, применяя режим прямого доступа, Вывести...
C++ Программирование циклов с параметром. Одномерные массивы ужас, помогите решить лабораторную, завтра экзамен, а у меня не сделано, я вообще не понимаю как это делать! подробнее

Показать сообщение отдельно
KSTU
9 / 10 / 3
Регистрация: 25.04.2011
Сообщений: 47
07.01.2012, 21:25     Удаление слова из строки
Задание:
Необходимо обработать текстовый файл. В первой строке файла указано
общее число строк. Выделить память под массив указателей на строки,
ввести текст построчно, динамически выделяя память для хранения каждой
строки и записывая указатель в массив. Вывести на экран исходный текст.
Выполнить один из вариантов обработки текста.

Вариант:
Удалить все вхождения заданного слова из текста.
Почти все сделал, а со строкой не получается... И слово не удаляет и режет потом строку неправильно. Помогите найти ошибку, пожалуйста:

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 <malloc.h>
#include <conio.h>
#include <string.h>
#define MAX_LEN 81
 
using namespace std;
 
void main ()
{
    setlocale(LC_ALL, "rus");
 
    FILE *f;
    char str1[MAX_LEN] = "file.txt", **str2, slovo[MAX_LEN];
 
    if ((f=fopen(str1,"r")) == NULL)
    { 
        cout << "Файл file.txt не найден.";
        _getch();
        return;
    }
 
    fgets(str1,MAX_LEN,f);
    int n = atoi(str1);
    cout << "Общее количество строк " << n << endl;
    str2 = (char **) malloc(n*MAX_LEN);
 
    cout << "\nИсходный текст:\n";
    for (int i=0; i<n; i++)
    {
        str2[i] = (char *) malloc(MAX_LEN);
        fgets(str2[i],MAX_LEN,f);
        cout << str2[i];
    }
 
    cout << "\n\nВведите слово, которое хотите удалить из текста: ";
    cin >> slovo;
 
    cout << "\nРезультат:\n";
    for (int i=0, k=0, x = -1, cut = 0; i<n; i++)
    {
        for (int j=0; j<MAX_LEN; j++)
        {
            if (str2[i][j]==slovo[k])
            {
                if (k==0) 
                    x = j;
                if (k==strlen(slovo)-1)
                {
                    cut++;
                    for (int y=x-1; y<j; y++)
                        str2[i][y] = str2[i][y+1];
                }
                k++;
            }
            else
            {
                k = 0;
                x = -1;
            }
        }
        for (int j=0; j<=strlen(str2[i])-strlen(slovo)*cut; j++)
            cout << str2[i][j];
        cout << "\n";
    }
 
    _getch();
    free(str2);
    fclose(f);
}
Файл:
5
There are SLOVO many big and small SLOVO libraries everywhere in our country.
They have millions of books in SLOVO different languages.
You can find there SLOVO SLOVO the oldest and the newest books.
Every school has a library.
Pupils come to the library SLOVO to take books on different subjects.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 04:56. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru