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

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

Войти
Регистрация
Восстановить пароль
 
ALEXKIRNAS
10 / 10 / 2
Регистрация: 27.06.2013
Сообщений: 151
#1

Сортировка char -ровой матрицы - C++

27.08.2013, 14:29. Просмотров 726. Ответов 8
Метки нет (Все метки)

Имеется char-рова матрица. Пусть ее размер и имя: а[3][21].
Пусть матрица имеет такие исходные данные:

vasya-pupkin\0
bill-hates\0
ivan-ivanov\0

Нужно отсортировать матрицу таким образ чтобы данные приняли такой вид (отсортировать в алфавитно порядке не меняя порядка букв в строках):

bill-hates\0
ivan-ivanov\0
vasya-pupkin\0

Как мне это сделать?????
P.S.: Все данные приведение выше только для примера. В конечный программе массив будет динамический, а данные случайные (только буквы и знак "-").
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.08.2013, 14:29     Сортировка char -ровой матрицы
Посмотрите здесь:

Сортировка матрицы char-ов - C++
Есть двойной массив char, как его отсортировать, почему нельзя работать вот так arr в функции? #include <iostream> #include <stdio.h>...

Сортировка очереди <char> - C++
помогите пож с сортировкой очереди queue очередь состоит из латинсколо алфавита. нужно отсортировать по возростанию и по спаданию .....

Сортировка массива char - C++
Здравствуйте имеется массив mas=&quot;vasya&quot;; mas=&quot;oleg&quot;; mas=&quot;misha&quot;; mas=&quot;oleg&quot;; mas=&quot;oleg&quot;; mas=&quot;sergei&quot;; мне нужно сделать...

Сортировка строк Char - C++
#define _CRT_SECURE_NO_WARNINGS #include &lt;stdafx.h&gt; #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &quot;string.h&quot; #include...

Сортировка слов в char по алфавиту - C++
Доброго всем времени! Помогите пожалуйста! Напечатать слова, входящие в предложение, в алфавитном порядке. Человек, попросивший...

Сортировка двумерного массива char - C++
Помогите пожалуйста отсортировать двумерный массив(2d) символов(char) по возрастанию.. Пишу программу на с++ в Visual Studio 2005; ...

Сортировка значений типа char - C++
Здравствуйте, есть у меня структура: ФИО ученика и класс в котором он учится. Класс состоит из цифры и буквы. Как можно отсортировать...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Belfegor
Ghost
172 / 172 / 6
Регистрация: 16.09.2012
Сообщений: 524
27.08.2013, 14:58     Сортировка char -ровой матрицы #2
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
#include <iostream>
#include <cstring>
 
using namespace std;
 
const int NUM_NAMES = 3, SIZE = 17; // moved make global
 
void selSortChars(char [][SIZE], int, int); // 2D array
 
int main() {
    char names[NUM_NAMES][SIZE] = {// changed only because I prefer  :)/>
        "Vasya-Pupkin",
        "Bill-Hates",
        "Ivan-Ivanov"
    };
 
    selSortChars(names, NUM_NAMES, SIZE);
 
    //Display all chars to test if sorted
    //  for (int i = 0; i < SIZE; i++)
    for (int i = 0; i < NUM_NAMES; i++) {
        cout << names[i] << endl;
    }
 
    system("pause");
    return 0;
}
// **************************************************** /
//
//            Begin Function Definitions
//
// **************************************************** /
 
// changed array declaration to 2D
 
void selSortChars(char array[][SIZE], int size, int num_char) //array is array[size][num_char]
{
    int startScan, minIndex;
 
    char minVal[SIZE]; // need constant SIZE, num_char won't work
 
    for (startScan = 0; startScan < (size - 1); startScan++) {
        minIndex = startScan;
        strcpy(minVal, array[startScan]);
 
        for (int index = startScan + 1; index < size; index++) {
            if ((strcmp(array[index], minVal)) < 0) {
                strcpy(minVal, array[index]);
                minIndex = index;
            }
        }
 
        strcpy(array[minIndex], array[startScan]);
        strcpy(array[startScan], minVal);
    }
}
ALEXKIRNAS
10 / 10 / 2
Регистрация: 27.06.2013
Сообщений: 151
27.08.2013, 22:14  [ТС]     Сортировка char -ровой матрицы #3
Belfegor, БОЛЬШОЕ СПАСИБО.
Ваша программа работе верно, но только с большими буквами. Если ввести такое:

aaaph\0
aaap\0

то получу:

aaaph\0
aaap\0

а нужно:

aaap\0
aaaph\0

P.S.: строке только маленькие буквы и знак "-".

Добавлено через 6 часов 25 минут
Можно ли использовать для этого QSort???? Если да, то как?
Belfegor
27.08.2013, 23:05
  #4

Не по теме:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <cstring>
#include <vector>
using std::vector;
#include <algorithm>
 
int main() {
    vector<std::string> v{
        {"aaaph"},
        {"aaap"}
    };
    std::sort(std::begin(v), std::end(v));
    for (std::string i : v)std::cout << i << '\n';
 
 
    return 0;
}
фтопку эти char8-)

