Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / C++ Новый топик    Ответить
Топик располагается на нескольких страницах: 1 2      [все]
 Как сделать рабочую сортировку по алфавиту?  [new]
Knicks12
Member

Откуда:
Сообщений: 6
Сортировка товара работает неправильно. Должно быть по алфавиту.
Вот код:

#include <iostream>

#include <string.h>

struct PRICE {
  char tov[80];
  int cost;
  char mag[80];
};
int main() {
  setlocale(LC_ALL, "Russian");
  int n;
  std::cout << "Введите количество структур\n";
  std::cin >> n; //Количество структур
  PRICE * arr = new PRICE[n]; //динамическое выделение памяти под массив структур
  std::cin.ignore(); //Когда мы смешиваем ввод строковых данных и чисел, то в число
  может попадать символ переноса строки.
  //Когда мы жмём клавишу Enter, ведь в память попадает символ, вот именно этот
  символ мы игнорируем принудительно.
  for(int i = 0; i < n; i++) //Ввод данных
  {
    std::cout << "Enter product name\n";
    std::cin.getline(arr[i].tov, 80);
    std::cout << "Enter your store name\n";
    std::cin.getline(arr[i].mag, 80);
    std::cout << "Enter price\n";
    std::cin >> arr[i].cost;
    std::cin.ignore();
  }
  char key;
  for (key = 'A'; key <= 'Z'; key++) //сортировка по алфавиту
  {
    for (int i = 0; i < n; i++) {
      if (arr[i].tov[0] == key) //вывод данных
      {
        std::cout <<
          "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n";
        std::cout << arr[i].tov << std::endl;
        std::cout << arr[i].mag << std::endl;
        std::cout << arr[i].cost << " Rub in " << std::endl;
      }
    }
  }
  int b = 0;
  std::string v;
  bool g = false;
  while (b == 0) {
    std::cout << "Enter product name: ";
    std::cin >> v;
    for (int i = 0; i < n; i++) {
      if (v == arr[i].tov) {
        std::cout << arr[i].tov << std::endl;
        std::cout << arr[i].mag << std::endl;
        std::cout << arr[i].cost << std::endl;
        g = true;
      }
    }
    if (g == false) {
      std::cout << "There is no such item" << std::endl;
    }
    std::cout << "Continue work? 0 - Yes 1 - No" << std::endl;
    std::cin >> b;
  }
  return 0;
}


Модератор: Пользуйся тегом SRC и отступами


Сообщение было отредактировано: 13 апр 21, 11:01
13 апр 21, 00:02    [22307899]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать рабочую сортировку по алфавиту?  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 53394

Knicks12
Должно быть по алфавиту.

Она и есть по алфавиту. Ты просто забыл добавить в это алфавит русские буквы.

Posted via ActualForum NNTP Server 1.5

13 апр 21, 00:25    [22307904]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать рабочую сортировку по алфавиту?  [new]
Knicks12
Member

Откуда:
Сообщений: 6
Dimitry Sibiryakov, то-есть вместо A и Z, поставить А и Я?
13 апр 21, 10:50    [22308053]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать рабочую сортировку по алфавиту?  [new]
бабушкин зайчик
Member

Откуда: сетевой
Сообщений: 205
зачем в C++ юзать
Knicks12
char tov[80];

когда есть string?
13 апр 21, 11:02    [22308060]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать рабочую сортировку по алфавиту?  [new]
xerxf
Member

Откуда:
Сообщений: 261
Knicks12,

ну, строго говоря - сортировки тут нет вообще. Есть вывод в определённом порядке.
А вообще - ну найдите вы у себя в группе кого нибудь, кто хоть что то соображает в плюсах, купите ему чего нибудь, да пусть напишет вам эти контрольные. что вы гуглите не пойми чего и даже не понимаете, чего нагуглили?

Сообщение было отредактировано: 13 апр 21, 11:18
13 апр 21, 11:22    [22308076]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать рабочую сортировку по алфавиту?  [new]
xerxf
Member

Откуда:
Сообщений: 261
кстати - а мне одному кажется, что это троллинг? настоящий студент то чей подробности бы выспрашивал, что да как делать...
13 апр 21, 11:25    [22308078]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать рабочую сортировку по алфавиту?  [new]
бабушкин зайчик
Member

Откуда: сетевой
Сообщений: 205
настоящих студентов ещё поискать
многим это программирование нах не сдалось, им бы армию прогулять и всё
13 апр 21, 12:15    [22308110]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать рабочую сортировку по алфавиту?  [new]
xerxf
Member

Откуда:
Сообщений: 261
ну вот автор видимо из таких. но в его случае проще сразу спрашивать за деньги
13 апр 21, 12:21    [22308118]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать рабочую сортировку по алфавиту?  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 53394

xerxf
строго говоря - сортировки тут нет вообще. Есть вывод в определённом порядке.

А "вывод в определённом порядке" отличается от "сортировки" чем?

Posted via ActualForum NNTP Server 1.5

13 апр 21, 12:30    [22308125]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать рабочую сортировку по алфавиту?  [new]
xerxf
Member

Откуда:
Сообщений: 261
Dimitry Sibiryakov

xerxf
строго говоря - сортировки тут нет вообще. Есть вывод в определённом порядке.

А "вывод в определённом порядке" отличается от "сортировки" чем?

после отработки цикла в каком порядке данные будут располагаться в памяти?
13 апр 21, 12:37    [22308131]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать рабочую сортировку по алфавиту?  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 53394

xerxf
после отработки цикла в каком порядке данные будут располагаться в памяти?

Без разницы, роль играет только порядок результата. После отработки "select ... order by"
порядок записей в таблице меняется?..

Posted via ActualForum NNTP Server 1.5

