С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
0 / 0 / 2
Регистрация: 15.12.2014
Сообщений: 121

Сортировка строк через указатели

25.03.2015, 14:57. Показов 1653. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Создать массив строк на 10 ячеек, заполнить его при инициализации и отсортировать строки по алфавиту (с помощью указателей).

Вот код:
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
#include <iostream>
#define N 10
using namespace std;
 
int main()
{   int i,j;
    char words[N][30], cur[30];
    cout<<"Your words:\n";
    for(i=0;i<N;i++)
        cin.getline(words[i],30);
 
    for(i=0;i<N-1;i++)
        for(j=i+1;j<N;j++)
            if(strcmp(words[i],words[j])>0)
            {  strcpy(cur,words[i]);
                strcpy(words[i],words[j]);
                strcpy(words[j],cur);
            }
    cout<<"Results:\n";
    for(i=0;i<N;i++)
        cout<<words[i]<<"\n";
    
    cin.sync(); cin.get();
    return 0;
}
Как сюда добавить указатели?
И чем можно заменить cin.getline, strcmp и strcpy (не используя string). Не интересует готовый метод Sort, или LINQ запросы, или другие готовые методы.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.03.2015, 14:57
Ответы с готовыми решениями:

Сортировка массива через указатели
как отсортировать по среднему балу именно таким способом, через **ppStAr? Ошибка IntelliSense: no suitable conversion function from...

Сортировка через ссылку на (указатель на указатели)
Нужно, что бы функция принимала ссылку на указатель на много указателей,( и количество указателей, ясен пень.) И сортировала все ето,...

Сортировка массива типа string через указатели
Итак, пытаюсь реализовать сортировку строкового массива. Почти все сделал, но встал на одном месте и никак не могу понять, как её решить. ...

10
2393 / 1914 / 763
Регистрация: 27.07.2012
Сообщений: 5,558
25.03.2015, 15:02
C++
1
2
3
char * words[N];
for (int i = 0; i < N; ++i)
    words[i] = new char[30];
Добавлено через 29 секунд
Цитата Сообщение от a4temer Посмотреть сообщение
И чем можно заменить cin.getline, strcmp и strcpy (не используя string).
Ну самому реализовать эти функции, если конечно не лень.
0
0 / 0 / 2
Регистрация: 15.12.2014
Сообщений: 121
25.03.2015, 15:07  [ТС]
John Prick,
Цитата Сообщение от John Prick Посмотреть сообщение
Ну самому реализовать эти функции, если конечно не лень.
Как их реализовать?
0
2393 / 1914 / 763
Регистрация: 27.07.2012
Сообщений: 5,558
25.03.2015, 15:15
Например, копирование:
C++
1
2
3
4
5
6
void string_copy(const char * in, char * out)
{
    while (in)
        *(out++) = *(in++);
    *out = '\0';
}
0
0 / 0 / 2
Регистрация: 15.12.2014
Сообщений: 121
25.03.2015, 15:21  [ТС]
John Prick,
Цитата Сообщение от John Prick Посмотреть сообщение
Например, копирование:
C++
1
2
3
4
5
6
void string_copy(const char * in, char * out)
{
* * while (in)
* * * * *(out++) = *(in++);
* * *out = '\0';
}
А как реализовать сортировку?
0
2393 / 1914 / 763
Регистрация: 27.07.2012
Сообщений: 5,558
25.03.2015, 15:27
Она уже реализована у тебя. Ничего не поменяется.
0
0 / 0 / 2
Регистрация: 15.12.2014
Сообщений: 121
25.03.2015, 15:34  [ТС]
John Prick, можете скинуть код и все подробно объяснить?
0
2393 / 1914 / 763
Регистрация: 27.07.2012
Сообщений: 5,558
25.03.2015, 15:36
a4temer, у меня нет никакого кода. Я смотрю только на то, что ты выложил в первом сообщении.
0
0 / 0 / 2
Регистрация: 15.12.2014
Сообщений: 121
25.03.2015, 15:47  [ТС]
John Prick, можешь в мой код что я выложил внедрить
Цитата Сообщение от John Prick Посмотреть сообщение
char * words[N];
C++
1
2
for (int i = 0; i < N; ++i)
* * words[i] = new char[30];
и
Цитата Сообщение от John Prick Посмотреть сообщение
C++
1
2
3
4
5
6
void string_copy(const char * in, char * out)
{
* * while (in)
* * * * *(out++) = *(in++);
* * *out = '\0';
}
а то я не понимаю как это сделать.
0
2393 / 1914 / 763
Регистрация: 27.07.2012
Сообщений: 5,558
25.03.2015, 15:51
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>
#define N 10
using namespace std;
 
