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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Praud
7 / 7 / 3
Регистрация: 25.02.2013
Сообщений: 237
#1

Ввести строку, из нее удалить всё, кроме нечетных чисел. Отсортировать оставшиеся числа по убыванию - C++

02.05.2014, 15:09. Просмотров 337. Ответов 6
Метки нет (Все метки)

Суть такова: пользователь вводит строку, из нее удаляется всё, кроме нечетных чисел. Далее они сортируются по убыванию. Подскажите как сделать. Сортировку пузырьком думаю сам напишу, а вот первое...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.05.2014, 15:09     Ввести строку, из нее удалить всё, кроме нечетных чисел. Отсортировать оставшиеся числа по убыванию
Посмотрите здесь:

C++ Ввести строку и слово, удалить все вхождения слова и вывести строку
C++ Дан текстовый файл.текст. числа, разделённые пробелами. Найти количество положительных чисел. Удалить строку с min количеством чисел (на С)
Отсортировать введенные числа по возрастанию и по убыванию C++
C++ Отсортировать по возрастанию и по убыванию введенные числа
C++ Отсортировать каждую строку матрицы по убыванию элементов методом пузырька
Ввести рандомно матрицу и отсортировать главную диагональ матрицы по убыванию C++
Ввод чисел через пробел до определеного числа,убрать оставшиеся числа C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Керра
1275 / 443 / 45
Регистрация: 24.08.2011
Сообщений: 2,133
02.05.2014, 15:15     Ввести строку, из нее удалить всё, кроме нечетных чисел. Отсортировать оставшиеся числа по убыванию #2
C помощью strtok можно
Praud
7 / 7 / 3
Регистрация: 25.02.2013
Сообщений: 237
02.05.2014, 16:02  [ТС]     Ввести строку, из нее удалить всё, кроме нечетных чисел. Отсортировать оставшиеся числа по убыванию #3
у меня тип string. Сам strtok не смогу написать

Добавлено через 39 минут
Немного извратился, первыми символами вынес цифры, остальное заменил ' '. Думаю, мне такое подходит.
Только теперь я не знаю как их сортировать по убыванию. Тип данных то string, причем не STL, а мой (по заданию). stoi() применить не могу, как быть?
Керра
1275 / 443 / 45
Регистрация: 24.08.2011
Сообщений: 2,133
02.05.2014, 16:57     Ввести строку, из нее удалить всё, кроме нечетных чисел. Отсортировать оставшиеся числа по убыванию #4
тебе же надо не цифры, а числа сортировать, значит цифры в начало нельзя?

Добавлено через 5 минут
можно удалить все кроме чисел.
C++
1
2
3
4
5
6
7
8
9
i = 0, newДлина = 0;
while (i < длины строки)
{
  while (i < длины строки && строка[i] не цифра)
    i++;
  while (i < длины строки && строка[i] цифра)
    // располагаем число на позиции newN...сколько понадобится. также запоминаем длину числа, меняем 
    // newДлину
}
что-то такое.
zitxbit
Master C/C++
87 / 739 / 75
Регистрация: 11.04.2012
Сообщений: 971
02.05.2014, 20:20     Ввести строку, из нее удалить всё, кроме нечетных чисел. Отсортировать оставшиеся числа по убыванию #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
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#include <ctype.h>
 
int main(int argc, char* argv[])
{
    static char str[256] = "to 111 be or 222 not to 144 be\0";
 
    printf("string = %s\n", str);
 
    for (int i = 0; str[i] != '\0'; i++)
    {
        char digits[256] = "\0"; int r = i, n = 0;
        while (isdigit(str[i]) && str[i] != '\0')
            digits[n++] = str[i++];
 
        digits[n] = '\0';
        if (strcmp("\0", digits) < 0 && !(atoi(digits) % 2))
        {
            int len = strlen(digits) + 1;
            while (--len >= 0)
            {
                for (int t = r; str[t] != '\0'; t++)
                    str[t] = str[t + 1];
            }
        }
 
    }
 
    printf("output = %s\n", str);
 
    _getch();
 
    return 0;
}
http://codepad.org/MEeA9tSJ
Миниатюры
Ввести строку, из нее удалить всё, кроме нечетных чисел. Отсортировать оставшиеся числа по убыванию  
MrGluck
Ворчун
Эксперт CЭксперт С++
6440 / 3638 / 452
Регистрация: 29.11.2010
Сообщений: 9,613
02.05.2014, 21:51     Ввести строку, из нее удалить всё, кроме нечетных чисел. Отсортировать оставшиеся числа по убыванию #6
Цитата Сообщение от Praud Посмотреть сообщение
Суть такова: пользователь вводит строку, из нее удаляется всё, кроме нечетных чисел.
Числа могут идти совместно с текстом или обязательно должны быть обрамлены пробелами?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <cstdlib>
#include <iostream>
#include <set>
#include <sstream>
#include <string>
 
int main()
{
    std::string str, word;
    std::getline(std::cin, str);
    std::set<int> s;
    std::istringstream ist(str);
    while (ist >> word)
    {
        int n = strtol(word.c_str(), NULL, 10);
        if (n % 2)
            s.insert(n);
    }
    for (auto rit = s.rbegin(); rit != s.rend(); ++rit)
        std::cout << *rit << ' ';
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.05.2014, 09:38     Ввести строку, из нее удалить всё, кроме нечетных чисел. Отсортировать оставшиеся числа по убыванию
Еще ссылки по теме:

C++ Удалить из массива число, у которого наибольшая сумма цифр и отсортировать оставшиеся элементы
Элементы массива с нечетных позиций необходимо отсортировать по возрастанию, с четных - по убыванию C++
Упорядочить строку с наименьшим количеством нечетных чисел по убыванию C++
Найти строку матрицы, в которой наибольшее количество разных чисел, и отсортировать её по убыванию C++
Отсортировать по убыванию последнюю строку квадратной матрицы (сортировка Шелла) C++

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

Или воспользуйтесь поиском по форуму:
HeilMan
Сообщений: n/a
03.05.2014, 09:38     Ввести строку, из нее удалить всё, кроме нечетных чисел. Отсортировать оставшиеся числа по убыванию #7
Классно!
Yandex
Объявления
03.05.2014, 09:38     Ввести строку, из нее удалить всё, кроме нечетных чисел. Отсортировать оставшиеся числа по убыванию
Ответ Создать тему
Опции темы

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