Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
Xorus
0 / 0 / 1
Регистрация: 03.11.2009
Сообщений: 10
1

По массивам...

28.11.2009, 21:39. Просмотров 558. Ответов 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
Ответы с готовыми решениями:

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

по массивам
Для одномерного массива, состоящего из n вещественных чисел: а) найти...

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

Лабораторная по массивам
Дан одномерный массив А, состоящий из N элементов. Переписать в одномерный...

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

9
manfeese
131 / 130 / 29
Регистрация: 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 / 1
Регистрация: 03.11.2009
Сообщений: 10
28.11.2009, 22:08  [ТС] 3
Так не идёт, с break'ом он ищет пары только для 1ого числа
0
valeriikozlov
Эксперт С++
4686 / 2512 / 751
Регистрация: 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
131 / 130 / 29
Регистрация: 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 / 1
Регистрация: 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
Эксперт С++
4686 / 2512 / 751
Регистрация: 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
131 / 130 / 29
Регистрация: 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
Андрейка
422 / 226 / 87
Регистрация: 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 / 1
Регистрация: 03.11.2009
Сообщений: 10
29.11.2009, 01:33  [ТС] 10
valeriikozlov,
Понравилась идея с fl и fl1, насколько я понимаю должно работать нормально, спс.
0
29.11.2009, 01:33
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.11.2009, 01:33

Лабораторная по массивам
Здравствуйте. Нам задали лаб. работу по массивам, даже не знаю как должен...

Вопросы по массивам
Напишу сюда. Не стал создавать тему. Если что не так извините. #include...

задачи по массивам
Доброго времени суток! Помогите с решением. Нужно использовать массивы. ...


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

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

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