1

Тема: Рядки

Дано завдання : Упорядкувати даний масив англійських слів за алфавітом.

Я так розумію це потрібно робити через strcmp і вказівники. Тепер тільки питання як зробити це правильно
Знайшла потрібний код, але так і не змогла розібратися, що в ньому не так

#include <iostream>
#include <string.h>

using namespace std;

int main()
{
    setlocale(LC_ALL, "ukr");
    cout << "Впишіть слова" << endl;

    char** mass = new char* [8];
    for (int i = 0; i < 7; i++) {
        mass[i] = new char[20];
        cin >> mass[i];
    }
    for (int i = 0; i < 8; i++) {
        for (int j = i + 1; j < 8; j++) {
            if (strcmp(mass[i], mass[j]) > 0) {
                char* tmp = mass[i];
                mass[i] = mass[j];
                mass[j] = tmp;
            }
        }
    }
    for (int i = 0; i < 8; i++) {
        cout << mass[i] << endl;
    }


}

2 Востаннє редагувалося tchort (13.12.2020 00:26:07)

Re: Рядки

Спробуйте перш ніж запитувати пошукати англійською(не те що ви тут не отримаєте відповіді, тут зазвичай відповідають коли питання комусь буде цікаве, але на тривіальні питання ви зможете знайти собі відповідь швидше пошукавши самі, ніж запитуючи на форумах і чекаючи відповіді.)
Наприклад ви бачили оці зразки коду? :
https://www.tutorialride.com/cpp-string … rogram.htm
https://www.includehelp.com/cpp-program … order.aspx

але так і не змогла розібратися, що в ньому не так

Ви хоч би виділили місця з якими у вас труднощі. Він не працює? Помилки компіляції?...

3 Востаннє редагувалося wander (13.12.2020 00:47:41)

Re: Рядки

Ну, що ж ви виділяєте пам'ять під 7 елементів, а прочитати намагаєтесь зі всіх 8?

for (int i = 0; i < 7; i++) {
...
for (int i = 0; i < 8; i++) {

Я б вам радив для таких випадків (щоб не заплутатись) завести собі константи, які б позначали розмір масиву.

unsigned const rows = 8;
unsigned const cols = 20;

char** mass = new char*[rows];
for (int i = 0; i < rows; i++) {
    mass[i] = new char[cols];
    cin >> mass[i];
}
// ...
for (int i = 0; i < rows; i++) {
    for (int j = i + 1; j < rows; j++) {
// ...

4

Re: Рядки

xrustuna112 написав:

Знайшла потрібний код, але так і не змогла розібратися, що в ньому не так

Тобто:
1. Це потрібний код
2. На вашому рівні знать там усе так

То в чому проблема? Здавайте. А це форум програмістів, а не людей, які гуглять код. Почитайте, може, щось дійде.

5 Востаннє редагувалося Droid 77 (13.12.2020 15:05:05)

Re: Рядки

xrustuna112, Вам пан tchort дав дуже слушну пораду:

tchort написав:

Спробуйте перш ніж запитувати пошукати англійською

Посилання на англомовний ресурс
Код з попереднього посилання
/* C++ Program - Sort String in Alphabetical Order */

#include <iostream>
#include <cstring>

int main()
{
    char str[5][20], t[20];
    int i, j;
    std::cout << "Enter any five string (name) : \n";
    for (i = 0; i < 5; i++)
    {
        std::cin >> str[i];
    }
    for (i = 1; i < 5; i++)
    {
        for (j = 1; j < 5; j++)
        {
            if (strcmp(str[j - 1], str[j]) > 0)
            {
                strcpy(t, str[j - 1]);
                strcpy(str[j - 1], str[j]);
                strcpy(str[j], t);
            }
        }
    }
    std::cout << "Strings (Names) in alphabetical order : \n";
    for (i = 0; i < 5; i++)
    {
        std::cout << str[i] << "\n";
    }
}

Але я теж як і Ви xrustuna112 нагуглив і ніфіка не зрозумів. Бо не став писати самостійно і напружуватись для розуміння теми..

P. S.
Ти ба..
Ось ще нагуглив:
Сортування слів (стрічок) за алфавітом з урахуванням літер і, є, ї, ґ
Як відсортувати строки за алфавітом?
:)

6

Re: Рядки

Droid 77 написав:

P. S.
Ти ба..

Для цього форум і робився.