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

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

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

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

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

Сравнить последние несколько элементов. Как? - 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;};...

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

Удачи)
Байт
Эксперт C
15846 / 10173 / 1524
Регистрация: 24.12.2010
Сообщений: 19,184
15.09.2015, 10:44     Как сравнить несколько(>2) элементов в одном массиве? #3
MsVe, я бы завел еще один массив - счетчик повторений
ShadowFirst
55 / 48 / 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");
}
Байт
Эксперт C
15846 / 10173 / 1524
Регистрация: 24.12.2010
Сообщений: 19,184
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;
    }
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.09.2015, 21:58     Как сравнить несколько(>2) элементов в одном массиве?
Еще ссылки по теме:

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

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

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

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

Несколько строк в одном string - C++
Добрый день! Такой вопрос. как сделать, что бы 1 string содержал несколько строк текста?(как его создать и выводить) так чтобы...

Несколько *.cpp в одном проекте - C++
Добрый день! В приложении требуется несколько *.cpp как выполнить код каждой *.cpp ?


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

Или воспользуйтесь поиском по форуму:
MsVe
0 / 0 / 0
Регистрация: 15.09.2015
Сообщений: 2
16.09.2015, 21:58  [ТС]     Как сравнить несколько(>2) элементов в одном массиве? #6
ShadowFirst, спасибо! Ваш код прекрасно работает! Но пока, что он немного за рамками моих знаний!

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

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