rangerx
1931 / 1540 / 141
Регистрация: 31.05.2009
Сообщений: 2,908
28.08.2013, 02:55     Сортировка char -ровой матрицы #5
Цитата Сообщение от ALEXKIRNAS Посмотреть сообщение
Имеется char-рова матрица. Пусть ее размер и имя: а[3][21].
Цитата Сообщение от ALEXKIRNAS Посмотреть сообщение
В конечный программе массив будет динамический
Так двумерный символьный массив или всё-таки массив указателей на символьные массивы(строки)? Если второе, то можно воспользоваться std::sort, в противном случае из стандартных функций подойдёт только qsort(естественно, это не очень хороший вариант)...
ALEXKIRNAS
10 / 10 / 2
Регистрация: 27.06.2013
Сообщений: 151
28.08.2013, 19:31  [ТС]     Сортировка char -ровой матрицы #6
Уважаемый Belfegor, не могли б вы проверить свой код на наличие ошибок в каком-нибудь компиляторе?!?!?
У меня в MS Visual Studio C++ 2010 не компилируется. И могли бы вы объяснить как динамически заполнять массив?!?!?! (Если это массив. Я ничего не понимаю!)

Цитата Сообщение от rangerx Посмотреть сообщение
Так двумерный символьный массив или всё-таки массив указателей на символьные массивы(строки)? Если второе, то можно воспользоваться std::sort, в противном случае из стандартных функций подойдёт только qsort(естественно, это не очень хороший вариант)...
Могли бы вы рассказать как сделать для динамического массива или хотя бы дать силку.
Belfegor
Ghost
172 / 172 / 6
Регистрация: 16.09.2012
Сообщений: 524
28.08.2013, 19:42     Сортировка char -ровой матрицы #7
Цитата Сообщение от ALEXKIRNAS Посмотреть сообщение
проверить свой код на наличие ошибок
http://ideone.com/Ww2KJg
Цитата Сообщение от ALEXKIRNAS Посмотреть сообщение
MS Visual Studio C++ 2010 не компилируется
эта шлак IDE не поддерживает с++11;

Не по теме:

хотя может надо компилировать с ключом каким то там


Цитата Сообщение от ALEXKIRNAS Посмотреть сообщение
как динамически заполнять массив
какой массив? контейнер std::vector?
C++
1
2
3
4
vector<std::string> v{
        {"aaaph"},
        {"aaap"}
    };
?
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
#include <iostream>
#include <cstring>
using std::string;
#include <vector>
using std::vector;
#include <algorithm>
 
int main() {
    vector<std::string> v;
    //    {
    //        {"aaaph"},
    //        {"aaap"}
    //    };
    const int size = 2;
    string s;
    for (int i = 0; i < size; i++) {
        std::cin >> s;
        v.push_back(s);
    }
    std::sort(std::begin(v), std::end(v));
    //    for (std::string i : v)std::cout << i << '\n';
    for (int i = 0; i < size; i++) {
        std::cout << v[i] << '\n';
    }
 
    return 0;
}
Цитата Сообщение от ALEXKIRNAS Посмотреть сообщение
aaap\0
aaaph\0
http://ideone.com/hDuBzL
rangerx
1931 / 1540 / 141
Регистрация: 31.05.2009
Сообщений: 2,908
28.08.2013, 20:52     Сортировка char -ровой матрицы #8
Могли бы вы рассказать как сделать для динамического массива или хотя бы дать силку.
При условии, что под динамическим массивом вы понимаете массив указателей на C-строки:
подключаем
C++
1
2
#include <algorithm>
#include <cstring>
пишем функцию сравнения, которая будет использоваться функцией std::sort
C++
1
2
3
4
bool c_str_less(const char* s1, const char* s2)
{
    return strcmp(s1, s2) < 0;
}
сортируем
C++
1
2
3
// dynarray - массив
// n - количество элементов в массиве
std::sort(dynarray, dynarray + n, c_str_less);
Но с практической точки зрения проще/безопаснее использовать в качестве динамического массива класс std::vector, а в качестве строк класс std::string
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
 
int main()
{
    // объявляем динамический массив строк
    std::vector<std::string> v;
 
    // помещаем соответствующие строки в массив 
    v.push_back("Vasya-Pupkin");
    v.push_back("Bill-Hates");
    v.push_back("Ivan-Ivanov");
 
    // сортируем
    std::sort(v.begin(), v.end());
 
    // выводим на экран
    for(size_t i = 0; i < v.size(); ++i)
      std::cout << v[i] << '\n';
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.08.2013, 22:19     Сортировка char -ровой матрицы
Еще ссылки по теме:

Сортировка подсчетом для CHAR - C++
Всем привет! Нужно отсортировать с помощью сортировкой подсчетом строки по их разрядам. Есть пока что-то типо такого: void...

Сортировка массива указателей на char - C++
Есть массив указателей на char-ы. Нужно отсортировать их по алфавиту. Прошу помочь как можно скорее, если это возможно.

Сортировка цифр в строке типа char - C++
Здравствуйте! Помогите, пожалуйста, дописать программу. Прогррамма должна сортировать буквы или цифры во введенной строке. Например...

Сортировка слиянием для char элементов - C++
Ниже, мой код, который &quot;сортировкой слиянием&quot; сортирует числа...всё отлично работает. НО нужно сделать так, чтобы эта же программа, так же...

Сортировка элементов массивов указателей на char - C++
Ни как не получается отсортировать это. Помогите отладить прогу плиз int main() { _getch(); char *arrptrs = {&quot;g&quot;,&quot;e&quot;, ...


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

Или воспользуйтесь поиском по форуму:
ALEXKIRNAS
10 / 10 / 2
Регистрация: 27.06.2013
Сообщений: 151
28.08.2013, 22:19  [ТС]     Сортировка char -ровой матрицы #9
Всем БОЛЬШОЕ СПАСИБО!!!!!!
Я нашел ответ на свой вопрос!!!!!
Yandex
Объявления
28.08.2013, 22:19     Сортировка char -ровой матрицы
Ответ Создать тему
Опции темы

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