Таким образом, ОП спросил, как получить ввод от пользователя и отсортировать его.И не предопределенная строка в данном массиве символов.
Я дам ответ.Но вопрос помечен с C ++, и я, кстати, преобразую его в C ++.
.Код в вопросе является копией один к одному из GeeksforGeeks и пытается закодировать так называемый алгоритм подсчета сортировки в C ++, который описан здесь .
Так каккод взят из GeeksforGeeks Мне, к сожалению, нужно обвинить пользователя "rathbhupendra" в действительно плохом коде C ++.Мне очень жаль
Код использует:
- Массивы в стиле C
- Массивы переменной длины (расширение компилятора. Не совместимо с C ++)
- strlen
- memset
#include<bits/stdc++.h> and #include<string.h>
- с использованием пространства имен std
- необычные условия завершения в циклах for
for(i = 0; arr[i]; ++i)
- массивы символов вместо
std::string
s - Макрос для определения размера массива (
#define RANGE 255
)
Итак, ничего C ++.
А теперь, ответ.
Вам нужно прочитать строку от пользователя в переменной типа std::string
с помощью функции std::getline
.
Std :: string можно использовать как массив символов.Без разницы.
Пожалуйста, смотрите решение C ++:
РЕДАКТИРОВАТЬ
Отредактировано по комментариям MichaelDorgan
#include <iostream>
#include <string>
#include <vector>
constexpr size_t AsciiRange = 256;
// Convert signed char to unsigned size_t type.
inline size_t char2sizet(char c) { return static_cast<size_t>(static_cast<unsigned char>(c)); }
void countSort(std::string& stringToSort)
{
std::vector<size_t> count(AsciiRange, 0U);
size_t i { 0U };
for (i = 0U; i < stringToSort.size(); i++) {
count[char2sizet(stringToSort[i])]++;
}
for (i = 1U; i < AsciiRange; ++i) {
count[i] += count[i - 1U];
}
std::string output(stringToSort);
for (i = 0U; i < stringToSort.size(); ++i) {
output[count[char2sizet(stringToSort[i])] - 1U] = stringToSort[i];
--count[char2sizet(stringToSort[i])];
}
stringToSort = output;
}
int main()
{
std::cout << "\nPlease enter a string:\n\n";
// Get the string from the user
std::string inputString{};
getline(std::cin, inputString);
// Sort it by characters
countSort(inputString);
// Show result
std::cout << "\n\n\nString sorted by characters is:\n\n" << inputString << '\n';
return 0;
}
Надеждаэто помогает .,.