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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.82
Nell
1 / 1 / 0
Регистрация: 21.12.2009
Сообщений: 41
#1

Алгоритм выбора элементов, встречающихся в массиве более одного раза - C++

07.01.2010, 21:35. Просмотров 1340. Ответов 5
Метки нет (Все метки)

Задача:Дан одномерный массив А(размерностью N). Разработать алгоритм выбора элементов, встречающихся в массиве А более одного раза.
Есть примерное решение задачи, но оно неправильное.Нужно очень срочно. Чтобы получить зачет за семестр.

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
#include "stdafx.h" //здесь ошибка - [U]Unable to open include file 'stdafx.h' [/U]
#include <iostream>
using namespace std; //здесь кажется тоже ошибка -[U]Declaration syntax error[/U]
 
void main()
{
        int n;
        cout<<"Input lenth: "; //просим ввести размер массива
        cin>>n; //считываем, что ввели
        int *a=new int[n]; //захватываем память под массив
        cout<<"Please, init data: "; //просим проинициализировать элементы массива
        for(int i=0; i<n; i++) //обходим все элементы
                cin>>a[i]; //считываем текущий элемент
        bool *t=new bool[n]; //создали массив, чтобы хранить номера повторяющихся элементов
        for(int i=0; i<n; i++) //опять обходим все элементам массива
        {
                t[i]=false; //проинициализировали массив индексов по-уолчанию ("false" означает, что элемент встречается один раз)
                for(int j=i+1; j<n; j++) //вложенный цикл, необходим для сравнения одного элемента с другими, начинаем сравнение с последующего элемента, так как впередистоящие уже проверенные
                        if(a[i]==a[j]) //если элементы совпали
                        {
                                t[i]=true; //поставили метку в массив индексов ("true" означает, что элемент повторяется)
                                for(int k=0; k<i; k++) //сравниваем с предыдущими, для случая, когда элемент встречается более 2-х раз
                                        if(a[i]==a[k]) //если мы уже находили этот элемент масива ранее
                                        {
                                                t[i]=false; //отменяем метку
                                                k=i; //для того, чтобы выйти из вложенного цикла по k и не делать лишних стравнений
                                        }
                                j=n; //для того, чтобы выйти из вложенного цикла по j и не делать лишнх сравнений
                        }
        }
        //после работы цикла у нас есть массив "t", в сотором отмечены номера всех повторяющихся элементов, выведем на экран эти элементы:
        for(int i=0; i<n; i++)
                if(t[i]==true) //если элемент повторяющийся
                        cout<<a[i]<<' '; //выводим элемент и пробел после него для красоты :)
        system("pause");
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.01.2010, 21:35
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Алгоритм выбора элементов, встречающихся в массиве более одного раза (C++):

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

Найти максимальное из чисел встречающихся в данном одномерном массиве более одного раза - C++
Помогите пожалуйста задачка вроде простенькая : найти максимальное из чисел встречающихся в данном одномерном массиве более одного раза

Подсчитать, сколько элементов встречаются в массиве более одного раза. - C++
Помогите пожалуйста кто может. Очень прошу. :cry: Сдать в четверг нужно... Подсчитать, сколько элементов встречаются в данном массиве...

Максимальное из чисел встречающихся в заданной матрице более одного раза - C++
Есть программа, она работает, но мне не понятен принцип, мог бы кто нибудь помочь? #include &quot;stdafx.h&quot; #include &lt;iostream&gt; ...

Максимальное из чисел, встречающихся в заданной матрице более одного раза - C++
//Дана целочисленная прямоугольная матрица. Определить: //1) количество строк, не содержащих ни одного нулевого элемента; ...

Найти максимальное число из, встречающихся в матрице более одного раза - C++
Хей. Есть рабочая программа, но для её полной правильности в ней нужно использовать Функцию или процедуру. Задание: Найти максимальное...

5
TanT
эволюционирую потихоньку
465 / 463 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
07.01.2010, 21:38 #2
а ты попробуй первую строку #include "stdafx.h" убрать на..., совсем то есть убрать
0
Rififi
2359 / 1052 / 44
Регистрация: 03.05.2009
Сообщений: 2,656
07.01.2010, 21:52 #3
Nell,

Разработать алгоритм выбора элементов, встречающихся в массиве А более одного раза.

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
#include <string>
#include <map>
#include <algorithm>
#include <iostream>
#include <locale>
 
#include <boost/lambda/lambda.hpp>
using namespace boost::lambda;
 
int main()
{
        setlocale(LC_ALL, "");
 
        const size_t N = 10;
        int A[N] = {...}; // заполнение массива
 
        typedef std::map<int, size_t> Z;
        Z z;
 
        std::for_each(A, A+N, ++var(z)[_1]);
 
        for (Z::const_iterator it = z.begin(); it != z.end(); ++it)
                if (it->second > 1)
                        std::cout << it->first << std::endl;
 
        return 0;
}
0
Nell
1 / 1 / 0
Регистрация: 21.12.2009
Сообщений: 41
07.01.2010, 23:20  [ТС] #4
RIFIFI Я сомневаюсь , что эта задача будет работать
Так как я вижу что вот тут будет неправильно
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
#include <string>
#include <map>
#include <algorithm>
#include <iostream>    -"<iostream.h>" в других будет также
#include <locale>
 
#include <boost/lambda/lambda.hpp>
using namespace boost::lambda;            - здесь тоже что-то не так
 
int main()
{
        setlocale(LC_ALL, "");
 
        const size_t N = 10;
        int A[N] = {...}; // заполнение массива
 
        typedef std::map<int, size_t> Z;
        Z z;
 
        std::for_each(A, A+N, ++var(z)[_1]);
 
        for (Z::const_iterator it = z.begin(); it != z.end(); ++it)
                if (it->second > 1)
                        std::cout << it->first << std::endl;
 
        return 0;
}
0
Rififi
2359 / 1052 / 44
Регистрация: 03.05.2009
Сообщений: 2,656
07.01.2010, 23:40 #5
Nell,

Я сомневаюсь , что эта задача будет работать

Сомневаешься? Чё, правда что ли?

"тут будет неправильно", "здесь тоже что-то не так", прямо страсти какие...


программа была написана с использованием
Visual Studio 2008
Библиотеки boost (www.boost.org)

http://s43.***********/i102/1001/6d/767123e7f34c.jpg

Выполни эти условия, и снизойдёт на тебя благодать.
1
Nell
1 / 1 / 0
Регистрация: 21.12.2009
Сообщений: 41
08.01.2010, 00:10  [ТС] #6
Но у меня не Visual Studio 2008
Может написать на TurboC_3(TurboC++IDE) пожалуста
Можно даже на TurboPascal
Нужно на TurboPascal или TurboC++IDE ,больше ни на чем нельзя


P.S. Ты женщина?
0
08.01.2010, 00:10
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.01.2010, 00:10
Привет! Вот еще темы с ответами:

Определить максимальное из значений, встречающихся в заданной матрице более одного раза - C++
Здравствуйте! Пытался решить данную задачу, но по ходу возник вопрос, как подсчитать максимальные значения которые встречаются именно более...

Определить максимальное из чисел, встречающихся в заданной матрице более одного раза - C++
Здравствуйте!Помогите пожалуйста решить задачу. Дана целочисленная матрица. Определить максимальное из чисел, встречающихся в заданной...

Определить максимальное из чисел, встречающихся в заданной матрице более одного раза - C++
Дана целочисленная прямоугольная матрица.Определить: Максимальное из чисел, встречающихся в заданной матрице более одного раза ...

Определить максимальное из чисел, встречающихся в заданной матрице более одного раза - C++
максимальное из чисел, встречающихся в заданной матрице более одного раза. Добрый вечер, есть программка, все компил., но после...


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

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

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