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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 26, средняя оценка - 4.85
ben cooper
0 / 0 / 0
Регистрация: 06.02.2012
Сообщений: 3
#1

Ввести одномерный статический массив из n чисел и вывести все неповторяющиеся элементы. - C++

06.02.2012, 16:04. Просмотров 3495. Ответов 9
Метки нет (Все метки)

Ввести одномерный статический массив из n чисел и вывести все неповторяющиеся элементы.Помогите решить.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.02.2012, 16:04
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ввести одномерный статический массив из n чисел и вывести все неповторяющиеся элементы. (C++):

Ввести одномерный статический массив из k чисел - C++
Ввести одномерный статический массив из k чисел. Расположить элементы массива в обратном порядке.

Ввести одномерный массив чисел, вывести на экран те элементы, которые не равны 0 - C++
Помогите решить пример в С++: Ввести одномерный массив чисел, вывести на экран те элементы, которые не равны 0

Ввести одномерный массив А , вывести его. Переставить в обратном порядке все элементы между максимальным из отрицательных и минимальным элементами - C++
Ввести одномерный массив А , вывести его. Переставить в обратном порядке все элементы между максимальным из отрицательных и минимальным...

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

Найти все неповторяющиеся элементы двумерного массива целых чисел - C++
Как сделать это задание через функции Найти все неповторяющиеся элементы Двумерного массива целых чисел.

Дан одномерный массив элементов. Необходимо вывести все не повторяющиеся элементы - C++
Дан одномерный массив элементов. Необходимо вывести все не повторяющиеся элементы. Использовать можно библиотеки string, iostream. ...

9
silent_1991
Эксперт С++
4985 / 3042 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
06.02.2012, 16:23 #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
 
int main()
{
    std::vector<double> vec((std::istream_iterator<double>(std::cin)), std::istream_iterator<double>());
    
    std::vector<double> unique_vec = vec;
    
    std::sort(unique_vec.begin(), unique_vec.end());
    std::vector<double>iterator unique_end = std::unique(unique_vec.begin(), unique_vec.end());
    unique_vec.resize(unique_end - unique_vec.begin());
    
    std::copy(unique_vec.begin(), unique_vec.end(), std::ostream_iterator<double>(std::cout, "  "));
    std::cout << std::endl;
    
    return 0;
}
0
Felsurt
5 / 5 / 0
Регистрация: 06.02.2012
Сообщений: 19
06.02.2012, 16:46 #3
слишком сложно вы сделали
т.к. было сказано просто ввести массив и вывести всего его не повторяющиеся элементы то можно было ограничиться двумя строчками

C++
1
2
std::set<double> col((std::istream_iterator<double>(std::cin)), std::istream_iterator<double>());
std::copy(col.begin(), col.end(), std::ostream_iterator<double>(std::cout, "  "));
но ТС не указал, можно ли использовать STL
0
ben cooper
0 / 0 / 0
Регистрация: 06.02.2012
Сообщений: 3
06.02.2012, 16:46  [ТС] #4
Спасибо..но мне бы с помощью указателей

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# include<iostream.h>
# include <math.h>
int main ()
{
    int a[10],i,k,n,b;
    cout <<"Vvedite razmer :";
    cin>>k;
    for(i=0;i<k;i++)
    {cout<<"Vvedite a["<<i<<"]= ";
    cin>>a[i];
    }
    cout<<"Massive a:"<<endl;
    for(i=0;i<k;i++)
    cout<<a[i]<<"  ";
    cout<<endl;
 Комментарий модератора 
Используйте теги форматирования кода!
0
silent_1991
Эксперт С++
4985 / 3042 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
06.02.2012, 16:52 #5
Felsurt, один преподаватель однажды сказал мне такую штуку на экзамене: "Всегда предполагай, что обрабатываемые данные могут понадобиться в неизменном виде после обработки, поэтому обработка не должна изменять данные". Поэтому в вашем алгоритме я бы всё-таки сначала ввёл данные в вектор, а уже этим вектором инициализировал бы множество. А уж какой из этих вариантов "сложный" - спорный вопрос.
0
go
Эксперт С++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
06.02.2012, 17:50 #6
silent_1991,
Цитата Сообщение от ben cooper Посмотреть сообщение
Ввести одномерный статический массив
Скорее всего имелось ввиду, что-то в виде
C++
1
int arr[SIZE]; // Си массив
0
silent_1991
Эксперт С++
4985 / 3042 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
06.02.2012, 17:52 #7
go, да уж наверное, раз надо "с помощью указателей"... Тут-то наши с Felsurt решения и сливаются
0
go
Эксперт С++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
06.02.2012, 18:03 #8
Цитата Сообщение от silent_1991 Посмотреть сообщение
std::vector<double>iterator
Здесь в глаза сразу бросилось, если я не ошибаюсь, то нужно так.
C++
1
std::vector<double>::iterator
А вообще смысл задания я понял, что-то в виде
C
1
2
3
4
5
6
for ( i = 0 ; i < SIZE ; ++i )
{
   for ( j = 0 ; (j < SIZE) && ((arr[i] != arr[j]) || (i != j))  ; ++j );
      if ( i == j )
         printf ("%5d", arr[i]);
}

Не по теме:

Хотя каждый понимает по-своему

0
silent_1991
Эксперт С++
4985 / 3042 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
06.02.2012, 18:05 #9
Цитата Сообщение от go Посмотреть сообщение
std::vector<double>iterator
При копировании что-то не срослось, поскольку код компилировался и проверялся.
0
valeriikozlov
Эксперт С++
4671 / 2497 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
07.02.2012, 02:58 #10
Цитата Сообщение от go Посмотреть сообщение
C
1
2
3
4
5
6
for ( i = 0 ; i < SIZE ; ++i )
{
 for ( j = 0 ; (j < SIZE) && ((arr[i] != arr[j]) || (i != j)) ; ++j );
 if ( i == j )
 printf ("%5d", arr[i]);
}
Лучше так:
C
1
2
3
4
5
6
for ( i = 0 ; i < SIZE ; ++i )
{
   for ( j = 0 ; (j < SIZE) && ((arr[i] != arr[j]) || (i == j))  ; ++j );
      if ( j == SIZE )
         printf ("%5d", arr[i]);
}
0
07.02.2012, 02:58
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.02.2012, 02:58
Привет! Вот еще темы с ответами:

Одномерный массив. Найти и вывести все элементы, которые меньше заданного b - C++
дано массив чисел 2,3,5,12,14,15,7,8,9,10,11,20. Найти в нем и вывести на экран все элементы, которые меньше заданного b.

Ввести двумерный массив целых чисел размерностью 2 на 4. Заменить все четные элементы на 0 - C++
Ввести двумерный массив целых чисел размерностью 2 на 4. Заменить все четные элементы числом 0. Буду благодарен за помощь и поддержку.

Одномерный массив (Ввести массив из 10 вещественных чисел.Найти сумму чисел,стоящих на чётных местах) - C++
Ввести массив из 10 вещественных чисел.Найти сумму чисел,стоящих на чётных местах. Обьясните что делать?

Сформировать одномерный массив целых чисел. Выбрать все чётные числа. Вывести на экран - C++
Сформировать одномерный массив целых чисел. Выбрать все чётные числа. Вывести на экран.


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

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

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