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

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

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

По массивам... - C++

28.11.2009, 21:39. Просмотров 484. Ответов 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
29
30
31
#include <stdlib.h>
#include <iomanip.h>
#include <conio.h>
#include <iostream.h>
#include<time.h>                                                                                                                                        
const int n=20;
void pov(int *);
void ar(int *);
 
int main()
{     
 int  array[n];
 srand (time(0));             
ar(array);
pov(array);           
_getch();        
return 0;   
}
// Задаём случайные значения эллементов массива
void ar(int *arr)
{ for (int i=0; i<n; i++)
{ arr[i]=rand()/327;
cout<<setw(3)<<arr[i]<<" ";if (!((i+1)% 5)) cout << endl; } cout<<endl;
}
// Ищем совпадающие
void pov(int *arr)
{   for (int k=0; k<n; k++)
           { for (int i=0; i<n; i++)
                               {if (i!=k  && arr[k]==arr[i]) cout<<arr[k]<<" "<<endl; }
           }
}


Как сделать так, чтобы выводились числа без повторов?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.11.2009, 21:39
Здравствуйте! Я подобрал для вас темы с ответами на вопрос По массивам... (C++):

По массивам.... - C++
Добрый вечер:).На носу итоговая сессия, к сожалению для допуска на нее не могу справится с заданием который дал мне преподаватель (по...

по массивам - C++
Для одномерного массива, состоящего из n вещественных чисел: а) найти минимальный по модулю элемент массива; б) вычислить сумму...

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

Задача по массивам - C++
Помогите пожалуйста с задачей на с++ Количество студентов N=40. Имена студентов-символьный массив Nam. Каждый элемент-буква,код...

Программа по массивам - C++
Ребя может кто помочь написать программу на экзамен. Вот задание: составить прогу для удвоения всех элементов двумерного массива А (размер...

Задачи по массивам - C++
короч котаны есть проблема плохо разбираюсь в массивах, помогите кто чем смоЖет а?)) 2 задачи 1.Определить средний рост девочек, и...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
manfeese
129 / 128 / 16
Регистрация: 04.01.2009
Сообщений: 415
28.11.2009, 21:43 #2
Строка 29, добавь оператор break
C++
1
 {if (i!=k  && arr[k]==arr[i]) cout<<arr[k]<<" "<<endl; break; }
0
Xorus
0 / 0 / 0
Регистрация: 03.11.2009
Сообщений: 10
28.11.2009, 22:08  [ТС] #3
Так не идёт, с break'ом он ищет пары только для 1ого числа
0
valeriikozlov
Эксперт C++
4670 / 2496 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
28.11.2009, 22:11 #4
manfeese,
таким способом, проверка не заканчивается, получается преждевременный выход из цикла.
Предлагаю вариант:
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
#include <stdlib.h>
#include <iomanip.h>
#include <conio.h>
#include <iostream.h>
#include<time.h>                                                                                                                                        
const int n=20;
void pov(int *);
void ar(int *);
 
int main()
{         
 int  array[n];
 srand (time(0));             
ar(array);
pov(array);           
_getch();        
return 0;       
}
// Г‡Г*Г¤Г*ВёГ¬ ñëó÷Г*Г©Г*ûå Г§Г*Г*Г·ГҐГ*ГЁГї ýëëåìåГ*òîâ Г¬Г*Г±Г±ГЁГўГ*
void ar(int *arr)
{ for (int i=0; i<n; i++)
{ arr[i]=rand()/327;
cout<<setw(3)<<arr[i]<<" ";if (!((i+1)% 5)) cout << endl; } cout<<endl;
}
// Èùåì ñîâïГ*Г¤Г*ГѕГ№ГЁГҐ
void pov(int *arr)
{
    int fl, i;
        for (int k=0; k<n; k++)
        {fl=1; 
            for (i=0; i<k; i++)
                if(arr[k]==arr[i])
                    fl=0;
            for (i=k+1; i<n; i++)
                if (arr[k]==arr[i] && fl) cout<<arr[k]<<endl; }
           
}
0
manfeese
129 / 128 / 16
Регистрация: 04.01.2009
Сообщений: 415
28.11.2009, 22:23 #5
Должно работать
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void pov(int *arr)
{ int A = new int[n];
  int index = 0;
  for (int k=0; k<n; k++)
     for (int i=k+1; i<n; i++)
        {
           if (arr[k]==arr[i])  
                for (int j = 0; j<=index;j++) 
                   if (A[j]==arr[i]) goto Next;
                              
          A[index++]=arr[k]; 
          break;
       }
 
  for (int k=0; k<=index; k++) cout<<A[k];
}
0
Xorus
0 / 0 / 0
Регистрация: 03.11.2009
Сообщений: 10
28.11.2009, 22:35  [ТС] #6
valeriikozlov,
этот вариант работает только если повторяющихся чисел не больше 2. При 3 и более начинает выдавать повторы.

