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

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

Войти
Регистрация
Восстановить пароль
 
Kenner
1 / 1 / 0
Регистрация: 25.08.2011
Сообщений: 27
#1

Сортировка слов из массива по алфавиту - C++

22.11.2013, 00:09. Просмотров 887. Ответов 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
29
30
31
32
33
34
35
36
37
#include<iostream> 
#include <locale.h>
using namespace std;
const int n=10; 
void sort(char *[]);
int main(){ 
    setlocale(LC_ALL, "Ukrainian");
    char *s[n]={"Ланівці","КопичинцівЂЋ","Заліщики‎","Чортків‎","Скалат‎","Зборів","Бережани","Шумськ","Кременець‎","Бучач‎"};
    int k=0;
    cout<<"До сортування:"<<endl;
    for(int i=0;i<n;i++) 
        cout<<s[i]<<endl;
    sort(&s[n]);
system("pause"); 
}
void sort(char *s[n])
{
    int k=0;
    for(int i=0;i<n-1;i++)
        for (int j=i+1; j<n; j++)
        {   k=0;
            if (s[i]!=s[j]){
                while (s[i][k]==s[j][k]) k++;
                if (s[i][k]>s[j][k]) 
                { 
                    char *s2=s[i]; 
                    s[i]=s[j]; 
                    s[j]=s2; 
 
                }
            }
        }
    cout<<endl<<"Після сортування:"<<endl;
    for(int i=0;i<n;i++) 
        cout<<s[i]<<endl; 
    
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.11.2013, 00:09     Сортировка слов из массива по алфавиту
Посмотрите здесь:

Сортировка слов в строке по алфавиту C++
C++ Сортировка слов по алфавиту методом выбора.
C++ Сортировка слов по алфавиту
C++ Сортировка слов в строке по алфавиту
C++ Сортировка слов по алфавиту с ипользованием классов
C++ Сортировка слов по алфавиту
C++ Сортировка слов в строке в лексикографическом порядке (по алфавиту)
Сортировка слов в предложении по алфавиту C++
Сортировка слов по алфавиту C++
Сортировка слов из массива по алфавиту C++
Сортировка слов в char по алфавиту C++
C++ Удаление слов одинаковой длины и сортировка их по алфавиту

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
newb_programmer
237 / 237 / 19
Регистрация: 03.09.2011
Сообщений: 555
22.11.2013, 11:09     Сортировка слов из массива по алфавиту #2
Kenner, не знаю в этом ошибка или нет. передавайте в функцию размер массива
C++
1
2
3
4
5
6
7
void sort(char *,int);
 
char s[n]...
 
sort(s,n);
 
void sort(char *s,int n)
Добавлено через 3 минуты
и как оно у вас работало вот с этим
C++
1
if (s[i][k]>s[j][k])
помню сам когда-то так сравнивал слова и получился эпик фейл. вроде надо функцией типа strcmp() сравнивать
Kenner
1 / 1 / 0
Регистрация: 25.08.2011
Сообщений: 27
22.11.2013, 13:53  [ТС]     Сортировка слов из массива по алфавиту #3
Дальше ошибка. Когда я делал без функций, все отлично сравнивало. Сейчас понятия не имею что не так(

Добавлено через 19 минут
Все. Проблему решил. Вставляю код, если кому понадобится.

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
#include<iostream> 
#include <locale.h>
using namespace std;
const int n=10; 
void sort(char *[]);
int main(){ 
    setlocale(LC_ALL, "Ukrainian");
    char *s[n]={"Ланівці","Копичинці;","Заліщики;","Чортків;","Скалат;","Зборів","Бережани","Шумськ","Кременець;","Бучач;"};
    int k=0;
    cout<<"До сортування:"<<endl;
    for(int i=0;i<n;i++) 
        cout<<s[i]<<endl;
    sort(s);
system("pause"); 
}
void sort(char *s[n])
{
    int k=0;
    for(int i=0;i<n-1;i++)
        for (int j=i+1; j<n; j++)
        {   k=0;
            if (s[i]!=s[j]){
                while (s[i][k]==s[j][k]) k++;
                if (s[i][k]>s[j][k]) 
                { 
                    char *s2=s[i]; 
                    s[i]=s[j]; 
                    s[j]=s2; 
 
                }
            }
        }
    cout<<endl<<"Після сортування:"<<endl;
    for(int i=0;i<n;i++) 
        cout<<s[i]<<endl; 
    
}
Qwertiy
818 / 626 / 75
Регистрация: 20.08.2013
Сообщений: 2,525
22.11.2013, 13:58     Сортировка слов из массива по алфавиту #4
Цитата Сообщение от Kenner Посмотреть сообщение
sort(&s[n]);
Хм.. А оно вообще компилировалось?
Kenner
1 / 1 / 0
Регистрация: 25.08.2011
Сообщений: 27
22.11.2013, 14:26  [ТС]     Сортировка слов из массива по алфавиту #5
Qwertiy, да, но сразу выбивало ерор))
Qwertiy
818 / 626 / 75
Регистрация: 20.08.2013
Сообщений: 2,525
22.11.2013, 16:54     Сортировка слов из массива по алфавиту #6
Цитата Сообщение от Kenner Посмотреть сообщение
да
Тьфу.. Невнимательно смотрел. Конечно да - там же адрес строки, соответственно тип верный.
Кстати, с &s[0] работало бы правильно. Но просто s лучше
Yandex
Объявления
22.11.2013, 16:54     Сортировка слов из массива по алфавиту
Ответ Создать тему
Опции темы

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