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

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

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

Поиск одинаковых элементов массива - C++

05.04.2013, 10:07. Просмотров 8675. Ответов 14
Метки нет (Все метки)

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
#include <conio.h>
#include <locale>
#include <iostream>
 
using namespace std;
 
int main ()
{
    setlocale (LC_ALL, "RUSSIAN");
    
    int mas1    [3][3];
    int mas2    [9];
    int i, j, f, s;
    bool flag = false;
 
    cout << "Ввдите элементы массива: ";
 
    for (i=0; i<3; i++) {
        for (j=0; j<3; j++) {
            cin >> mas1 [i][j];
        }
    }
    
    
    for (i=0; i<3; i++) {
        for (j=0; j<3; j++) {
            mas2 [i+j*3] = mas1 [i][j];
        }
    }
 
    for (f=0; f<9; f++) {
        for (s=f+1; s<9; s++) {
            if (mas2 [f] == mas2 [s]) {
                flag = true; 
                break;
            }
         } 
        break;
    }  
        if (flag)
                cout << "В массиве имеются повторяющиеся элементы!\n";
        else    cout << "В массиве нет повторяющихся элементов!\n";
 
   _getch ();
    
    return 0;
}
Объясните если можете почему программа не корректно работает? Например если ввести элементы (1,2,3,4,5,6,6,7,8) а она выводит в массиве нет повторяющихся элементов
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.04.2013, 10:07
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Поиск одинаковых элементов массива (C++):

Поиск длинной цепочки одинаковых элементов массива - C++
Написать программу поиска самой длинной цепочки из подряд идущих одинаковых элементов в массиве. Написал вот так, но подсчёт ведётся...

Поиск одинаковых элементов - C++
написал программу поиска одинаковых элементов, а вот если их там нет у меня блин не получается вывести просто &quot;одинаковых элементов нет&quot;,...

Поиск одинаковых элементов в массиве - C++
Нужно написать код c++ который будет выводить имеются ли в заданном одномерном массиве повторяющиеся элементы(массив динамический(malloc))...

Поиск одинаковых элементов в массиве - C++
помогите найти ошибку в программе. программа должна найти различные элементы в массиве и и напечатать количество их повторений. #include...

Поиск одинаковых элементов в массивах! - C++
Даны 2 массива(x,y) cоставить новый массив (z), из тех элементов массива (x) которые не входят в массиве (у). Я вот что написал но...

Поиск одинаковых элементов в массиве - C++
#define _CRT_SECURE_NO_WARNINGS #include &lt;stdio.h&gt; #include &lt;time.h&gt; #include &lt;stdlib.h&gt; #define N 10 int main() { ...

14
lemegeton
2931 / 1360 / 136
Регистрация: 29.11.2010
Сообщений: 2,725
05.04.2013, 10:12 #2
Цитата Сообщение от Petar07 Посмотреть сообщение
}
* * * * break;
* * }
Из-за вот этого второго брейка.
1
Petar07
2 / 2 / 0
Регистрация: 11.10.2012
Сообщений: 106
05.04.2013, 10:17  [ТС] #3
Вот спасибо большое!)
1
Daheimm
2 / 2 / 1
Регистрация: 30.11.2015
Сообщений: 40
30.11.2015, 21:00 #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
31
32
33
34
35
#include <iostream>
using namespace std;
void main()
{
    setlocale(LC_ALL, "Russian");
 
    const int date = 10;
    int arra[date];
    int summaeven = 0, summaodd = 0;
    int empare = 0;
 
    for (int i = 0;i < date;i++)
    {
        cout << "Введите число";
        cin >> arra[i];
    }
 
    for (int a = 0;a <11;a++)
    {
        empare = 0;
        
        for (int b = 0;b <= date;b++)
        {
            if (arra[b] == a) empare++;
 
        }
        if (empare >= 2)
            cout << "Повторяется = " << --empare << "раз(а) число " << a << endl;
 
    }
 
 
 
    system("pause");
}
0
_Unknown_
4 / 4 / 2
Регистрация: 07.05.2018
Сообщений: 14
09.05.2018, 21:07 #5
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
#include "stdafx.h"
#include <locale>
#include <iostream>
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "RUSSIAN");
    int i, j, k=0, mas1[10], mas2[10];
 
    cout << "Введите элементы массива первого массива: "<<endl;
    //Ввод элементов первого массива
    for (i = 0; i<10; i++) {
            cin >> mas1[i];
    }
    //Вывод элементов первого массива
    for (i = 0; i<10; i++) {
        cout << mas1[i] << " ";
    }
 
    cout << "Ввдите элементы массива второго массива: " << endl;
    //Ввод элементов второго массива
    for (j = 0; j<10; j++) {
        cin >> mas2[j];
    }
    //Вывод элементов второго массива
    for (j = 0; j<10; j++) {
        cout << mas2[j] << " ";
    }
    //Сравнение элементов двух массивов
    for (i = 0; i <10; i++){
        for (j = 0; j < 10; j++){
            if (mas1[i] == mas2[j])
                k++;
 
        }
    }
    cout << "Количество повторяющихся элементов = " << k << endl;
    system("pause");
    return 0;
}
Вот так можно сделать
0
Yetty
331 / 321 / 143
Регистрация: 18.12.2017
Сообщений: 1,337
09.05.2018, 22:51 #6
Цитата Сообщение от _Unknown_ Посмотреть сообщение
Вот так можно сделать
_Unknown_, Ваш код ошибочен.
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 2 2 2 2 2
k=50
0
_Unknown_
4 / 4 / 2
Регистрация: 07.05.2018
Сообщений: 14
09.05.2018, 23:08 #7
Yetty, А в чем ошибка то? 1 единица повторяется 5 раз вторая ...... десятая, в итоге 50 раз

