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

Как сравнить несколько(>2) элементов в одном массиве? - C++

Восстановить пароль Регистрация
 
MsVe
0 / 0 / 0
Регистрация: 15.09.2015
Сообщений: 2
15.09.2015, 09:27     Как сравнить несколько(>2) элементов в одном массиве? #1
Добрый день!
Помогите, пожалуйста! Никак не могу разобраться, как сравнивать элементы одного и того же массива между собой!

Полная задача требует выяснить если в массиве:
Два одинаковых элементы
Три
Четыре
Два и Три одновременно
Являются ли элементы последовательными(1,2,3,4...)
Я застряла на трех элементах! Ниже мой вариант кода, как бы я его не исправляла, выдает какую-то чушь!!

C++ (Qt)
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
#include <iostream>
using namespace std;
 
int main()
{
 
int array[5]={6,5,6,8,6}; //Задаем массив
 
  for (int i=0; i<4 ; i++)  //Проверяем если два
  {
    for (int j=i+1; j<3; j++) //одинаковых элемента
    {
      if (array[i] == array[j])
      {
        for (int g=j+1; g<2; g++)// Проверяем если третий
        {
          if(array[g] == array[j])
          {
            cout<<"There are 3 equel elements\n";
          }
          else
          {
            cout<<"There are 2 equel elements\n";
          }
        }
       }  
      else
      {
        cout<<"There is no equel elements.\n";
      }
    }
  }
return 0;
}
RUN
There is no equel elements.
There is no equel elements.
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
awalio
 Аватар для awalio
32 / 32 / 26
Регистрация: 22.05.2015
Сообщений: 145
Завершенные тесты: 2
15.09.2015, 10:30     Как сравнить несколько(>2) элементов в одном массиве? #2
MsVe, доброго утра)

Вы не проверяете весь массив. Идёте лишь до 4-го элемента.
C++
1
for (int i=0; i<4 ; i++)
Условие выхода должно быть:
C++
1
i < 5;
Таким образом Вы пройдёте весь массив и сравните все элементы.

Плюс у Вас в последний цикл программа не входит из-за неправильного условия выхода.

После замены всех условий - вывод Вашего кода:
There is no equel elements.
There are 2 equel elements
There are 3 equel elements
There is no equel elements.
There is no equel elements.
There is no equel elements.
There is no equel elements.
There is no equel elements.
There is no equel elements.
Что тоже является не совсем корректным.
Может быть, Вам нужно добавить каких-то флагов и прерываний, или изменить условия.

Удачи)
Байт
 Аватар для Байт
13954 / 8785 / 1222
Регистрация: 24.12.2010
Сообщений: 15,901
15.09.2015, 10:44     Как сравнить несколько(>2) элементов в одном массиве? #3
MsVe, я бы завел еще один массив - счетчик повторений
ShadowFirst
54 / 47 / 1
Регистрация: 31.10.2013
Сообщений: 161
15.09.2015, 11:42     Как сравнить несколько(>2) элементов в одном массиве? #4
Вот может так?
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
#include <iostream>
#include <map>
 
#define COUNT_ARRAY 5
using namespace std;
typedef map <int, int> myMap;
 
bool isSort (int array[])
{
    for (int i=0; i<COUNT_ARRAY - 1; i++)
        if (array[i] > array[i+1]) return false;
    return true;
}
 
int main()
{
    myMap mapArray;
    int array[COUNT_ARRAY]={6,5,6,8,6}; //Задаем массив
    for (int i=0; i<COUNT_ARRAY ; i++) {
        int vall = mapArray[array[i]];
        mapArray[array[i]] = vall + 1;
    }
    myMap::iterator it = mapArray.begin();
    for (it; it != mapArray.end(); it++) {
        if (it->second == 4) {cout<<"There are 4 equel elements\n"; continue;}
        if (it->second == 3) {cout<<"There are 3 equel elements\n"; continue;}
        if (it->second == 2) {cout<<"There are 2 equel elements\n"; continue;}
    }
    cout << (isSort(array) ? "Array is sort up" : "Array is not sort up");
}
Байт
 Аватар для Байт
13954 / 8785 / 1222
Регистрация: 24.12.2010
Сообщений: 15,901
15.09.2015, 14:11     Как сравнить несколько(>2) элементов в одном массиве? #5
Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int array[COUNT_ARRAY]={6,5,6,8,6}; //Задаем массив
int povtor[COUNT_ARRAY];
for(int i=0; i<COUNT_ARRAY; i++) povtor[i] = 1;
for(int i=0; i<COUNT_ARRAY; i++) 
  for(j=0; j<i; j++)  
    if (array[i]==array[j]) {
     povtor[j]++;
     break;
   }
for(int i=2; i<=4; i++) 
  for(int j=0; j<COUNT_ARRAY; j++) 
    if (povtor[j]==i) {
      cout<<"There are " << i << "equel elements\n"; 
      break;
    }
MsVe
0 / 0 / 0
Регистрация: 15.09.2015
Сообщений: 2
16.09.2015, 21:58  [ТС]     Как сравнить несколько(>2) элементов в одном массиве? #6
ShadowFirst, спасибо! Ваш код прекрасно работает! Но пока, что он немного за рамками моих знаний!

Байт, спасибо огромное! Ваша идея меня спасла!
Yandex
Объявления
16.09.2015, 21:58     Как сравнить несколько(>2) элементов в одном массиве?
Ответ Создать тему
Опции темы

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