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

Непонятки с сортировкой

15.11.2016, 16:12. Показов 907. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый вечер.
Практически выполнил задание, но в конце возникла проблема с сортировкой, а именно, в задании нужно ввести название товара, магазина и цену.
После чего нужно вывести на экран информацию о товарах, продающихся в магазине, название которого введено с клавиатуры.
Здесь внимание:
Записи должны быть размещены в алфавитном порядке по названиям магазинов, при наличии 2-х одинаковых магазинов, они идут в точно таком же порядке, как и в исходном массиве, сортировка по названию товара или по цене отсутствует.
Пример входных данных:

Printer Yulmart 5820
Shkaf Ikea 3530
Kholodilnik Zakazhi 31999
Kastryulya Perekrestok 920
Skovoroda Zakazhi 1770
Televizor Sitilink 22700
Noutbuk Yulmart 19995
Divan Metrika 13980
Metrika

Пример выходных данных:

Shkaf Ikea 3530
Divan Metrika 13980
Kastryulya Perekrestok 920
Televizor Sitilink 22700
Printer Yulmart 5820
Noutbuk Yulmart 19995

Kholodilnik Zakazhi 31999
Skovoroda Zakazhi 1770
Divan 13980

А вот мой вывод:
Shkaf Ikea 3530
Divan Metrika 13980
Kastryulya Perekrestok 920
Televizor Sitilink 22700
Noutbuk Yulmart 19995
Printer Yulmart 5820

Kholodilnik Zakazhi 31999
Skovoroda Zakazhi 1770
Divan 13980

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
#include <iostream>
#include <string>
using namespace std;
 
const int N = 8;
 
struct PRICE {
    char name[15];
    char shop[15];
    char nshop[15];
    int price;
    bool g;
 
};
 
void sortirovka(PRICE *struk, const int N);
 
int main()
{
 
    PRICE struk[N + 1];
 
    for (int i = 0; i <= 7; i++) {
        cin >> struk[i].name;
        cin >> struk[i].shop;
        cin >> struk[i].price;
    }
 
 
    sortirovka(struk, N);
 
    bool g = false;
    char nshop[15];
    cin >> nshop;
 
    for (int i = 0; i < N; i++)
    {
        cout << struk[i].name << " ";
        cout << struk[i].shop << " ";
        cout << struk[i].price << endl;
 
    }
 
    for (int i = 0; i < N; i++)
        if (strstr(nshop, struk[i].shop)) {
            g = true;
            cout << struk[i].name << " " << struk[i].price;
        }
 
 
    if (!g) {
        cout << "No";
    }
 
    return 0;
}
 
void sortirovka(PRICE *struk, const int N)
{
    PRICE tmp;
    for (int t = 0; t < N; t++)
        for (int i = 0; i < N; i++) {
            if (struk[i].shop[0] > struk[t].shop[0])
            {
                tmp = struk[i];
                struk[i] = struk[t];
                struk[t] = tmp;
            }
        }
}
Как видите, Printer Yulmart был введен раньше, но выводится после Noutbuk Yulmart 19995, который был введен после.
Помогите пожалуйста! Не понимаю как это исправить
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.11.2016, 16:12
Ответы с готовыми решениями:

Непонятки с сортировкой данных в структуре (Осторожно, увиденного не развидеть.)
Доброго времени суток каждому из вас. Попытался осуществить сортировку данных в структуре,...

Отсортировать одномерный массив, заполненный случайными числами, сортировкой Шелла и сортировкой выбором
Отсортировать одномерный массив, заполненный случайными числами, сортировкой Шелла и сортировкой...

Сортировать массив символов обменной, карманной сортировкой, сортировкой вставками
Сортировать массив символов обменной, карманной сортировкой, сортировкой вставками . Оценить...

Сортировать числовой файл обменной сортировкой, сортировкой вставками
Уааа, ребят помогите пожалуйста, уже просто мозги кипят не знаю что делать. Задание: ...

4
93 / 69 / 22
Регистрация: 17.10.2011
Сообщений: 235
15.11.2016, 16:57 2
попробуй
C++
1
62:... for (int i = t+1; ...
0
0 / 0 / 0
Регистрация: 19.04.2016
Сообщений: 42
15.11.2016, 17:16  [ТС] 3
Цитата Сообщение от vndtta Посмотреть сообщение
попробуй
1
62:... for (int i = t+1; ...
Попробовал, неправильно
Вот что выводит в вашем варианте:
Kholodilnik Zakazhi 31999
Skovoroda Zakazhi 1770
Printer Yulmart 5820
Noutbuk Yulmart 19995
Televizor Sitilink 22700
Kastryulya Perekrestok 920
Divan Metrika 13980
Shkaf Ikea 3530
Divan 13980

Добавлено через 11 минут
Вообще я думал, что это автоматически должно происходить, странно как-то
0
385 / 279 / 478
Регистрация: 09.05.2014
Сообщений: 769
15.11.2016, 17:23 4
Лучший ответ Сообщение было отмечено Дриддерс как решение

Решение

потому, что во время очередного прохода запись принтера из юлмарта меняется с записью дивана из метрики, которая находится ПОСЛЕ записи юлмартовского ноутбука. вывод- сортировка выбором в даном случае не катит. сортировка пузырьком по идее должна дать нужный результат. не все сортировки одинаково полезны
1
0 / 0 / 0
Регистрация: 19.04.2016
Сообщений: 42
15.11.2016, 20:19  [ТС] 5
Столько времени потратил на то, чтобы понять как это исправить, сделал как вы сказали, сортировкой пузырьком, все заработало -_-
Спасибо большое!)
0
15.11.2016, 20:19
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.11.2016, 20:19
Помогаю со студенческими работами здесь

Не понятно с сортировкой!
Добрый вечер! Возникла неясность с пузырьковой сортировкой. В чём загвоздка? В задании надо...

Проблемы с сортировкой
Доброго времени Имеется база данных access со следующими полями: Дата Наименование...

Задача с сортировкой
Доброго, знатоки! Как будет выглядеть код такой задачи и сложно ли это для не очень подготовленного...

Проблемы с сортировкой.....
Я с помощью DAO добавляю данные в таблице 'Списки'. Как мне эти данные потом отсортировать по...


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

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