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

Объясните код - нахождения повторений в массиве

13.09.2017, 19:55. Показов 941. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, объясните данную часть кода - помеченную комментариями (исправьте или дополните их).
Задача: найти в заданном массиве повторяющиеся числа более 2 раз и вывести их на экран.

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
     const int s = 10;
         int a[s];
         int c=0, d=0;
         for (int i = 0; i < s; i++) {
        cout << "Введите элементы массива: ";
        cin >> a[i];
    }
        for (int i = 0; i < s; i++) { //Задается главный цикл задачи.
         for (int j = 0; j < s; j++) { //Задается цикл проверки элементов.
            if (i >= j) //Если элементы не одинаковые, то цикл продолжается.
            {
                continue;
            }
            if(a[i]==a[j]) //Если элементы одинаковые, то идет проверка на повторения в массиве.
            {
                for (c=0; c < i; c++) // ???
                {
                    if (a[c] == a[i]) // Если они одинаковые, более 1 раза, то идет остановка проверки и выход во внешний цикл.
                    {
                        d = 1;
                        break;
                    }
                }
                if (d == 0) //Если ???, то выводит на экран повторяющиеся элементы массива и остановка цикла.
                    cout << a[i] << " ";
                break;
            }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.09.2017, 19:55
Ответы с готовыми решениями:

Объясните код нахождения максимального элемента матрицы
Объясните пожалуйста этот код. Желательно детально #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt;...

Отладить код нахождения минимального и максимального элемента в линейном массиве из 15 элементов
#include&lt;stdio.h&gt; #include&lt;stdlib.h&gt; #include&lt;conio.h&gt; int main () { clrscr (); int i; int...

Вставить функцию в код по подсчету времени на нахождения ключа в массиве (бинарный поиск)
помогите вставить функцию в код по подсчету времени на нахождения ключа в массиве(бинарный поиск) ...

Нахождения самой длинной подстроки без повторений
Всем доброго времени суток! Застрял с решением одной задачи. Не могли бы вы мне навести меня на...

2
11 / 11 / 6
Регистрация: 12.05.2016
Сообщений: 42
13.09.2017, 22:36 2
Возможно, я не понял задачи, ну а если правильно понял, то как по мне чет вы лишние действия делаете, по сему начеркал свое. Но тут есть проблемка, что если более двух раз повторяеться, значит больше раз и выведиться на экран, по сему немного ниже код где используеться доп масив.
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>
using namespace std;
 
int main()
{
    setlocale(0, "");
 
    const int s = 10;
    int a[s];
 
    for (int i = 0; i < s; i++)
    {
        cout << "Введите элементы массива: ";
        cin >> a[i];
    }
 
    for (int i = 0; i < s; i++)
    { //Задается главный цикл задачи.
        for (int j = i + 1; j < s; j++) //Задается цикл проверки элементов. Который всегда начинаеться с i + 1, что бы не смотреть елементы что уже смотретли, а i что бы не сравнить один и тот же елемент
        {
            if(a[i] == a[j])
            {
                cout << a[i] << " ";
            }
         }
    }
 
    //system("pause");
    return 0;
}
тут доп. массив:
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include <iostream>
using namespace std;
 
int main()
{
    setlocale(0, "");
 
    const int s = 10;
    int a[s];
    int top = 0, b[s]; //топ нам показывает сколько мы элементов занесли в b, ниже поймешь
 
    for (int i = 0; i < s; i++)
    {
        cout << "Введите элементы массива: ";
        cin >> a[i];
    }
 
    for (int i = 0; i < s; i++)
    { //Задается главный цикл задачи.
        for (int j = i + 1; j < s; j++) //Задается цикл проверки элементов. Который всегда начинаеться с i + 1, что бы не смотреть елементы что уже смотретли, а i что бы не сравнить один и тот же елемент
        {
            if(a[i] == a[j]) // Сравниваем эелементы массива.
            {
 
                if(top == 0)// если впервые всптречаем одинаковые элементы то сразу заносим их в второй массив
                {
                    b[top] = a[i];
                    top++;
                }
                else // иначе проверяем был ли этот елементы раньше
                {
                    bool itWas = 0; //логическая переменная "этоБыло"
                    for(int k = 0; k < top; k++)
                    {
                        if(a[i] == b[k])//елси при сравнении елемента a[i](который являеться повторяющемся в масиве a) с всеми елементами что мы занесли в массив b выходит что он был то ...
                        {
                            itWas = 1; //то ... мы указываем что он был делая логическую переменную "этоБыло" равной правде.
                        }
                    }
                    if(!itWas) // если "этоБыло" ложь - значит можем спокойно занести элемент a[i] в массив b
                    {
                        b[top] = a[i];
                        top++;
                    }
                }
            }
         }
    }
 
    for(int i = 0; i < top; i++) // Выводим елементы из массива b
    {
        cout << b[i] << " ";
    }
    //system("pause");
    return 0;
}
0
0 / 0 / 0
Регистрация: 08.09.2017
Сообщений: 40
13.09.2017, 22:46  [ТС] 3
Сисик, Спасибо большое за объяснение )
0
13.09.2017, 22:46
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.09.2017, 22:46
Помогаю со студенческими работами здесь

Написать программу для нахождения an с заданным числом повторений
Вычислить. 1+2a+3a2+...+(n+1)an a=2.2 n=30

Создать программу для нахождения максимального числа повторений,
Имеется файл RAND.FIL(лежит в архиве) в нём 50000 чисел, от 0 до 90 в двоичной системе! Нужной...

Количество повторений в массиве
В общем нужно узнать количество повторений в массиве type mat=record q,w:real; m:array of real;...

Объясните суть работы программы нахождения суммы
Обьясните пожалуйста суть работы этой программы. Я просто полный нуб в этом. Каким образом мы...


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

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