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

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

28.11.2009, 21:39. Просмотров 642. Ответов 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.11.2009, 21:39
Ответы с готовыми решениями:

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

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

Вопрос по массивам
Как в массиве сделать так: Если элемент повторяется дважды - удалить один из них например: 1 2...

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

9
132 / 131 / 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
0 / 0 / 1
Регистрация: 03.11.2009
Сообщений: 10
28.11.2009, 22:08  [ТС] 3
Так не идёт, с break'ом он ищет пары только для 1ого числа
0
Эксперт С++
4710 / 2535 / 753
Регистрация: 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
132 / 131 / 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
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
Эксперт С++
4710 / 2535 / 753
Регистрация: 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
132 / 131 / 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
423 / 227 / 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
0 / 0 / 1
Регистрация: 03.11.2009
Сообщений: 10
29.11.2009, 01:33  [ТС] 10
valeriikozlov,
Понравилась идея с fl и fl1, насколько я понимаю должно работать нормально, спс.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.11.2009, 01:33

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

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

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

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

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


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

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

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