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

Поиск по массиву - C++

Восстановить пароль Регистрация
 
DJ_Vadim
0 / 0 / 0
Регистрация: 26.02.2011
Сообщений: 63
26.03.2012, 00:32     Поиск по массиву #1
Некоторый массив содержит повторяющиеся элементы, нужно найти количество различных элементов в нём.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include<stdio.h>
#include<conio.h>
#include<iostream>
 
using namespace std;
int a[] = {2,2,5,7,5,7,9,11,10,2,4,1};
int N,i,j,k=0;
main(){
       N = sizeof(a)/sizeof(a[0]); //узнаём длину массива
       for (i=0;i<N;i++){
           for (j=1;j<N;j++) {
               if (a[i]==a[j]) {//если первая ячейка равна второй то k+1
                  k++;
                  break;
               }
           }
       }
       k=N-k; //от общего кол-ва отнимаем количество одинаковых, должно получится чиcло разных
       cout<<k<<endl;
       system("pause");
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.03.2012, 00:32     Поиск по массиву
Посмотрите здесь:

Движение по массиву C++
C++ Поиск по массиву
Поиск по массиву структур C++
C++ Вопрос по массиву.
Не осуществляется поиск по массиву C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
26.03.2012, 00:43     Поиск по массиву #2
Цитата Сообщение от DJ_Vadim Посмотреть сообщение
Некоторый массив содержит повторяющиеся элементы, нужно найти количество различных элементов в нём.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include<stdio.h>
#include<conio.h>
#include<iostream>
 
using namespace std;
int a[] = {2,2,5,7,5,7,9,11,10,2,4,1};
int N,i,j,k=0;
main(){
       N = sizeof(a)/sizeof(a[0]); //узнаём длину массива
       for (i=0;i<N;i++){
           for (j=1;j<N;j++) {
               if (a[i]==a[j]) {//если первая ячейка равна второй то k+1
                  k++;
                  break;
               }
           }
       }
       k=N-k; //от общего кол-ва отнимаем количество одинаковых, должно получится чиcло разных
       cout<<k<<endl;
       system("pause");
}
А вопрос то в чём состоит?
Ну по коду могу сказать, что на Nквадрат/2 оптимальнее считать так
C++
1
2
for (i=0;i<N;i++){
           for (j=i;j<N;j++) {//начало массива уже проверено
Далее
надо считать количество РАЗНЫХ элементов, поэтому предлагаю так

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include<stdio.h>
#include<conio.h>
#include<iostream>
 
using namespace std;
int a[] = {2,2,5,7,5,7,9,11,10,2,4,1};
int N,i,j,k=0;
long result;
main(){
       N = sizeof(a)/sizeof(a[0]); //узнаём длину массива
       result=N*N;
       for (i=0;i<N;i++){
           for (j=i;j<N;j++) {
               if (a[i]==a[j]) {//если первая ячейка равна второй то k+1
                 result=result-2;
               }
           }
       }
       k=N-k; //от общего кол-ва отнимаем количество одинаковых, должно получится чиcло разных
       cout<<k<<endl;
       system("pause");
}
DJ_Vadim
0 / 0 / 0
Регистрация: 26.02.2011
Сообщений: 63
26.03.2012, 00:52  [ТС]     Поиск по массиву #3
Kuzia domovenok, у меня почему то программа выдаёт 12
я даже не знаю уже как писать...
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
26.03.2012, 00:55     Поиск по массиву #4
ну я на скорую руку писал, ща ещё подправлю
Yandex
Объявления
26.03.2012, 00:55     Поиск по массиву
Ответ Создать тему
Опции темы

Текущее время: 09:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru