С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Delmellor
1 / 1 / 0
Регистрация: 18.11.2012
Сообщений: 37
#1

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

18.11.2012, 19:15. Просмотров 377. Ответов 8
Метки нет (Все метки)

Всем доброго времени суток.
Прошу, помогите реализовать задачу. Довольно простая, но есть один стопорящий момент...
На вход подаются 2 числа - M и N. Нужно найти и вывести все цифры, которые есть в M, но которых нет в N.
т.е. если было 15437 и 3462194, то вывод будет 57.

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

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

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

Даны цифры двух двузначных чисел. Получить цифры суммы - C++
Даны цифры двух двузначных чисел, записываемых в виде а2а1 и b2 b1, где а1 и b1— число единиц, а2 и b2 — число десятков Получить цифры...

Даны цифры двух десятичных целых чисел - C++
Даны цифры двух десятичных целых чисел: трехзначного a3a2a1 и двузначного b2b1, где a1 и b1 — число единиц, а2 и b2, — число десятков, a3 —...

Получить цифры числа равного сумме цифр двух чисел - C++
даны цифры двух целых чисел : двузначного а2а1 и однозначного b,где а1-число единиц,а2-число десятков.получить цифры числа.равного...

Как вывести несовпадающие элементы массива ? - C++
вывести элементы массива t, которые не совпадают с элементами в массиве p for (i = 0; i < m; i++) { for(j = 0; j < n; j++) {...

Ввести пять чисел. Вывести первые две цифры чисел. - C++
Ввести пять чисел. Вывести первые две цифры чисел. Использовать свою функцию, которая не возвращает значение.

В массиве из целых чисел найти среднее арифметическое тех чисел, которые начинаются с цифры 5 - C++
В массиве из целых чисел найти среднее арифметическое тех чисел, которые начинаются с цифры 5. Сап, форумчане.

8
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 цикл.
0
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 цикл.
0
Kuzia domovenok
2060 / 1905 / 174
Регистрация: 25.03.2012
Сообщений: 6,564
Записей в блоге: 1
19.11.2012, 04:08 #4
Цитата Сообщение от Peregrin Посмотреть сообщение
std::vector<int> numbers1, numbers2;
и тут stl... да вы с ума сошли! сколько ты знаков ожидаешь в числе встретить, что в вектор их помещаешь?
Там всего где-то 5 знаков для инта, 10 знаков для лонга. статического int numbers[10] за глаза хватит!
0
Delmellor
1 / 1 / 0
Регистрация: 18.11.2012
Сообщений: 37
19.11.2012, 09:06  [ТС] #5
можно без вектора как-нибудь? опишите подробно.
0
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, то все-таки вектор нужно использовать.
1
Delmellor
1 / 1 / 0
Регистрация: 18.11.2012
Сообщений: 37
19.11.2012, 18:04  [ТС] #7
Хорошо.. спасибо большое.
А если немного "расширить" задачу?
Т.е. работать с двумя строками. И суть та же - найти в первой строке символы, которых нет во второй.
Просто хотелось бы понять, как можно реализовать это с помощью динамических массивов. И как разбить строку на символы, которые будут внесены в ячейки массива.

Мне просто нужно хорошо освоить этот вопрос - работа с указателями, динамическими массивами и строками. Напишите понятно, как вышенаписанное осуществить.
0
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;
1
soon
2542 / 1307 / 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;
}
0
19.11.2012, 18:16
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.11.2012, 18:16
Привет! Вот еще темы с ответами:

Найти произведение двух наибольших и двух наименьших отрицательных нечетных чисел массива - C++
Найти произведение двух наибольших и двух наименьших отрицательных нечетных чисел массива Дана последовательность из n различных целых...

Как сделать из двух чисел третье, уникальное для любой комбинации первых двух? - C++
Hi :) Есть два числа, допустим: int a и int b, как можно их &quot;сопряч&quot;, то есть что - то с ними сделать, что бы получить третье число,...

Среди чисел найти все, у которых сумма первых двух равна сумме последних двух - C++
Помогите пожалуйста решить задание: среди четырехзначных чисел из интервала, заданного пользователем, найти все, у которых сумма первых...

Если сумма двух чисел меньше 1, то большее из чисел заменить их произведением - C++
помогите решить в С++. Если сумма двух действительных чисел x и y меньше 1, то большее из чисел x и y заменить их произведением. В...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.