Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
besbyblik
1 / 1 / 0
Регистрация: 25.12.2010
Сообщений: 77
#1

сортировка

28.12.2010, 17:04. Просмотров 332. Ответов 5
Метки нет (Все метки)

Выбрать из строки буквы и отсортировать их в алфавитном порядке
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.12.2010, 17:04
Ответы с готовыми решениями:

Сортировка Шелла. Написал программу, не могу понять, почему сортировка не выполняется
Программа создает динамический массив с рандомным заполнением. Дальше выбор...

Сортировка слиянием. В каком куске кода происходит сортировка и каким именно образом?
Помогите, пожалуйста, разобраться. Подскажите в каком куске кода происходит...

Быстрая сортировка (сортировка Хоара) для связных списков
есть у кого готовый алгоритм? или подскажите как реализовать

Быстрая сортировка(сортировка Хоара). Отсортировать фрагмент массива
Мне нужно отсортировать фрагмент массива, расположенный между первым и...

Сортировка Шелла и пирамидальная сортировка для символов
Здраствуйте, можете пожалуйста привести пример сортировок шелла и ...

5
M@ker
-12 / 19 / 4
Регистрация: 17.12.2010
Сообщений: 355
28.12.2010, 17:10 #2
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <conio.h>

char * str_to_upper(char * str){
char * s;
for ( s = str; *s; ++s )
*s = toupper(*s);
return str;
}

int asc_cmp(const void * a, const void * b){
return strcmp(*(char**)a, *(char**)b);
}

#define DELIM " \t\n"

int main(void){
char buf[BUFSIZ], *p, ** words;
int i, cnt, len;

printf("String: ");
scanf("%[^\n]", buf);
printf("Length: ");
scanf("%d", &len);

words = NULL;
cnt = 0;
for ( p = strtok(buf, DELIM); p; p = strtok(NULL, DELIM) ){
if ( strlen(p) == len ){
if ( ( words = (char**)realloc(words, sizeof(char*) * (cnt + 1)) ) == NULL ){
perror("realloc");
exit(1);
}
if ( ( words[cnt] = strdup(p) ) == NULL ){
perror("strdup");
exit(1);
}
str_to_upper(words[cnt]);
++cnt;
}
}
if ( ! words || ! cnt ){
fprintf(stderr, "No needed words found!\n");
exit(1);
}
qsort(words, cnt, sizeof(char*), asc_cmp);
printf("Result: ");
for ( i = 0; i < cnt; ++i )
printf("%s ", words[i]);
printf("\n");

for ( i = 0; i < cnt; ++i )
free(words[i]);
free(words);
getch();
return 0;
}
0
besbyblik
1 / 1 / 0
Регистрация: 25.12.2010
Сообщений: 77
28.12.2010, 17:13  [ТС] #3
на си можно?
0
M@ker
-12 / 19 / 4
Регистрация: 17.12.2010
Сообщений: 355
28.12.2010, 17:17 #4
Цитата Сообщение от besbyblik Посмотреть сообщение
на си можно?
Перепиши сам
1
romedal
55 / 55 / 9
Регистрация: 18.03.2010
Сообщений: 345
Записей в блоге: 1
29.12.2010, 00:47 #5
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
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <cstdlib>
#include <cctype>
using namespace std;
int compare (const void* a, const void* b);
int main () {
 
    char a[100];
    cin>>a;
    //cout<<endl<<a[2]<<endl;
    qsort(a,strlen(a),sizeof(char),compare);
    for (int i =0; i<strlen(a); i++){
    if( isalpha(a[i]))
    cout<<a[i];
    }
_getch();
return 0;
}
 
int compare (const void* a, const void* b) {
char *af = (char*)a;
char *bf = (char*)b;
if((*af)<(*bf)) return -1; 
if((*af)==(*bf)) return 0;
if((*af)>(*bf)) return  1;
}
Добавлено через 2 часа 50 минут
А вот на С:
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
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
using namespace std; //Эта строка необязательна
int compare (const void* a, const void* b);
int main () {
 
        char a[100];
        scanf("%s",a);
        qsort(a,strlen(a),sizeof(char),compare);
        for (int i = 0; i<strlen(a); i++){
        if( isalpha(a[i]))
        printf("%c",a[i]);
        }
_getch();
return 0;
}
 
int compare (const void* a, const void* b) {
char *af = (char*)a;
char *bf = (char*)b;
if((*af)<(*bf)) return -1; 
if((*af)==(*bf)) return 0;
if((*af)>(*bf)) return  1;
}
1
asics
Freelance
Эксперт С++
2854 / 1789 / 355
Регистрация: 09.09.2010
Сообщений: 3,841
29.12.2010, 00:58 #6
Цитата Сообщение от romedal Посмотреть сообщение
C
1
using namespace std; //Эта строка необязательна
Всмысле не обязательная ?В Си нет пространства имен.
0
29.12.2010, 00:58
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.12.2010, 00:58

C/C++ FAQ :: Быстрая сортировка (сортировка Хоара)
Вопрос, скорее академический, по мотивам реализации. Вот в faq приведена...

Сортировка вектора по полю(Сортировка вставками)
Здравствуйте! Нужно написать сортировку вектора по полю weight класса tomato....

Быстрая сортировка (сортировка методом Хоара)
Ввести массив x1,x2,...,x20 в диапазоне . Требуется расположить отрицательные...


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

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

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