С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 10.10.2020
Сообщений: 9
1

Вставка новой фамилии после заданной так, чтобы алфавитный порядок не нарушился

25.02.2021, 19:18. Показов 1057. Ответов 2

Author24 — интернет-сервис помощи студентам
Ребят, помогите решить задачу!

Дан массив из строк (например, фамилий). Отсортировать его по алфавиту и написать процедуру вставки новой фамилии после заданной так, чтобы алфавитный порядок не нарушился. Предусмотреть ситуацию, когда массив заполнен «до отказа» и вставка нового элемента невозможна.

Написал код, который сортирует имена в алфавитном порядке и, при помощи бинарного поиска, определяет, есть ли элемент в массиве. Если нет, то добавляет новый, вводя его с клавиатуры. Никак не могу написать цикл добавления элементов до заполнения "до отказа", как указано в условии.

Мой код:
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#include <iostream>
#include <windows.h>
#include <conio.h>
#include <string>
using namespace std;
 
void main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    int const SIZE = 5;
    string arr[SIZE] = { "Иван", "Денис", "Пётр", "Александр", "Валерий" };
    string key;
 
    cout << "Имена в изначальном порядке: " << endl;
    for (int i = 0; i < SIZE; i++)
    {
        cout << arr[i] << " ";
    }
    cout << endl;
 
    for (int i = 0; i < SIZE; i++)
    {
        string key = arr[i];
        int j = i - 1;
 
        while (j >= 0 && arr[j] > key)
        {
            arr[j + 1] = arr[j];
            arr[j] = key;
            j--;
        }
    }
    cout << "\nИмена, отсортированные в алфавитном порядке: " << endl;
    for (int i = 0; i < SIZE; i++)
    {
        cout << arr[i] << " ";
    }
    cout << endl;
 
        bool flag = false;
        int l = 0; 
        int r = 5;
        int mid;
 
        cout << endl << "Введите слово: ";
        cin >> key; 
 
        while ((l <= r) && (flag != true))
        {
            mid = (l + r) / 2; 
 
            if (arr[mid] == key)
                flag = true; 
 
            if (arr[mid] > key)
                r = mid - 1; 
 
            else l = mid + 1;
        }
 
        if (flag) cout << "\nИндекс имени " << key << " в массиве равен: " << mid;
        else
        {
            cout << "\nТакого имени в массиве нет\n";
            int const SIZE = 6;
            string arr[SIZE] = { "Иван", "Денис", "Пётр", "Александр", "Валерий", key };
            string key;
 
            for (int i = 0; i < SIZE; i++)
            {
                string key = arr[i];
                int j = i - 1;
 
                while (j >= 0 && arr[j] > key)
                {
                    arr[j + 1] = arr[j];
                    arr[j] = key;
                    j--;
                }
            }
            cout << "\nМассив с добавленным новым именем, отсортированным в алфавитном порядке: " << endl;
            for (int i = 0; i < SIZE; i++)
            {
                cout << arr[i] << " ";
            }
            cout << endl;
 
        }
 
    _getch();
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.02.2021, 19:18
Ответы с готовыми решениями:

Найти первый элемент на котором нарушился порядок размещения элементов массива по убыванию
нужно найти первый элемент на котором нарушился порядок размещения элементов массива по...

Алфавитный порядок
Салют народ!!! Меня очень заинтересовала одна задачка, друг сказал, что она элементарная. Но мне...

Алфавитный порядок
Приветик друзья. Нужна ваша помощь. Столкнулась с задачкой впринципи не очень сложно, но имею...

Алфавитный порядок.
Не могу понять: Вывести в порядке, обратном к алфавитному, слова текста удовлетворяющие таким то...

2
Модератор
Эксперт С++
13710 / 10910 / 6476
Регистрация: 18.12.2011
Сообщений: 29,133
25.02.2021, 19:23 2
Цитата Сообщение от neIgor Посмотреть сообщение
вставки новой фамилии после заданной
Цитата Сообщение от neIgor Посмотреть сообщение
так, чтобы алфавитный порядок не нарушился
Эти 2 условия противоречат друг-другу

Или имеется ввиду, что если нарушается, то не вставлять?
0
0 / 0 / 0
Регистрация: 10.10.2020
Сообщений: 9
25.02.2021, 19:30  [ТС] 3
Сам до конца не понял это. Думал, сначала добавить элемент в массив, а потом уже отсортировать в алфавитном порядке.
0
25.02.2021, 19:30
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.02.2021, 19:30
Помогаю со студенческими работами здесь

Алфавитный порядок
Салют форумчани!!!! У меня проблемка... Очень надо решить эту задачю на C#, а у меня с этим...

Алфавитный порядок
Нужно изменить строку так, чтобы каждый символ строки расположился в алфавитном порядке string...

Алфавитный порядок
СП, располагающую гласные буквы, встречающиеся одновременно в словах X и Y, в алфавитном порядке

Алфавитный порядок
Подскажите пожалуйста ,как сделать в форме имеется элемент список -как сделать чтобы выбор из него...

Алфавитный порядок строки
Всем Доброго Времени Суток! Прошу помощи в решении задачи: Дан не пустой текст из заглавных...

Строка, алфавитный порядок
Пожалуйста, помогите сделать задачу, уже 3ю неделю над ней страдаю! Написать и протестировать...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru