Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.04.2013, 03:59   #1
yohanjobt
Новичок
Джуниор
 
Регистрация: 13.04.2013
Сообщений: 2
По умолчанию Посимвольная сортировка строк

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

Код:
#include <iostream>
#include <ctime>
using namespace std;

#define ASIZE 5
int i;

void user_in(char* a);
void print_in(char* a);
void sort(char* b);
void print_out(char* b);

int main() {
	setlocale(LC_ALL, "russian_russia.1251");

	char c[ASIZE];
	char d[ASIZE];
           user_in(c);
	print_in(c);
	memcpy(d, c, ASIZE*sizeof(char));
           sort(d);
	print_out(d);

    system("pause");
    return 0;
}

void user_in(char* c) {
	for (i=0; i<ASIZE; i++) {
		cout<<"Введите значение в элемент массива ["<<i<<"] = ";
		cin>>c[i];
	}
	cout<<"\n";
}

void print_in(char* c) {
	for (i=0; i<ASIZE; i++) cout<<c[i]<<" ";
	cout<<"\n";
}

void print_out(char* d) {
	for (i=0; i<ASIZE; i++) cout<<d[i]<<" ";
	cout<<"\n";
}

void sort(char* d) {
    for (int i = 1; i < ASIZE; i++) {
        int m = 0, n = i;
        while (n != m) { 
            int t = (m + n) / 2;
            if (d[i] <= d[t]) m = t + 1;
            else n = t;
        }
        int q = d[i];
        for (int k = i - 1; k >= m; k--) d[k + 1] = d[k];
        d[m] = q;
    }
}
yohanjobt вне форума Ответить с цитированием
Старый 13.04.2013, 14:02   #2
iDima
Пользователь
 
Регистрация: 30.12.2012
Сообщений: 19
По умолчанию

Вот код:
Код:
#include <iostream>

#define NUM 5

using namespase std;

int main(){
    setlocale(LC_ALL, "russian_russia.1251");
    int max, x;
    string s;    
    
    // Ввод
    for(int i = 0; i < NUM; i++)
    {
        cin >> s[i];
    }

    // Сортировка
    for(int i = 0; i < NUM; i++)
    {
        max = i;
        for(int u = i + 1; u < NUM; i++)
        {
            if((int)s[min] > (int)s[u])
            {
                max = u;
            }
        }
        
        x = s[i];
        s[i] = s[min];
        s[max] = x;
    }

    // Вывод
    for(int i = 0; i < NUM; i++)
    {
        cout << s[i] << " ";
    }

    cout << endl;

    system("PAUSE");
    return 0;
}
iDima вне форума Ответить с цитированием
Старый 13.04.2013, 17:56   #3
yohanjobt
Новичок
Джуниор
 
Регистрация: 13.04.2013
Сообщений: 2
По умолчанию

Очень странное решение.
string s; - это же просто строка.
Нам же нужно сортировать массив строк в порядке убывания.

Также там есть какой-то идентификатор min, который тоже не ясно к чему.
yohanjobt вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Чтение из текстового файла и обработка посимвольная дмитрий12123 Паскаль, Turbo Pascal, PascalABC.NET 22 03.10.2012 23:52
Посимвольная обработка строк HellMercenariess Общие вопросы Delphi 6 24.08.2012 08:37
Посимвольная замена текста в мемо Marsel737 Общие вопросы Delphi 2 21.09.2010 22:00
Сортировка строк HixoH Общие вопросы C/C++ 0 27.04.2010 15:40
Сортировка строк sheva75 Microsoft Office Excel 3 06.02.2008 05:00