13 апр 21, 12:45    [22308140]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать рабочую сортировку по алфавиту?  [new]
xerxf
Member

Откуда:
Сообщений: 261
Dimitry Sibiryakov,

роль играет соответствие решения постановки задачи. ТС написал - неправильно работает сортировка. Сортировки тут нет вообще. Если бы он написал - товары выводятся не в том порядке - вопросов бы не было.
13 апр 21, 12:55    [22308150]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать рабочую сортировку по алфавиту?  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 53394

xerxf
ТС написал - неправильно работает сортировка. Сортировки тут нет вообще.

Есть. Это так называемая "сортировка вставками".

Posted via ActualForum NNTP Server 1.5

13 апр 21, 13:05    [22308156]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать рабочую сортировку по алфавиту?  [new]
Aklin
Member

Откуда: Прямо сейчас меня здесь нет
Сообщений: 62073
Dimitry Sibiryakov
xerxf

Есть. Это так называемая "сортировка вставками".
Здесь нет вставки.

Да и не по алфавиту это.
А по первым буквам.



АВТОР.
У тебя есть пример сортировки ну хотя бы целых чисел?
13 апр 21, 13:13    [22308162]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать рабочую сортировку по алфавиту?  [new]
xerxf
Member

Откуда:
Сообщений: 261
Dimitry Sibiryakov,

Ткните пожалуйста пальцем, где здесь сортировка хоть вставкой, хоть чем, в результате которой меняется порядок данных в исходной структуре
13 апр 21, 13:13    [22308163]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать рабочую сортировку по алфавиту?  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 53394

Aklin
Здесь нет вставки.

"std::cout <<" это есть вставка в выходной поток, не так ли?..

Posted via ActualForum NNTP Server 1.5

13 апр 21, 13:26    [22308179]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать рабочую сортировку по алфавиту?  [new]
xerxf
Member

Откуда:
Сообщений: 261
Dimitry Sibiryakov

Aklin
Здесь нет вставки.

"std::cout <<" это есть вставка в выходной поток, не так ли?..

эээээ.... это вот сейчас серьёзно было?
Я так понимаю БДшник? ответьте тогда на вопрос - индексация таблицы равны выводу данных из таблицы в нужном порядке ?
13 апр 21, 13:42    [22308195]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать рабочую сортировку по алфавиту?  [new]
xerxf
Member

Откуда:
Сообщений: 261
Dimitry Sibiryakov

Aklin
Здесь нет вставки.

"std::cout <<" это есть вставка в выходной поток, не так ли?..

А что - удобный способ решения некоторого класса задач. :-) Типа вставить в какую то там позицию значение - std::cout <<позиция<<значение :-))))
13 апр 21, 13:46    [22308199]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать рабочую сортировку по алфавиту?  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 53394

xerxf
это вот сейчас серьёзно было?

Более чем. Прочитайте хотя бы половину третьего тома Кнута. Первую.

Posted via ActualForum NNTP Server 1.5

13 апр 21, 13:48    [22308201]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать рабочую сортировку по алфавиту?  [new]
petrav
Member

Откуда:
Сообщений: 2944
Dimitry Sibiryakov

xerxf
это вот сейчас серьёзно было?

Более чем. Прочитайте хотя бы половину третьего тома Кнута. Первую.

Вы прочитали все три тома Кнута?!
13 апр 21, 13:49    [22308202]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать рабочую сортировку по алфавиту?  [new]
xerxf
Member

Откуда:
Сообщений: 261
Dimitry Sibiryakov,

и после прочтения именно первой половины третьего тома у меня сотрётся понимание разницы между выводом и сортировкой? Я пожалуй воздержусь тогда :-)
задам уточняющий вопрос - а если я захочу второй раз вывести уже отсортированный по вашему мнению вставкой массив - мне ведь не надо будет никаких условий писать, ничего?вот просто вывод в одинарном цикле и всё, всё выведится в нужном порядке? а если операия сравнения дорогая (я не про этот пример, а про подход в принципе), то после первой сортировки вставкой все последующие обращения к массивубудут идти быстро и в нужном порядке, да?
13 апр 21, 14:07    [22308218]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать рабочую сортировку по алфавиту?  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 53394

xerxf
и после прочтения именно первой половины третьего тома у меня сотрётся понимание разницы
между выводом и сортировкой?

При некотором везении у Вас отпадут шоры, заставляющие считать сортировкой только пузырёк
по массиву.

Posted via ActualForum NNTP Server 1.5

13 апр 21, 14:21    [22308231]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать рабочую сортировку по алфавиту?  [new]
xerxf
Member

Откуда:
Сообщений: 261
Dimitry Sibiryakov,

ну так наставьте на путь истинный -ответьте хоть на один мой уточняющий вопрос
13 апр 21, 14:28    [22308239]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать рабочую сортировку по алфавиту?  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 9651
Поддерживаю. В коде автора вообще бред, как это не называй.

Aklin
Да и не по алфавиту это.
А по первым буквам.
13 апр 21, 15:38    [22308310]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать рабочую сортировку по алфавиту?  [new]
Dima T
Member

Откуда:
Сообщений: 15795
Если уж С++ то std::sort просится.
13 апр 21, 16:00    [22308330]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать рабочую сортировку по алфавиту?  [new]
mayton
Member

Откуда: loopback
Сообщений: 51389
Собственно приложение решает разные задачи. Ввод данных. Некую группировку (или ранжирование) по первой букве.
Причем ограниченного диапазона. И некую фильтрацию.

Сортировки в общем понимании этого слова тут нет. Но есть что-то похожее на начало Radix-Sort.

Короче лаба в таком виде никуда не годится. Но нужен оригинальный текст чтоб понять чего надо.
13 апр 21, 21:52    [22308474]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: 1 2      [все]
Все форумы / C++ Ответить