Добавлено через 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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include "stdafx.h"
#include <locale>
#include <iostream>
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "RUSSIAN");
    int i, a = 0, j, k = 0, mas1[10], mas2[10];
 
    cout << "Введите элементы массива первого массива: " << endl;
    //Ввод элементов первого массива
    for (i = 0; i<10; i++) {
        cin >> mas1[i];
    }
    //Вывод элементов первого массива
    for (i = 0; i<10; i++) {
        cout << mas1[i] << " ";
    }
    cout << endl;
 
    cout << "Ведите элементы массива второго массива: " << endl;
    //Ввод элементов второго массива
    for (j = 0; j<10; j++) {
        cin >> mas2[j];
    }
    //Вывод элементов второго массива
    for (j = 0; j<10; j++) {
        cout << mas2[j] << " ";
    }
    cout << endl;
 
    //Сравнение элементов двух массивов
    for (i = 0; i <10; i++){
        for (j = 0; j < 10; j++){
            if (mas1[i] == mas2[j])
                k++;
        }
        if (k != 0)
            a += 1;
        k = 0;
    }
 
    cout << "Количество одинаковых элементов массива элементов = " << a << endl;
    system("pause");
    return 0;
}
Ну могу Вам вот так предложить =)
0
Yetty
331 / 321 / 143
Регистрация: 18.12.2017
Сообщений: 1,337
09.05.2018, 23:30 #8
Цитата Сообщение от _Unknown_ Посмотреть сообщение
Yetty, А в чем ошибка то?
в том что Вы пишете:
Цитата Сообщение от _Unknown_ Посмотреть сообщение
cout << "Количество повторяющихся элементов = " << k << endl;
а повторяющихся элементов не 50, а 2 (1 и 2)
Цитата Сообщение от _Unknown_ Посмотреть сообщение
Ну могу Вам вот так предложить =)
я собственно ничего не просил , но так тоже ошибочно:
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 2 2 2 2 2
a=10
рекомендую тестировать программы, прежде чем выкладывать, это ведь не сложно, правда ?
0
_Unknown_
4 / 4 / 2
Регистрация: 07.05.2018
Сообщений: 14
10.05.2018, 10:17 #9
Yetty, По вашему, сколько должно выдавать? Когда дается два массива, и Вам надо сравнить элементы в них
0
qwe123qwea
24 / 24 / 9
Регистрация: 20.03.2017
Сообщений: 152
Завершенные тесты: 1
10.05.2018, 10:33 #10
_Unknown_, если я правильно понял, речь идёт не о количестве повторений каждого числа, а о том сколько элементов повторяются в массиве.
0
_Unknown_
4 / 4 / 2
Регистрация: 07.05.2018
Сообщений: 14
10.05.2018, 17:50 #11
qwe123qwea,
Цитата Сообщение от Petar07 Посмотреть сообщение
if (flag)
* * * * * * * * cout << "В массиве имеются повторяющиеся элементы!\n";
* * * * else* * cout << "В массиве нет повторяющихся элементов!\n";
В условии вообще вот так задано)
0
Yetty
331 / 321 / 143
Регистрация: 18.12.2017
Сообщений: 1,337
10.05.2018, 23:01 #12
Цитата Сообщение от _Unknown_ Посмотреть сообщение
Yetty, По вашему, сколько должно выдавать?
В зависимости от того, что делать. Я стараюсь не решать не сформулированные задачи, иногда предлагаю автору темы сообщить условие. Вы решили сами создать новое условие и по этому условию решить задачу, поэтому в Ваших вариантах, отталкивался от того, что Вы сообщаете на выходе. В первом варианте:
Цитата Сообщение от _Unknown_ Посмотреть сообщение
cout << "Количество повторяющихся элементов = " << k << endl;
для массивов:
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 2 2 2 2 2
Должно выдать: Количество повторяющихся элементов: 20, оригинальных: 2 (1 и 2)
ИЛИ: Количество повторяющихся элементов первого массива: 10, оригинальных: 1 (1), количество повторяющихся элементов второго массива: 10, оригинальных: 2 (1 и 2)

