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

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

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

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

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

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

сортировка строк - C++
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <iostream.h> char cool='o'; static size_t rows = 0; static...

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

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

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

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

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

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

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

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

Сортировка строк - C++
#include "stdafx.h" #include "string.h" int _tmain(int argc, _TCHAR* argv) { char s,s1,s2; int i,j,l,k=0,a1,a2; ...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
easybudda
Эксперт С++
9456 / 5469 / 927
Регистрация: 25.07.2009
Сообщений: 10,495
11.11.2010, 19:17     сортировка строк #2
Цитата Сообщение от Кристи) Посмотреть сообщение
Отсортировать строки текста по возрастанию и убыванию длин слов
То есть по сумме длин слов, по самому длинному слову? Уточните, не понятно... Да, и язык программирования уточните...
Кристи)
0 / 0 / 0
Регистрация: 10.11.2010
Сообщений: 12
11.11.2010, 19:22  [ТС]     сортировка строк #3
относительно самого длинного слова
easybudda
Эксперт С++
9456 / 5469 / 927
Регистрация: 25.07.2009
Сообщений: 10,495
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);
}
Аналогично можно по самому короткому слову в строке сравнивать...
Yandex
Объявления
11.11.2010, 20:00     сортировка строк
Ответ Создать тему
Опции темы

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