Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/2: Рейтинг темы: голосов - 2, средняя оценка - 5.00
0 / 0 / 1
Регистрация: 10.10.2009
Сообщений: 59
1

Сортировка символов

30.03.2010, 19:18. Просмотров 470. Ответов 2
Метки нет (Все метки)

Всем добрый вечер. Возникла проблема. У меня есть код программы на 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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
#include "stdafx.h"
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
void sort_bubl(int *x, int n);
void sort_min(int *x, int n);
void sort_sh(int *x, int n);
int menu();
void main()
{
 
    int b[10];
    int i;
        for (i=0;i<10;i++)
        {
        printf("Vvedite element [%d]\n",i+1);
        scanf("%d",b+i);
        }
    while(1)
    {
        switch(menu())
        {
        case 1:
        sort_bubl(b,10);
        printf("\nOtsortirovani massiv: \n", i+1);
            for(i=0;i<10;i++)
            printf("%d\n", *(b+i));
        break;
        case 2:
        sort_min(b,10);
        printf("\nOtsortirovani massiv: \n", i+1);
            for(i=0;i<10;i++)
            printf("%d\n", *(b+i));
        break;
        case 3:
        sort_sh(b,10);
        printf("\nOtsortirovani massiv: \n", i+1);
            for(i=0;i<10;i++)
            printf("%d\n", *(b+i));
        break;
        break;
        }
    }
 
}
int menu()
{
    int ch;
    do{
        printf("\n Menu: \n");
        printf("1. Sortirovka metodom puzur`ka: \n");
        printf("2. Sortirovka metodom min element: \n");
        printf("3. Sortirovka metodom Shella: \n");
        printf("4. Exet\n");
        printf("\t Vash vibor:");
        scanf("%d",&ch);
    }
    while(ch>4);
    return ch;
}
void sort_bubl(int *x, int n)
{
int i,j,buf;
for(i=0;i<10;i++)
    for(j=0;j<9-i;j++)
        if(*(x+j)>*(x+j+1))
            {
            buf=*(x+j);
            *(x+j)=*(x+j+1);
            *(x+j+1)=buf;
            }
}
void sort_min(int *x, int n)
{
int i,j,k,buf;
for(i=0;i<9;i++)
    {
        for(k=i,j=i+1;j<n;j++)
            if(*(x+j)<*(x+k)) k=j;
                buf=*(x+k);*(x+k)=*(x+i);*(x+i)=buf;
    }
}
void sort_sh(int *x, int n)
{
    int i,j;
    int buff;
    int gap;
    int sorted;
    for(gap=n/2;gap>0;gap/=2)
        do{
            sorted=0;
            for(i=0,j=gap;j<n;i++,j++)
                if(*(x+i)>*(x+j))
                {
                    buff=*(x+j);*(x+j)=*(x+i);*(x+i)=buff;
                sorted=1;
                }
        }while(sorted);
}
Надеюсь мне помогут.

Добавлено через 35 минут
Спасибо за внимание. Справился сам.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.03.2010, 19:18
Ответы с готовыми решениями:

Сортировка символов в строке по частоте их встречаемости
Помогите разобраться с кодом. Ошибка возникает на этапе суммирования частоты встречаемости...

Дана последовательность символов x1, x2, ., xn. Выясните, есть ли среди символов этой последовательности пара символов
Дана последовательность символов x1, x2, ..., xn. Выясните, есть ли среди символов этой...

Дана последовательность символов x1, x2, ., xn. Выясните, есть ли среди символов этой последовательности пара символов
Дана последовательность символов x1, x2, ..., xn. Выясните, есть ли среди символов этой...

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

2
Retired
7719 / 2551 / 671
Регистрация: 17.10.2009
Сообщений: 5,100
30.03.2010, 19:22 2
Cyanide, справился сам, помоги другим, запостив верный код в теме.
1
0 / 0 / 1
Регистрация: 10.10.2009
Сообщений: 59
31.03.2010, 09:51  [ТС] 3
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
91
92
93
94
95
96
97
98
99
100
101
102
#include "stdafx.h"
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
void sort_bubl(char *x, char n);
void sort_min(char *x, char n);
void sort_sh(char *x, char n);
int menu();
void main()
{
 
        char b[10];
        char i;
                for (i=0;i<10;i++)
                {
                printf("Vvedite element [%d]\n",i+1);
                scanf("%s",b+i);
                }
        while(1)
        {
                switch(menu())
                {
                case 1:
                sort_bubl(b,10);
                printf("\nOtsortirovani massiv: \n", i+1);
                        for(i=0;i<10;i++)
                        printf("%c\n", *(b+i));
                break;
                case 2:
                sort_min(b,10);
                printf("\nOtsortirovani massiv: \n", i+1);
                        for(i=0;i<10;i++)
                        printf("%c\n", *(b+i));
                break;
                case 3:
                sort_sh(b,10);
                printf("\nOtsortirovani massiv: \n", i+1);
                        for(i=0;i<10;i++)
                        printf("%c\n", *(b+i));
                break;
                break;
                }
        }
 
}
int menu()
{
        int ch;
        do{
                printf("\n Menu: \n");
                printf("1. Sortirovka metodom puzur`ka: \n");
                printf("2. Sortirovka metodom min element: \n");
                printf("3. Sortirovka metodom Shella: \n");
                printf("4. Exet\n");
                printf("\t Vash vibor:");
                scanf("%d",&ch);
        }
        while(ch>4);
        return ch;
}
void sort_bubl(char *x, char n)
{
int i,j;
char buf;
for(i=0;i<10;i++)
        for(j=0;j<9-i;j++)
                if(*(x+j)>*(x+j+1))
                        {
                        buf=*(x+j);
                        *(x+j)=*(x+j+1);
                        *(x+j+1)=buf;
                        }
}
void sort_min(char *x, char n)
{
int i,j,k;
char buf;
for(i=0;i<9;i++)
        {
                for(k=i,j=i+1;j<10;j++)
                        if(*(x+j)<*(x+k)) k=j;
                {
                                buf=*(x+k);*(x+k)=*(x+i);*(x+i)=buf;
                }
        }
}
void sort_sh(char *x, char n)
{
        int i,j;
        char buff;
        int gap;
        int sorted;
        for(gap=n/2;gap>0;gap/=2)
                do{
                        sorted=0;
                        for(i=0,j=gap;j<10;i++,j++)
                                if(*(x+i)>*(x+j))
                                {
                                        buff=*(x+j);*(x+j)=*(x+i);*(x+i)=buff;
                                sorted=1;
                                }
                }while(sorted);
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.03.2010, 09:51

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Методы: вывод массива символов, сортировка массива символов
Здравствуйте! Помогите, кто чем может..:grose: Конструктор: параметр-строка, создание массива...

Сортировка символов
Помогите плз Правило сортировки следующее: Если длина слов I и II больше 2х, то: слово I &gt; II...

Сортировка символов
Всем привет, помогите пожалуйста отсортировать символы в переменной String st = &quot;абвгде&quot;; Чтоб...

Сортировка символов в C++
Напишите пожалуйста программу сортировки символов введенной с клавиатуры строки. Буду очень...


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

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

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