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

Удаление повторяющихся слов из стоки на C - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Вылетает при удалении памяти http://www.cyberforum.ru/cpp-beginners/thread78435.html
У меня тут конфуз: class InversTree { struct element { double data; element *parent; element () {data=0; parent=NULL;} element (double num, element* _par=NULL) {data=num; parent=_par;}
C++ Отсортировать слова по алфавиту методом выбора и записать в новый файл Пишу на ms visual c++ 6 Оконное приложение.Первая кнопка читает текстовый файл и выводит слова в первый эдитбокс. Вторая должна отсортровать эти слова по алфавиту методом выбора и записать в новый файл. Вопрос в чем, если слова читаемые из файла остаются в эдитбоксе, т.е. в буфере, их можно взять и отсортировать, т.е. не прибегая к повторному чтению файла во время сортировки.Как это на частном... http://www.cyberforum.ru/cpp-beginners/thread78411.html
Динамические массивы C++
1. Добавить после каждого четного элемента элемент со значением 0 2. Добавить столбец в конец матрицы :-[пожалуйста
задание на массивы и бесконеч.сумму ряда. C++
Прошу о помощи уважаемые форумчане.Столкнулась с проблемой в написании программ: 1)Дана последовательность и n действительных чисел.Найти номер первого максимального элемента.(используя одномерный массив) 2)вычислить бесконечную сумму ряда с заданной точностью до e(e>0) http://portal.san.ru/forums/journal/uploads/j51705_1261513702.jpg заранее благодарна
C++ Перегрузка операторов для классов http://www.cyberforum.ru/cpp-beginners/thread78387.html
Определить класс описывающий вектор в пространстве. Для класса перегрузить префиксный унарный оператор. Написать программу в которой используеться перегруженый оператор. Добавлено через 3 минуты помогите плз
C++ Проконсультируйте с програмкой Ввести строку символов, в которой могут быть символы вернего и нижнего регистров. Нужно символы верхнего регистра заменить символом " * ". Я так понял что для этого можно воспользоватся таким кодом char c = 'A'; if( isupper(c) ) cout << c << " в верхнем регистре"; но мне б не помешала консультация по коду подробнее

Показать сообщение отдельно
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
23.12.2009, 09:55     Удаление повторяющихся слов из стоки на C
Ну или строку в массив слов и удалить повторяющиеся...
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 <stdio.h>
#include <stdlib.h>
#include <string.h>
 
/* 
    удалить из строки все повторные вхождения слов
*/
 
int main(void){
    char **words, *pWord, buf[BUFSIZ];
    size_t size, i, j;
    
    while ( 1 ){ /* бесклнечный цикл */
        printf("\nString: ");
        if ( !fgets(buf, BUFSIZ, stdin) ){ /* прочитать строку */
            fprintf(stderr, "Can't get string!\n");
            exit(1);
        }
        if ( pWord = strrchr(buf, '\n') )
            *pWord = '\0'; /* удалить символ перевода строки */
        
        if ( !*buf )
            break; /* если строка пустая - на выход */
        
        /* разделение строки на массив слов */
        words = NULL;
        size = 0;
        for ( pWord = strtok(buf, " \t"); pWord != NULL; pWord = strtok(NULL, " \t") ){
            if ( ( words = (char**)realloc(words, sizeof(char*) * (size + 1)) ) == NULL ){
                fprintf(stderr, "Memory error!\n");
                exit(1);
            }
            if ( ( words[size] = strdup(pWord) ) == NULL ){
                fprintf(stderr, "Memory error!\n");
                exit(1);
            }
            ++size;
        }
        if ( !words ){
            fprintf(stderr, "Can't find some words!\n");
            exit(1);
        }
        
        /* поиск и удаление повторяющихся слов */
        for ( i = 0; i < size - 1; ++i ){
            if ( !*words[i] )
                continue;
            for ( j = i + 1; j < size; ++j ){
                if ( !strcmp(words[i], words[j]) ){
                    *(words[j]) = '\0';
                }
            }
        }
    
        /* вывод слов с пробелами */
        for ( i = 0; i < size; ++i )
            if ( *(words[i]) )
                printf("%s ", words[i]);
        printf("\n");
    
        /* очистка памяти */
        do {
            free(words[--size]);
        } while ( size );
        free(words);
    }
    
    /* завершение программы */
    exit(0);
}
 
Текущее время: 14:14. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru