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

Несовпадающие цифры двух чисел - C++

Восстановить пароль Регистрация
 
Delmellor
1 / 1 / 0
Регистрация: 18.11.2012
Сообщений: 37
18.11.2012, 19:15     Несовпадающие цифры двух чисел #1
Всем доброго времени суток.
Прошу, помогите реализовать задачу. Довольно простая, но есть один стопорящий момент...
На вход подаются 2 числа - M и N. Нужно найти и вывести все цифры, которые есть в M, но которых нет в N.
т.е. если было 15437 и 3462194, то вывод будет 57.

У меня есть некоторые мысли. С числами нужно будет работать, как со строками. Каждое из них разбить посимвольно, и полученные символы внести в 2 динамических массива соответственно. т.е. для вышеприведенного примера будут 2 динамических массива: "1" "5" "4" "3" "7" и "3" "4" "6" "2" 1" "9" "4".

потом простейший цикл... два for. во внешнем берем первую ячейку, во внутреннем пробегаемся по значениям. нашлось совпадение? выходим из внутреннего цикла. не нашлось? выводим значение ячейки первого массива.

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

Среди чисел найти все те, которые можно представить в виде суммы квадратов двух натуральных чисел C++
C++ Среди чисел найти все, у которых сумма первых двух равна сумме последних двух
Если сумма двух чисел меньше 1, то большее из чисел заменить их произведением C++
В массиве из целых чисел найти среднее арифметическое тех чисел, которые начинаются с цифры 5 C++
C++ Как вывести несовпадающие элементы массива ?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Peregrin
33 / 33 / 1
Регистрация: 16.11.2012
Сообщений: 59
19.11.2012, 04:02     Несовпадающие цифры двух чисел #2
C++
1
2
3
4
5
6
7
8
9
10
std::vector<int> numbers1, numbers2;
int n1, n2;
while(n1!=0){
numbers1.push_back(n1%10);
n1/=10;
}
while(n2!=0){
numbers2.push_back(n2%10);
n2/=10;
}
Это если подаваемые числа int. Со строками еще проще, простой for цикл.
Peregrin
33 / 33 / 1
Регистрация: 16.11.2012
Сообщений: 59
19.11.2012, 04:02     Несовпадающие цифры двух чисел #3
C++
1
2
3
4
5
6
7
8
9
10
std::vector<int> numbers1, numbers2;
int n1, n2;
while(n1!=0){
numbers1.push_back(n1%10);
n1/=10;
}
while(n2!=0){
numbers2.push_back(n2%10);
n2/=10;
}
Это если подаваемые числа int. Со строками еще проще, простой for цикл.
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
19.11.2012, 04:08     Несовпадающие цифры двух чисел #4
Цитата Сообщение от Peregrin Посмотреть сообщение
std::vector<int> numbers1, numbers2;
и тут stl... да вы с ума сошли! сколько ты знаков ожидаешь в числе встретить, что в вектор их помещаешь?
Там всего где-то 5 знаков для инта, 10 знаков для лонга. статического int numbers[10] за глаза хватит!
Delmellor
1 / 1 / 0
Регистрация: 18.11.2012
Сообщений: 37
19.11.2012, 09:06  [ТС]     Несовпадающие цифры двух чисел #5
можно без вектора как-нибудь? опишите подробно.
Peregrin
33 / 33 / 1
Регистрация: 16.11.2012
Сообщений: 59
19.11.2012, 14:05     Несовпадающие цифры двух чисел #6
Действительно, если входные числа long, то можно так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int numbers1[10];
int numbers2[10];
long n1, n2; //входные данные
int i=0;
while(n1!=0){
 numbers1[i++]=n1%10;
 n1/=10;
}
i=0;
while(n2!=0){
 numbers2[i++]=n2%10;
 n2/=10;
}
Но если числа длинные и больше long, то все-таки вектор нужно использовать.
Delmellor
1 / 1 / 0
Регистрация: 18.11.2012
Сообщений: 37
19.11.2012, 18:04  [ТС]     Несовпадающие цифры двух чисел #7
Хорошо.. спасибо большое.
А если немного "расширить" задачу?
Т.е. работать с двумя строками. И суть та же - найти в первой строке символы, которых нет во второй.
Просто хотелось бы понять, как можно реализовать это с помощью динамических массивов. И как разбить строку на символы, которые будут внесены в ячейки массива.

Мне просто нужно хорошо освоить этот вопрос - работа с указателями, динамическими массивами и строками. Напишите понятно, как вышенаписанное осуществить.
Peregrin
33 / 33 / 1
Регистрация: 16.11.2012
Сообщений: 59
19.11.2012, 18:09     Несовпадающие цифры двух чисел #8
C++
1
2
3
4
5
6
7
8
9
String s1, s2;
//заполняем s1, s2
int* letters1 = new int[s1.length()];
int* letters2 = new int[s2.length()];
for (int i=0; i<s1.length(); i++) letters1[i]=s1[i];
for (int i=0; i<s2.length(); i++) letters2[i]=s2[i];
....//сравниваем массивы
delete[] letters1;
delete[] letters2;
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.11.2012, 18:16     Несовпадающие цифры двух чисел
Еще ссылки по теме:

C++ Даны цифры двух двузначных чисел. Получить цифры суммы
Получить цифры числа равного сумме цифр двух чисел C++
Как сделать из двух чисел третье, уникальное для любой комбинации первых двух? C++

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

Или воспользуйтесь поиском по форуму:
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
19.11.2012, 18:16     Несовпадающие цифры двух чисел #9
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 <string>
#include <cmath>
#include <iterator>
 
#include <boost/lexical_cast.hpp>
#include <boost/range/algorithm/sort.hpp>
#include <boost/range/algorithm/set_algorithm.hpp>
 
int main()
{
    int f = -42, s = 256;
    std::string first   = boost::lexical_cast<std::string>(std::abs(f)),
                second  = boost::lexical_cast<std::string>(std::abs(s));
 
    boost::range::sort(first);
    boost::range::sort(second);
 
    boost::range::set_difference
    (
        first,
        second,
        std::ostream_iterator<char>(std::cout, " ")
    );
    std::cout << std::endl;
 
    return 0;
}
Yandex
Объявления
19.11.2012, 18:16     Несовпадающие цифры двух чисел
Ответ Создать тему
Опции темы

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