Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/18: Рейтинг темы: голосов - 18, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 15.09.2015
Сообщений: 2
1

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

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

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

Полная задача требует выяснить если в массиве:
Два одинаковых элементы
Три
Четыре
Два и Три одновременно
Являются ли элементы последовательными(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)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.09.2015, 09:27
Ответы с готовыми решениями:

Как сравнить элементы в одном одномерном массиве в цикле for
Нужно сравнить элементы в одном одномерном рандомном массиве и, если есть совпадающие элементы...

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

Как расположить несколько элементов в одном окне?
У меня есть окно, открывающееся на весь экран. На нем должны быть расположены четыре таблицы, как...

Как сравнить количество одинаковых элементов в двумерном массиве
Здравствуйте! Кто скажет, как сравнить количество одинаковых элементов в двумерном массиве и...

5
34 / 34 / 36
Регистрация: 22.05.2015
Сообщений: 146
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
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
15.09.2015, 10:44 3
MsVe, я бы завел еще один массив - счетчик повторений
0
55 / 48 / 13
Регистрация: 31.10.2013
Сообщений: 166
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
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
15.09.2015, 14:11 5
Лучший ответ Сообщение было отмечено MsVe как решение

Решение

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
0 / 0 / 0
Регистрация: 15.09.2015
Сообщений: 2
16.09.2015, 21:58  [ТС] 6
ShadowFirst, спасибо! Ваш код прекрасно работает! Но пока, что он немного за рамками моих знаний!

Байт, спасибо огромное! Ваша идея меня спасла!
0
16.09.2015, 21:58
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.09.2015, 21:58
Помогаю со студенческими работами здесь

Несколько максимумов в одном массиве
Имеется массив данных, синус, порядка 1000 периодов. Необходимо найти среднее значение всех...

Сравнить массивы, и элементы, которые присутствуют в одном массиве, но отсутствуют в другом вывести в третий
Есть два int массива, нужно их сравнить и элементы которые присутствуют в одном массиве, но...

Поиск в одном массиве элементов, которых нет в другом массиве
Помогите, пожалуйста, не могу догадаться как исправить код, чтоб вывел решение следующей задачи: ...

записать несколько элементов в вектор сразу, как в массиве
Добрый день, форум. Возможно ли в векторе записать несколько элементов одним разом, как в массиве?...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru