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

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

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

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

15.09.2015, 09:27. Просмотров 522. Ответов 5
Метки нет (Все метки)

Добрый день!
Помогите, пожалуйста! Никак не могу разобраться, как сравнивать элементы одного и того же массива между собой!

Полная задача требует выяснить если в массиве:
Два одинаковых элементы
Три
Четыре
Два и Три одновременно
Являются ли элементы последовательными(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.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.09.2015, 09:27
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как сравнить несколько(>2) элементов в одном массиве? (C++):

Сравнить последние несколько элементов. Как? - C++
у меня счетчик нескольких событий. Скажем ++А1 и ++А2. Они могут поступать в разной последовательности и долго. Как мне сравнить...

записать несколько элементов в вектор сразу, как в массиве - C++
Добрый день, форум. Возможно ли в векторе записать несколько элементов одним разом, как в массиве? Например: массив: int massive =...

В одном массиве M[10] подчитать количество элементов M[i] кратных 5 и 7 - C++
в одном массиве M подчитать количество элементов M кратных 5 и 7

Вычесть два массива, если в одном массиве больше элементов, чем в другом - C++
Здраствуйте! Сижу изучаю одномерные массивы, но зашел в тупик на счет вычитания массивов... Для вас это конечно просто, но я чего-то не...

Как использовать одну и ту же переменную несколько раз в одном коде - C++
подскажите как использовать одну и туже переменную несколько раз в одном коде допустим А

Как можно сравнить введенные символы с теми что есть в массиве? - C++
Как можно сравнить что было введено с клавиатуры? #include &lt;iostream&gt; using namespace std; int main() { char x={&quot;норма&quot;};...

5
awalio
32 / 32 / 27
Регистрация: 22.05.2015
Сообщений: 146
Завершенные тесты: 2
15.09.2015, 10:30 #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.
Что тоже является не совсем корректным.
Может быть, Вам нужно добавить каких-то флагов и прерываний, или изменить условия.

Удачи)
0
Байт
Диссидент
Эксперт C
17225 / 11295 / 1789
Регистрация: 24.12.2010
Сообщений: 22,234
15.09.2015, 10:44 #3
MsVe, я бы завел еще один массив - счетчик повторений
0
ShadowFirst
55 / 48 / 1
Регистрация: 31.10.2013
Сообщений: 164
15.09.2015, 11:42 #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");
}
1
Байт
Диссидент
Эксперт C
17225 / 11295 / 1789
Регистрация: 24.12.2010
Сообщений: 22,234
15.09.2015, 14:11 #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;
    }
2
MsVe
0 / 0 / 0
Регистрация: 15.09.2015
Сообщений: 2
16.09.2015, 21:58  [ТС] #6
ShadowFirst, спасибо! Ваш код прекрасно работает! Но пока, что он немного за рамками моих знаний!

Байт, спасибо огромное! Ваша идея меня спасла!
0
16.09.2015, 21:58
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.09.2015, 21:58
Привет! Вот еще темы с ответами:

Найти в массиве элемент с заданным значением; если таких элементов несколько, вывести индекс последнего из них - C++
доброй ночи! Дан массив a. Элементы массива отсортированы в порядке возрастания. Используя метод двоичного поиска, найти в массиве...

Как сравнить сумму элементов массива? - C++
нужно сравнить сумму элементов массива, ввод при помощи for осуществляется(

Несколько условий в одном IF - C++
Есть функция int settings(int *life_time, int *cur_yea, int *cur_mon, int *cur_day) { char slovo; long fail_long=0;//...

Несколько условий в одном if - C++
например в паскале можно if (a&gt;b)and(a&lt;10) в с++ как этосделать?


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

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

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