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

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

Войти
Регистрация
Восстановить пароль
 
 
RayPas
2 / 0 / 0
Регистрация: 18.01.2013
Сообщений: 370
#1

Массивы. Найти неповторяющееся число - C++

02.02.2014, 00:04. Просмотров 934. Ответов 28
Метки нет (Все метки)

Задача взята с форума.
Дан целочисленный массив, наподобие такого {1, 7, 3, 7, 8, 1, 3}. Все его элементы, кроме одного повторяются ровно 2 раза (две 1, две 7, две 3, но одна 8). Найти это неповторяющееся число. Числа и размер массива могут быть любыми.
Непонятно, собственно, как передать параметры в функцию NotTwin(), которые, по идее она должна получать из функции Massiv(); Ну и эти функции вызываются в main(). Помогите быдлокодеру, пожалуйста.

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
60
// ConsoleApplication2.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include "windows.h"
#include <iostream>
using namespace std;
 
 
int Massiv()
{
    int i;
    int num;
 
    cout << "Введите кол-во элементов" << endl;
    cin >> num;
 
    
    cout << "Введите числа, входящие в состав массива" << endl;
    int *A = new int[num];
        for (i = 0; i < num; i ++) 
            {
                cin >> A[i];
                // cout << A[i] << endl;
            }
    delete [] A;
    return A[i];
}
 
 
int NotTwin()
 
{
    int i , j;
    int *ptr1, *ptr2;
 
    for (i = 0; i < num; i ++)
        *ptr1 = A[i];
        for (j = 0; j < num; j ++)
            *ptr2 =  A[j];
            if (ptr1 != ptr2) {
                cout << *ptr1 << endl;
            }
    return 0; 
}
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    Massiv();
    cout << endl << "А теперь попробуем выявить одно число, которое не повторяется в массиве" << endl;
    NotTwin();
 
    system("PAUSE");
 
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.02.2014, 00:04     Массивы. Найти неповторяющееся число
Посмотрите здесь:

найти неповторяющееся число - C++
Существует энное количество цифр(динамический массив) в котором присутствуют цифры от 1 до 100. Все они повторяются кроме одного. Вопрос:...

Найти неповторяющееся число в массиве - C++
ан целочисленный массив, наподобие такого {1, 7, 3, 7, 8, 1, 3}. Все его элементы, кроме одного повторяются ровно 2 раза (две 1, две 7, две...

Найти число, входящее во все массивы - C++
помогите ,пожалуйста решить задачу. уже неделю бьюсь. Элементами массива являются неубывающие массивы целых чисел. Известно, что существует...

Массивы. Найти четвертое отрицательное число - C++
Дан одномерный массив. Найти в нем четвертое отрицательное число(если его нет то вывести на екран текст: не найдено число)

Получить из массива случайное неповторяющееся значение - C++
BlackJack подскажите как из этого массива достать случайное значение, чтобы оно при этом было оригинальным, то есть не повторялось. ...

Циклически сдвигать заданное число вправо пока не найдется большее число (массивы) - C++
Есть исходный массив mas ={1,1,0,1,0,1} в котором представлено число 2 СС необходимо циклически сдвигать его вправо пока не найдется...

Простое число и массивы - C++
есть задача: Дан массив n целых чисел. Если в массиве есть хотя бы одно простое число, то создается новый массив, в котором все члены...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
AlexOpryshko1
1 / 1 / 0
Регистрация: 31.01.2013
Сообщений: 41
03.02.2014, 18:23     Массивы. Найти неповторяющееся число #21
Проще всего сложить все элементы массива, используя "исключающее или" (XOR)
Все повторяющееся уйдут, останется только уникальный.
GuGo1991
267 / 261 / 93
Регистрация: 02.08.2012
Сообщений: 609
03.02.2014, 19:11     Массивы. Найти неповторяющееся число #22
RayPas
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
void NotTwin(int arr[], int size)
{
    int* end = &arr[size];
    int *ptr1=0, *ptr2=0;
    int counter = 0;
    
    for(ptr1 = arr; ptr1 < end; ptr1++)
    {
        for(ptr2 = arr; ptr2 < end; ptr2++)
        {
            if (*ptr1 == *ptr2)
            {
                counter++;
            }
            if(counter > 1)
            {
                break;
            }
        }
        if(counter == 1)
        {
            cout << *ptr1 << endl;
        }
        counter = 0;
    }
}
RayPas
2 / 0 / 0
Регистрация: 18.01.2013
Сообщений: 370
03.02.2014, 20:02  [ТС]     Массивы. Найти неповторяющееся число #23
усвоил как не выйти за рамки массива, и за одно, что счетчик решает проблему, спасибо Вам огромное.
А посоветуйте, по каким задачам лучше всего научится пользоваться указателями - по арифметическим или строчным?
как я уже понял, просто читать что-либо нет смысла, только практика...
GuGo1991
267 / 261 / 93
Регистрация: 02.08.2012
Сообщений: 609
04.02.2014, 01:06     Массивы. Найти неповторяющееся число #24
RayPas, не знаю даже что посоветовать, всё имеет место.
Если брать практику, то можно попытаться переписать готовую рабочую программу с
использованием указателей. Чем больше проблем встретится на пути, тем больше опыта.
RayPas
2 / 0 / 0
Регистрация: 18.01.2013
Сообщений: 370
04.02.2014, 14:42  [ТС]     Массивы. Найти неповторяющееся число #25
GuGo1991, а Вы по чему учились?
GuGo1991
267 / 261 / 93
Регистрация: 02.08.2012
Сообщений: 609
04.02.2014, 15:42     Массивы. Найти неповторяющееся число #26
RayPas, я и сейчас учусь ) Раньше в основном читал, но в книге всё понятно, только часто задаёшься вопросом
"а зачем мне оно надо?" потому что не знаешь применения и многое не запоминается.
А помогает запомнить случай, когда при решении задачи сталкиваешься с проблемой, возвращаешься к книге,
решаешь проблему, возвращаешься снова к книге, перечитываешь и всё становится ясно.
Пройдя весь этот цикл, точно ничего не забудется ) Получается я учусь проблемами.
Форум отличная практика, к тому же можно ещё и пообщаться с опытными людьми, выслушать критику,
терпеть упрёки (самое главное!) и стараться не забрасывать учёбу по каким-либо причинам.
ИМХО, конечно, может кто-нибудь посоветует иначе.
RayPas
2 / 0 / 0
Регистрация: 18.01.2013
Сообщений: 370
04.02.2014, 15:59  [ТС]     Массивы. Найти неповторяющееся число #27
GuGo1991 , Вы знаете узнаю в Вас себя. Только на более ранней стадии, когда тупо читаю книги и только сейчас появилось время именно взяться за практику. Я вообще больше по паскалю, как-то мне он до некоторого времени логичнее казался. Но, надо следить за трендами, а Си++ и вообще ООП, насколько мне известно - сейчас самый популярные методы разработки. Хочется углубиться в написании приложенек для телефонов, но пока не совсем понятно, как мне в этом помогут указатели)) В общем на самой-самой ранней стадии я еще.
оо да...упреки...было было и такое, не то что упреки, но и оскорбления)
TrueBit
95 / 95 / 12
Регистрация: 19.11.2012
Сообщений: 195
04.02.2014, 18:49     Массивы. Найти неповторяющееся число #28
Можно так(выводит эл-ты массива int, которые встречаются ровно 1 раз):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <map>
 
int main() {
    int array[] = { 1, 7, 3, 7, 8, 1, 3 };
    std::map<int,int> counter;
 
    for(int i=0; i < sizeof(array)/sizeof(int); i++)
        counter[ array[i] ]++;
 
    std::cout << "Elements: ";
    for(size_t i=0; i<counter.size(); i++)
        if( counter[i] == 1 )
            std::cout << ' ' << i;
 
    getchar();
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.02.2014, 19:00     Массивы. Найти неповторяющееся число
Еще ссылки по теме:

Двумерные массивы. Сумма элементов не превышающих число - C++
Есть матрица 6х7. Для каждой строки засчитать сумму элементов не превышающих число с. с=18,6 Вот помогите код довести до ума...время...

Двумерные массивы. Подсчитать число элементов матрицы - C++
помогите пожалуйста написать программы 2.Подсчитать число элементов матрицы Q(9x11), остаток от деления которых на пять равен единице.

Одномерные массивы - самое большое по модулю число - C++
Доброе время суток! Ребята, задачка такая интересная, что крышу срывает!!! Описать массив типа double с количеством элементов 25. ...

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

Найти и вывести все слова, у которых число гласных букв превышает число согласных - C++
Задание: Дан массив из n слов произвольной длины (длина слова не превышает 80 символов). Символами могут быть только заглавные...


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

Или воспользуйтесь поиском по форуму:
RayPas
2 / 0 / 0
Регистрация: 18.01.2013
Сообщений: 370
04.02.2014, 19:00  [ТС]     Массивы. Найти неповторяющееся число #29
TrueBit ,спасибо, конечно , но с объектами map еще не знаком...
Yandex
Объявления
04.02.2014, 19:00     Массивы. Найти неповторяющееся число
Ответ Создать тему
Опции темы

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