Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Напишите программу на с++

Михаил Ликман Ученик (102), закрыт 4 года назад
Напишите программу, которая определяет, есть ли во введённой строке десятичные цифры, и выводит наибольшее число, которое можно составить из этих цифр. Ведущих нулей в числе быть не должно (за исключением числа 0, запись которого содержит ровно одну цифру). Если цифр нет, программа должна вывести число -1.

Входные данные

Входная строка содержит произвольные символы.

Выходные данные

Программа должна вывести наибольшее число, которое можно составить из присутствующих в строке десятичных цифр, или число -1, если цифр нет.

Примеры
Входные данные
Day 10, mice 8: "Year" 7 is a mistake 91.
Выходные данные
987110
Лучший ответ
Aljebro Просветленный (27088) 4 года назад
const char* s = ...;

int x[10]; for ( int i = 0 ; i < 10 ; i++ ) x[i] = 0;
int sLen = strlen(s);
for ( int i = 0 ; i < sLen ; i++ ) if ( ( s[i] >= '0' ) && ( s[i] <= '9' ) ) x[ s[i] - '0' ] ++ ;
// если сумма всех x[i] = 0 > "цифр нет" , у тебя -1
// иначе, если сумма x[i] от 1 до 9 = 0 > просто "0"
// иначе составилось:
for ( int i = 9 ; i >= 0 ; i-- ) for ( int j = 0 ; j < x[i] ; j++ ) std::cout << i;
Остальные ответы
данил казанцев Профи (678) 2 года назад
#include
#include
using namespace std;
void print(vector const &input)
{
for (int i = input.size()-1; i >= 0; i--) {
cout << input.at(i);
}
}
int main() {
vector s;
string str;
getline (cin, str);
for(int i =0;i<str.length();i++){
if(isdigit(str[i])){
if(str[i]==9)
s.insert(s.begin(), 9);
else
s.push_back(str[i] - '0');
}
}
if (s.empty()){
cout<<-1;
}
else{
for(int i=1;i0 && s[j-1]>s[j];j--)
swap(s[j-1],s[j]);
print(s);
}
}
Похожие вопросы