Добавлено через 8 минут
manfeese,
Если елси не затруднит можете обьяснить что озночает
C++
1
 int A = new int[n];
?

PS Выдаёт ошибки, можно прогу целиком?
0
valeriikozlov
Эксперт C++
4670 / 2496 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
28.11.2009, 22:40 #7
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
#include <stdlib.h>
#include <iomanip.h>
#include <conio.h>
#include <iostream.h>
#include<time.h>                                                                                                                                        
const int n=20;
void pov(int *);
void ar(int *);
 
int main()
{         
 int  array[n];
 srand (time(0));             
ar(array);
pov(array);           
_getch();        
return 0;       
}
// Г‡Г*Г¤Г*ВёГ¬ ñëó÷Г*Г©Г*ûå Г§Г*Г*Г·ГҐГ*ГЁГї ýëëåìåГ*òîâ Г¬Г*Г±Г±ГЁГўГ*
void ar(int *arr)
{ for (int i=0; i<n; i++)
{ arr[i]=rand()/327;
cout<<setw(3)<<arr[i]<<" ";if (!((i+1)% 5)) cout << endl; } cout<<endl;
}
// Èùåì ñîâïГ*Г¤Г*ГѕГ№ГЁГҐ
void pov(int *arr)
{
        int fl, fl1, i;
                for (int k=0; k<n; k++)
                {fl=1; 
                        for (i=0; i<k; i++)
                                if(arr[k]==arr[i])
                                        fl=0;
                                fl1=1;
                        for (i=k+1; i<n; i++)
                                if (arr[k]==arr[i] && fl &&fl1)
                                {
                                    cout<<arr[k]<<endl; fl1=0;}
                        
                }
           
}
1
manfeese
129 / 128 / 16
Регистрация: 04.01.2009
Сообщений: 415
28.11.2009, 22:50 #8
Цитата Сообщение от Xorus Посмотреть сообщение
Если елси не затруднит можете обьяснить что озночает Код C++
1
int A = new int[n];
?
Динамическое выделение массива
да и забыл вставить в конце
C++
1
delete[] A;
Цитата Сообщение от Xorus Посмотреть сообщение
PS Выдаёт ошибки, можно прогу целиком?
А что за ошибки? конкретно!!!
0
Андрейка
419 / 223 / 27
Регистрация: 25.03.2009
Сообщений: 744
28.11.2009, 23:08 #9
C++
1
2
3
4
5
6
7
8
9
#include <iostream>
#include <algorithm>
int main()
{
    int mass[] = {1,1,1,3,3,4,2,3,3,5,6,5};
    std::sort(mass,mass+sizeof(mass)/sizeof(*mass));
    std::copy(mass,std::unique(mass,mass+sizeof(mass)/sizeof(*mass)),std::ostream_iterator<int>(std::cout," "));
    return 0;
}
0
Xorus
0 / 0 / 0
Регистрация: 03.11.2009
Сообщений: 10
29.11.2009, 01:33  [ТС] #10
valeriikozlov,
Понравилась идея с fl и fl1, насколько я понимаю должно работать нормально, спс.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.11.2009, 01:33
Привет! Вот еще темы с ответами:

Лабораторная по массивам - C++
Здравствуйте. Нам задали лаб. работу по массивам, даже не знаю как должен выглядеть код программы.. Помогите... Условие: Пользователь...

Вопрос по массивам - C++
Как в массиве сделать так: Если элемент повторяется дважды - удалить один из них например: 1 2 2 3 4 5 5 6 7 8 8 9 Вывод 1 2 3...

Учебник по массивам - C++
Посоветуйте учебник по решению задач с массивами на с++

Подскажите по массивам - C++
Всем привет! Пишу игру для платформы Bada=) Суть проблемы: есть 2 класса. Из 1-ого класса вызываю функцию 2-ого. Перед этим во 2-классе...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
29.11.2009, 01:33
Ответ Создать тему
Опции темы

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