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

сортировка строк - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Строки(легкая) http://www.cyberforum.ru/cpp-beginners/thread189609.html
Ввести строку с клавиатуры. посчитать сколько символов в строке и пробелов результат вывести на экран
C++ проверьте кто-нибудь я давно как-то создавал тему дек через массив.там в конце я написал что вроде прога рабоатет. через несколько дней я запустил её - вроде все нормально если вставлять несколько чисел сразу. но когда по одному числу вставлять - что-то не так. push_back--работает show_back и show_front push_front--работfет show_back но не show_front и в чем ошибка не могу определить. #include <iostream.h>... http://www.cyberforum.ru/cpp-beginners/thread189607.html
C++ Проверка слов на одинаковость
Прошу помочь в решении следующей задачи: В строке, которая состоит из слов и знаков препинания ( пробел . : , ! ? - ; ) проверить, что все слова одинаковые.
C++ Удаление слова из строки
Помогите пожалуйста, немогу написать программму: Дана строка из 20 слов (словом считается любой набор букв, за которым следует пробел). Вывести на печать все слова этой строки, отличные от слова hello. Заранее огромное спасибо..)
C++ Перебрать цифры http://www.cyberforum.ru/cpp-beginners/thread189570.html
Нужна перебрать цифры так чтобы они вывелись на экран именно так. 1234 1243 . . . . . 4321 Если можетье помогитье.
C++ Бинарный файл Привет всем:) Помогите пожалуйста разобраться! Задача: Дан символьный файл. Определить входит ли в него сочетание abcdefgh. Найти число вхождений ab. И нужно заполнить файл. Не знаю как это сделать с бинарным файлом! Можно хотя бы просто решения каких-нибудь задач с бинарным файлом:) буду очень благодарна!!! подробнее

Показать сообщение отдельно
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
11.11.2010, 20:00     сортировка строк
Цитата Сообщение от Кристи) Посмотреть сообщение
относительно самого длинного слова
о, как!
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
 
#define DELIM " \t\n,.!?:;"
 
/* возвращает длинну самого длинного слова в строке str, разделяя слова символами из delim.
   в случае ошибки возвращает -1 */
int larger_word(const char * str, const char * delim){
    char * buf, * p;
    int clen, mlen;
 
    if ( ! str || ! *str || ! delim)
        return -1;
    if ( ( buf = strdup(str) ) == NULL )
        return -1;
 
    if ( ( p = strtok(buf, delim) ) == NULL ){
        free(buf);
        return -1;
    }
    mlen = strlen(p);
 
    while ( p = strtok(NULL, delim) )
        if ( ( clen = strlen(p) ) > mlen )
            mlen = clen;
 
    free(buf);
    return mlen;
}
 
int asc_word_max_len_cmp(const void * a, const void * b){
    int lenA = larger_word(*(char**)a, DELIM);
    int lenB = larger_word(*(char**)b, DELIM);
 
    assert( lenA > 0 && lenB > 0 );
 
    return lenA - lenB;
}
 
int desc_word_max_len_cmp(const void * a, const void * b){
    int lenA = larger_word(*(char**)a, DELIM);
    int lenB = larger_word(*(char**)b, DELIM);
 
    assert( lenA > 0 && lenB > 0 );
 
    return lenB - lenA;
}
 
int main(void){
    char buf[BUFSIZ], * p, ** rows;
    int cnt, i;
 
    printf("Enter some strings, when done just press enter in a new row:\n");
    rows = NULL;
    cnt = 0;
 
    while ( printf("> ") && fgets(buf, BUFSIZ, stdin) ){
        if ( p = strrchr(buf, '\n') )
            *p = '\0';
        if ( ! *buf )
            break;
        if ( ( rows = (char**)realloc(rows, sizeof(char*) * (cnt + 1)) ) == NULL ){
            perror("realloc");
            exit(1);
        }
        if ( ( rows[cnt++] = strdup(buf) ) == NULL ){
            perror("strdup");
            exit(1);
        }
    }
 
    assert( rows );
 
    printf("\nSorted ascendant by longest word:\n");
    qsort(rows, cnt, sizeof(char*), asc_word_max_len_cmp);
    for ( i = 0; i < cnt; ++i )
        printf("%s\n", rows[i]);
 
    printf("\nSorted descendant by longest word:\n");
    qsort(rows, cnt, sizeof(char*), desc_word_max_len_cmp);
    for ( i = 0; i < cnt; ++i )
        printf("%s\n", rows[i]);
 
    for ( i = 0; i < cnt; ++i )
        free(rows[i]);
    free(rows);
    exit(0);
}
Аналогично можно по самому короткому слову в строке сравнивать...
 
Текущее время: 08:44. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru