Форум программистов, компьютерный форум CyberForum.ru

Немножко дописать готовый код(максимальное число) - C++

Восстановить пароль Регистрация
 
Викусь_ка
0 / 0 / 0
Регистрация: 12.12.2013
Сообщений: 5
13.12.2013, 11:54     Немножко дописать готовый код(максимальное число) #1
Привет ребята,помогите мне пожалуйста. Нашла тут на форуме готовый код своей задачи,только немножко не подходит к моему условию=(
Вот условие:Пользователь вводит с клавиатуры натуральное число 0<n<10000. Проверить корректность ввода,составить и вывести на экран число из цифр введенного числа n,так,чтобы выведенное число оказалось максимальным из возможных. Например:Если пользователь ввёл число 195, то программа должна вывести число 951.Программа должна работать (запрашивать данные, считать и выводить результат ) до тех пор, пока пользователь не введет признак окончания работы (либо встретится конец файла).Признак окончания работы-введенное число содержит одинаковые цифры (111, 77777 или 55).
Вот код который я нашла на форуме
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
#include <iostream>
#include <vector>
#include <algorithm>
#include <cmath>
int main()
{
    int n , temp = 0;
    std::vector<int> vec;
    std::cout << "Vvedit' 4uslo \n";
    std::cin >> n;
    while(n > 0)
    {
        temp = n % 10;
        vec.push_back(temp);
        n = n / 10;
    }
    int size = vec.size();
    temp = 0;
    for(int i = 0; i < size; i++)
    {
        std::vector<int>::iterator iter = std::max_element(vec.begin(), vec.end());
        temp += *iter * std::pow((double)10,(double)(size - (i + 1)));
        vec.erase(std::remove(vec.begin(), vec.end(), *iter));
    }
    std::cout << temp;
    system("pause");
    return 0;
}
Могли бы Вы мне помочь дописать программу с комментариями что бы она работала по моему условию пожалуйста,сама не могу такого сделать...

Добавлено через 16 часов 35 минут
Help me please
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.12.2013, 11:54     Немножко дописать готовый код(максимальное число)
Посмотрите здесь:

Вывести максимальное число из n заданных чисел (исправить код) C++
как написать готовый код паскаль на с++? C++
C++ Взять готовый файл с набором чисел, в нем найти максимальное значение и записать во второй созданный файл
C++ Вычислить значение функции(исправить готовый код)
C++ Считывание предложений из текстового файла(готовый код)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
egor2116
 Аватар для egor2116
337 / 368 / 42
Регистрация: 20.01.2013
Сообщений: 1,100
13.12.2013, 14:42     Немножко дописать готовый код(максимальное число) #2
Help me please
Как то так
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
#include <iostream>
#include <sstream>
#include <algorithm>
 
bool sims(std::string & str)
{
     bool check = false;
     for(int i = 0; i < str.size(); ++i)
       if(str[0] != str[i])
         check = true;
         
     return check;
}
 
void sendMessage(char * str)
{
   std::cout << str << std::endl; 
}
 
int main()
{  
    int inputVar = 0;
    std::cout << "Input numeric of range 0 < n < 10000: "; 
    std::stringstream ss;
    std::string inputVarString;
    
    while(std::cin >> inputVar)
    {
 
     if(inputVar < 0) 
      {
        sendMessage("Number is out range");
        break;
      }
 
      ss << inputVar;
      ss >> inputVarString;
      
      if(!sims(inputVarString))
      {
        sendMessage("Number is not currected");
        break;
      }
      
      std::sort(inputVarString.begin(), inputVarString.end());
      std::reverse(inputVarString.begin(), inputVarString.end());
     
     ss.clear();
     ss << inputVarString;
     ss >> inputVar;
     
     std::cout << inputVar << std::endl;
     std::cout << "Input next numeric: ";
       
    }
    
    system("PAUSE");
    return 0;
}
Викусь_ка
0 / 0 / 0
Регистрация: 12.12.2013
Сообщений: 5
15.12.2013, 01:00  [ТС]     Немножко дописать готовый код(максимальное число) #3
egor2116, всё запустилось,но работает только первый запрос числа..Тоисть первый раз ввожу 135-выдает 531,тут правильно,но при запросе следущего числа я ввожу 151-выдает снова 531..Тобиш при каждом следущем вводе нового числа мне показывает результат первого запроса.И она вроде не завершает работу при вводе комбинаций из одинаковых цифр=(
И можно пожалуйста еще комментарии добавить,чтобы я хоть немножко понимала о чем тут пишется,так сказать подсказочка)

Добавлено через 4 часа 6 минут
помогите исправить пожалуйста

Добавлено через 4 часа 14 минут
Рребята,пожалуйста...

Добавлено через 13 часов 20 минут
Кто нибудь,выручайте пожалуйста

Добавлено через 9 часов 58 минут
egor2116
 Аватар для egor2116
337 / 368 / 42
Регистрация: 20.01.2013
Сообщений: 1,100
16.12.2013, 09:58     Немножко дописать готовый код(максимальное число) #4
Кто нибудь,выручайте пожалуйста
Перенесите строку 24 на 35 в коде который я указал выше и все заработает.
DiffEreD
 Аватар для DiffEreD
1420 / 757 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
16.12.2013, 12:55     Немножко дописать готовый код(максимальное число) #5
Еще такая реализация:
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
#include <iostream>
#include <functional>
#include <set>
#include <windows.h>
 
int main()
{
   SetConsoleCP (1251); SetConsoleOutputCP (1251);
 
   unsigned long long number;
   std::multiset<int, std::greater<int>> digits;
   while (true)
   {
      std::cout << "\nВведите число (одинаковые цифры для выхода): ->";
      std::cin >> number;
 
      if (!std::cin)
      {
         std::cin.clear();
         std::cerr << "Ошибка ввода!\n";
         std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
         continue;
      }
      std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
      std::cout << "\nВы ввели:  " << number << std::endl;
 
      do
      {
         digits.insert(number % 10);
      }
      while (number /= 10);
 
      if (digits.upper_bound(*digits.begin()) == digits.end()) break;
 
      std::cout << "\nРезультат: "; for (int i : digits) std::cout << i;
      digits.clear();
      std::cout << std::endl;
   }
 
   std::cout << "\n\nDone." << std::endl;
   return 0;
}
Yandex
Объявления
16.12.2013, 12:55     Немножко дописать готовый код(максимальное число)
Ответ Создать тему
Опции темы

Текущее время: 23:30. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru