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

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

Войти
Регистрация
Восстановить пароль
 
Ученик кода
0 / 0 / 0
Регистрация: 12.06.2014
Сообщений: 76
#1

Как вывести несовпадающие элементы массива ? - C++

11.07.2014, 19:51. Просмотров 455. Ответов 8
Метки нет (Все метки)

вывести элементы массива t, которые не совпадают с элементами в массиве p
C++
1
2
3
4
5
6
7
8
9
10
11
for (i = 0; i < m; i++)
    {   
        for(j = 0; j < n; j++)
        {
            if (*(p+i)!=(*t+j))
            {
            cout <<*(t+i) << ' ';
            break;
            }
        }
    }
этот код почему-то выводит весь массив t
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.07.2014, 19:51
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как вывести несовпадающие элементы массива ? (C++):

Вывести элементы массива на промежутке [ a,b ], вычислить количество элементов массива, заменить все положительные элементы - C++
В одномерном массиве, состоящем из n вещественных элементов, – вывести на печать элементы массива, значения которых не принадлежат...

Как вывести все элементы массива? - C++
#include &quot;stdafx.h&quot; #include &quot;iostream&quot; #include &lt;iostream&gt; #include &lt;iomanip&gt; #include &lt;cstdlib&gt; #include &lt;stdlib.h&gt; #include...

Как вывести отрицательные элементы только в первом столбике массива? - C++
Как вывести отрицательные элементы только в первом столбике массива?

Сформировать и вывести на экран новый массив, который будет содержать вначале все элементы массива A(0), затем все элементы массива B(4) - C++
Здравствуйте! Помогите написать парочку программ... 3. Даны массивы A(0) и B(4). Сформировать и вывести на экран новый массив,...

Как в обратном порядке выстроить элементы побочной диагонали массива и вывести весь массив? - C++
как в обратном порядке выстроить элементы побочной диагонали массива и вывести этот весь массив??

Вывести элементы массива в виде таблицы и переставить его элементы местами - C++
Скажите каким образом переставляется двумерный массив ? К примеру : {1,2,3,4,5} мне нужно элементы поменять местами так чтобы последний (5)...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BF_
3 / 3 / 1
Регистрация: 07.09.2013
Сообщений: 78
11.07.2014, 20:09 #2
Цитата Сообщение от Ученик кода Посмотреть сообщение
if (*(p+i)!=(*t+j))
смотри сюда
замени на
C++
1
if ( *(p+i) != *(t+j) )
1
GuGo1991
267 / 261 / 93
Регистрация: 02.08.2012
Сообщений: 609
11.07.2014, 20:59 #3
BF_, не сработает, у * больший приоритет.
Ученик кода, логика поиска неправильная. Установите bool переменную и меняйте значение при
найдено/не найдено
1
bazJaz
34 / 31 / 10
Регистрация: 11.07.2014
Сообщений: 390
11.07.2014, 21:11 #4
n - размер массива

C++
1
for(int i = 0; i < n; i++){if(t[i]!=p[i]){cout<<"element t"<<t[i]<<endl;}}
0
GuGo1991
267 / 261 / 93
Регистрация: 02.08.2012
Сообщений: 609
11.07.2014, 21:15 #5
bazJaz, как я понял количество элементов в массивах разное
1
bazJaz
34 / 31 / 10
Регистрация: 11.07.2014
Сообщений: 390
11.07.2014, 21:46 #6
Цитата Сообщение от GuGo1991 Посмотреть сообщение
как я понял количество элементов в массивах разное
C++
1
2
3
4
5
6
for(int i = 0; i < n1 ; i++){
for(int j = 0 ; j < n2 ; j++){
if(t[i]!=p[j])
cout<<t[i]<<"\n";
}
}
0
Ученик кода
0 / 0 / 0
Регистрация: 12.06.2014
Сообщений: 76
11.07.2014, 22:15  [ТС] #7
Цитата Сообщение от GuGo1991 Посмотреть сообщение
логика поиска неправильная
можно подробнее ?

Добавлено через 7 минут
bazJaz, этот способ здесь не работает.
0
GuGo1991
267 / 261 / 93
Регистрация: 02.08.2012
Сообщений: 609
11.07.2014, 23:07 #8
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Ученик кода, во вложенном цикле элемент массива p сравнивается с каждым элементом
массива t и в случае несоответствия выводится элемент массива t по индексу элемента массива p,
(не понятно зачем) что в свою очередь может привести к выходу за границы массива t в случае если элементов
в p больше чем в t.
Предлагаю такой вариант с переменной bool в качестве "флага" и вложенный цикл будет проходить p массив:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    for (i = 0; i < n; i++)
    {   
        bool check = false;
        for(j = 0; j < m; j++)
        {
            if (*(p+j)==(*(t+i)))
            {
                check = true;
                break;
            }
        }
        if(!check)
            std::cout << *(t+i) << ' ';
    }
2
IrineK
Заблокирован
11.07.2014, 23:09 #9
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
//вывести элементы массива t, которые не совпадают с элементами в массиве p 
#include <iostream>
#include <ctime>
 
int *CreateArray (int N)
{
    int *arr = new int [N];
    for (int i = 0; i<N; i++)
        arr[i] = rand()%10;
 
    return arr;
}
 
void PrintArray (char name, int *arr, int N)
{
    std::cout <<"\nArray "<<name <<":\n";
    for (int i = 0; i<N; i++)
        std::cout << *(arr+i) << "  ";
    std::cout <<"\n";
}
 
bool IsUnique (int num, int *p, int M)
{
    for (int j = 0; j<M; j++)
        if( num == *(p+j))
            return false;
    return true;
}
 
 
//----------------------------------------------------------------------------
int main()
{   
    srand ((unsigned int)time (NULL));
    
    int N = 10, M = 15;
 
    int *t = CreateArray (N);
    int *p = CreateArray (M);
 
    PrintArray ('t', t, N);
    PrintArray ('p', p, M);
 
    std::cout <<"\nElements found in t only\n";
    for (int i=0; i<N; i++)
        if (IsUnique (*(t+i), p, M))
            std::cout << *(t+i) << "  ";
 
    delete []t;
    delete[]p;
 
    std::cin.get();
    return 0;
}
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.07.2014, 23:09
Привет! Вот еще темы с ответами:

Первый элемент массива 1 умножить на все элементы массива 2 и вывести результат - C++
Добрый день. Прошу помочь решить вот такую вот задачку: &quot;есть два массива, в которых границы задает пользователь. Например, один...

Удалить из массива все элементы встречающиеся менее 3-х раз и вывести размер полученного массива и его содержимое. - C++
Помогите пожалуйста решить задачу!!!!!! Дан целочисленный массив размера n. Удалить из массива все элементы встречающиеся менее 3-х...

Ввести элементы двумерного массива с клавы С++.Нужно вывести его на экран в виде таблицы, в конце каждой строки надо вывести самый большой элемент - C++
Вот мой код : #include &lt;iostream&gt; #include &lt;Windows.h&gt; using namespace std; using std::cout; using std::cin; int...

Вывести на экран отдельно положительные элементы массива X (16) и отдельно отрицательные элементы - C++
Вывести на экран отдельно положительные элементы массива X (16) и отдельно отрицательные элементы.


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
11.07.2014, 23:09
Ответ Создать тему
Опции темы

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