В любом случае 50 быть не может, так это число в 2.5 раза превышает общее количество элементов
0
SuperKir
10.05.2018, 23:19
  #13

Не по теме:

Yetty, В его случае, он каждый элемент смотрел, сколько раз повторяется в другом массиве:
Ar1: 1 1 1 1 1 1 1 1 1 1
Ar2: 1 1 1 1 1 2 2 2 2 2

Ar1[0] = 1
В Ar2 Ar1[0] = 5

Ar1[1] = 1
В Ar2 Ar1[1] = 5

Ar1[2] = 1
В Ar2 Ar1[2] = 5
...
Ну и тд, поэтому в итоге и вышло 50.
P.s. К сути темы не относится совсем)

0
Yetty
331 / 321 / 143
Регистрация: 18.12.2017
Сообщений: 1,337
11.05.2018, 01:08 #14
Цитата Сообщение от SuperKir Посмотреть сообщение
P.s. К сути темы не относится совсем)
эт само собой. мож автору спустя 5 лет пригодится, так сказать свежий взгляд на старую задачу, мож ещё кому.
в этом и состоит основная ошибка ИМХО - хочешь сам сформулировать новую задачу и предложить вариант решения - создай себе новую тему и жди комментов , а не захламляй левыми условиями и левыми решениями тему автора.
Цитата Сообщение от SuperKir Посмотреть сообщение
Yetty, В его случае, он каждый элемент смотрел, сколько раз повторяется в другом массиве:
SuperKir, эт всё понятно, выводил бы, как Вы пишете:
Цитата Сообщение от SuperKir Посмотреть сообщение
сколько раз [элементы первого массива] повторя[Ю]тся в другом массиве
и вопроса бы не было (хотя я и не тестировал этот вариант). можно ещё так: пар повторяющихся элементов: k
(но тогда пары помассивно тоже добавить)
0
Krovostok123
0 / 0 / 0
Регистрация: 29.12.2017
Сообщений: 5
Вчера, 14:19 #15
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
#include <iostream>
#include <string>
 
using namespace std;
 
int main()
{setlocale(LC_ALL, "rus");
  srand(time(0));
  int mas[100]; int arr[100]; int i=0; int n=0; int k=0; int shet;
  cout << "Размер массива : ";
  cin >> n;
  
  cout << "Исходный массив : " << endl;
  for (i=0; i<n; i++) { mas[i]= 1 + rand() % 20; 
  cout << i+1 << "::" << "[" << mas[i] << "]" << endl; } 
    
  shet=0;
for (i=0; i<n; i++) {
  for (k=i+1; k<n; k++)
    if (mas[i] == mas[k]) {shet++; cout << "Одинаковый элемент :" << mas[i] << endl;  }
}
   
    cout << "Кол-во одинаковых элементов : " << shet << endl;
    
    
    system("pause");
    return 0;
  }
без повторений.
0
Вчера, 14:19
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
Вчера, 14:19
Привет! Вот еще темы с ответами:

Поиск одинаковых элементов в векторе - C++
Здравствуйте , уже задавал этот вопрос и пользовался разными предложенными методами нахождения одинаковых чисел в векторе , но не...

Поиск одинаковых элементов в 2 массивах - C++
Всем привет) Как можно организовать поиск одинаковых элементов в 2 массивах? (сам цикл подскажите пож...) Спасибо заранее)

Поиск одинаковых элементов в одномерном массиве - C++
Необходимо определить есть ли в одномерном массиве одинаковые элементы. Программа находит одинаковые элементы , но она пропускает последний...

Поиск одинаковых элементов в бинарном дереве. - C++
Задано бинарное дерево. Определить, есть ли в этом дереве хотя бы два одинаковых элемента. Вывести на экран все одинаковые элементы в...


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

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

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