Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Кристи)
0 / 0 / 0
Регистрация: 10.11.2010
Сообщений: 12
#1

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

11.11.2010, 19:06. Просмотров 525. Ответов 3
Метки нет (Все метки)

Помогите пожалйста,очень надо...
Отсортировать строки текста по возрастанию и убыванию длин слов. В тексте несколько строк.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.11.2010, 19:06
Здравствуйте! Я подобрал для вас темы с ответами на вопрос сортировка строк (C++):

Сортировка строк матрицы C++ (перестановка строк) - C++
Помогите пожалуйста, в матрице из целых чисел поменять местами первую строку и строку, содержащую самый большой по абсолютной величине...

Сортировка строк - C++
Камрады, посмотрите, пжл, где я туплю. Не сортируется массив, эдакая трабла: #include <iostream> using namespace std; int main() ...

Сортировка строк - C++
Упорядочить строки массива по невозрастанию значений последних элементов строк.

Сортировка строк - C++
Есть программа. Нужно в calc правильно сортировку написать что бы результаты в алфавитном порядке выбивало. #include <iostream> using...

Сортировка строк - C++
Сортирую указатели в массиве строк, но программа крашится. Помогите пожалуйста найти ошибку. #include <iostream> #include <cstring> ...

Сортировка строк - C++
Сколько букв "У" в введенном слове стоит на четных местах?

3
easybudda
Модератор
Эксперт CЭксперт С++
9698 / 5648 / 964
Регистрация: 25.07.2009
Сообщений: 10,863
11.11.2010, 19:17 #2
Цитата Сообщение от Кристи) Посмотреть сообщение
Отсортировать строки текста по возрастанию и убыванию длин слов
То есть по сумме длин слов, по самому длинному слову? Уточните, не понятно... Да, и язык программирования уточните...
0
Кристи)
0 / 0 / 0
Регистрация: 10.11.2010
Сообщений: 12
11.11.2010, 19:22  [ТС] #3
относительно самого длинного слова
0
easybudda
Модератор
Эксперт CЭксперт С++
9698 / 5648 / 964
Регистрация: 25.07.2009
Сообщений: 10,863
11.11.2010, 20:00 #4
Цитата Сообщение от Кристи) Посмотреть сообщение
относительно самого длинного слова
о, как!
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);
}
Аналогично можно по самому короткому слову в строке сравнивать...
1
11.11.2010, 20:00
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.11.2010, 20:00
Привет! Вот еще темы с ответами:

Сортировка строк - C++
Помогите написать программу, которая читает строки из файла в массив строк, и выводит их на экран, отсортировав по названию, исключая...

Сортировка строк - C++
В файле хранятся названия блюд. Каждая строка отдельное название. Написать программу, которая читает строки из файла в массив строк, и...

Сортировка строк - C++
Берем матрицу (для проверки) 1 5 7 4 4 2 8 9 3 На выходе получаем (см. скриншот) 1 5 7 8 9 3 4 4 2 А должно быть 8 9 3

Сортировка строк - C++
Решите пожалуйсиа ету задачу есть матрица. нужно отсортировать ее по сторокам. Т.е. строки должны идти в порядке возрастания....


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

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

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