void string_copy(const char * in, char * out)
{
    while (in)
        *(out++) = *(in++);
    *out = '\0';
}
 
int main()
{   int i,j;
    char cur[30];
 
    char * words[N];
    for (int i = 0; i < N; ++i)
        words[i] = new char[30];
 
    cout<<"Your words:\n";
    for(i=0;i<N;i++)
        cin.getline(words[i],30);
 
    for(i=0;i<N-1;i++)
        for(j=i+1;j<N;j++)
            if(strcmp(words[i],words[j])>0)
            {  string_copy(cur,words[i]);
                string_copy(words[i],words[j]);
                string_copy(words[j],cur);
            }
    cout<<"Results:\n";
    for(i=0;i<N;i++)
        cout<<words[i]<<"\n";
    
    cin.sync(); cin.get();
    return 0;
}
Добавлено через 2 минуты
Хотя? в этом случае копирование строк - лишняя трата времени. Достаточно просто менять указатели местами:
C++
1
2
3
4
5
6
7
8
   for(i=0;i<N-1;i++)
        for(j=i+1;j<N;j++)
            if(strcmp(words[i],words[j])>0)
            {  
                char * temp = words[i];
                words[i] = words[j];
                words[j] = temp;
            }
0
0 / 0 / 2
Регистрация: 15.12.2014
Сообщений: 121
25.03.2015, 18:54  [ТС]
John Prick, вот код
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
#include <iostream>
#define N 10
using namespace std;
 
int main()
{
    int i, j;
    char cur[30];
 
    char * words[N];
    for (int i = 0; i < N; ++i)
        words[i] = new char[30];
 
    cout << "Your words:\n";
    for (i = 0; i<N; i++)
        cin.getline(words[i], 30);
 
    for (i = 0; i<N - 1; i++)
    for (j = i + 1; j<N; j++)
    if (strcmp(words[i], words[j])>0)
    {
        char * temp = words[i];
        words[i] = words[j];
        words[j] = temp;
    }
    cout << "Results:\n";
    for (i = 0; i<N; i++)
        cout << words[i] << "\n";
 
    return 0;
}
как переделать его под функции ну чтоб одна функция заполнения была вторая сортировки и третья вывода результата, а то я делаю а мне мусор выводит.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.03.2015, 18:54
Помогаю со студенческими работами здесь

Сортировка объектов через указатели, основанная на алфавитном порядке имен
Нашел в книге пример сортировки объектов, содержащих поле типа string, через указатели. Сортировка основана на алфавитном порядке имен....

Сортировка строк через функции
Создать массив строк на 10 ячеек, заполнить его при инициализации и отсортировать строки по алфавиту (с помощью указателей). Вот код: ...

Через указатели на указатели посчитать сумму двух чисел и записать в третье
1. Через указатели на указатели посчитать сумму двух чисел и записать в третье. 2. Написать примитивный калькулятор, пользуясь только...

Написать программу сортировки через указатели на указатели
Вот моя программа #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;string&gt; using namespace std; //Сортировка...

Заполнение массива через rand и вывод на экран через указатели
Учитель задал заполнить массивы и случайными числами и вывезти на экран через указатели, через функцию rand выводит как вы понимаете одни...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru