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

Вывести отсутствующие элементы массива

01.07.2010, 09:22. Показов 3671. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Собственно есть массив, скажем a[5]={1,3,4,5,6}. Нужно сформировать второй массив такой же размерности, элементы которого будут недостающие значения первого массива в диапазоне от 0 до 9 b[5]={0,2,7,8,9}.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.07.2010, 09:22
Ответы с готовыми решениями:

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

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

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

11
 Аватар для grrrrr
49 / 49 / 13
Регистрация: 21.04.2009
Сообщений: 265
01.07.2010, 10:01
По логике, код должен работать. Но компилятор показывает что то не то. Что я делаю не так?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
const int size = 5;
    int a[size] = {1, 3, 4, 5, 6};
    int b[size];
    
    int i, c;
    for(i=0, c=0; i<10; i++)
    {
             if(i != a[c])
             {
                   b[c] = i;                                       
                   c++;
             }
             
    }
0
ниначмуроФ
 Аватар для PointsEqual
851 / 535 / 110
Регистрация: 12.10.2009
Сообщений: 1,913
01.07.2010, 10:04
вариант:

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
#include <iostream>
 
int main()
{
    const int sz=10;
    int main[sz]={0,1,2,3,4,5,6,7,8,9};
    const int size=5;
    int first[size]={1,3,5,7,9};
    int second[size]={};
 
 
    for (int i=0; i<size; ++i){
        main[first[i]]=0;
    }
 
    int i=0;
    int j=0;
    while (i<sz){
        if (main[i]){
            second[j]=main[i];
            ++j;
        }
        ++i;
    }
 
     for (int i=0; i<size; ++i){
        std::cout<<second[i];
    }
 
    return EXIT_SUCCESS;
}
1
0 / 0 / 0
Регистрация: 21.04.2010
Сообщений: 8
05.07.2010, 11:44  [ТС]
Большое спасибо за помощь , а можно как-то без объявления массива с 10 элементами?

Добавлено через 37 минут
Алгоритм не совсем корректно работает, а если изменить элементы массива first, то программа сразу неправильно работает..надо что-то универсальное(
0
 Аватар для grrrrr
49 / 49 / 13
Регистрация: 21.04.2009
Сообщений: 265
05.07.2010, 12:51
morgan30, вот грубоватый, но рабочий пример.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
     int x[5] = {1, 3, 4, 5, 6};
     int y[5];
     int i, j=0;
     
     for(i=0, j=0; i<10; i++)
     {
          if( (i != x[0]) &&  (i != x[1]) && (i != x[2]) && (i != x[3]) && (i != x[4]))    
          {
              y[j] = i;
              j++;
          }
          
     }
 
     for(i=0; i<5; i++)
        cout << y[i] << " ";
     cout << "\n";
1
0 / 0 / 0
Регистрация: 21.04.2010
Сообщений: 8
05.07.2010, 17:14  [ТС]
ООО...оно, сам не додумался(((, большое вам человеческое спасибо)
0
ниначмуроФ
 Аватар для PointsEqual
851 / 535 / 110
Регистрация: 12.10.2009
Сообщений: 1,913
05.07.2010, 18:31
Цитата Сообщение от morgan30 Посмотреть сообщение
Алгоритм не совсем корректно работает, а если изменить элементы массива first, то программа сразу неправильно работает..надо что-то универсальное(
хм, ну перед тем как что то отправить я проверяю программу в действии, - изменял элементы, все нормально. А как вы изменяли? покажите код, ошибки

Добавлено через 37 секунд
Цитата Сообщение от grrrrr Посмотреть сообщение
if( (i != x[0]) && (i != x[1]) && (i != x[2]) && (i != x[3]) && (i != x[4]))
это универсально?
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
05.07.2010, 20:23
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 <stdio.h>
 
#define SIZE 5
 
int main(void){
    int a[SIZE] = { 1, 3, 5, 7, 9 }, b[SIZE] = { -1, -1, -1, -1, -1 }, i, k;
 
    for ( k = 0; k < SIZE * 2; ++k ){
        for ( i = 0; i < SIZE && a[i] != k; ++i )
            ;
        if ( i == SIZE ){
            for ( i = 0; i < SIZE; ++i ){
                if ( b[i] < 0 ){
                    b[i] = k;
                    break;
                }
            }
        }
    }
 
    printf("\nA: ");
    for ( i = 0; i < SIZE; ++i )
        printf("%d ", a[i]);
    printf("\nB: ");
    for ( i = 0; i < SIZE; ++i )
        printf("%d ", b[i]);
    printf("\n");
 
    return 0;
}
1
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
05.07.2010, 20:58
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
///////////////////////////////////////////////////////////////////////////////////////
//Собственно есть массив, скажем a[5]={1,3,4,5,6}. Нужно сформировать второй массив 
//такой же размерности, элементы которого будут недостающие значения первого массива 
//в диапазоне от 0 до 9 b[5]={0,2,7,8,9}.
///////////////////////////////////////////////////////////////////////////////////////
#include <algorithm>
#include <iostream>
 
void print_massiv(int* massiv, size_t  size)
{
    std::copy(massiv, massiv + size, std::ostream_iterator<int>(std::cout, " "));
    std::cout << std::endl;
}
 
int main()
{
    int a[] = {1, 3, 4, 5, 6, 11};
    const int ARR_SIZE = sizeof(a) / sizeof(int);    
    
    int b[ARR_SIZE];
 
    int a_ind = 0;
    int b_ind = 0;    
    for(int cur_num = 0; cur_num < ARR_SIZE * 2; ++cur_num)
    {
        cur_num == a[a_ind] ? ++a_ind : b[b_ind++] = cur_num;
    }
    print_massiv(a, ARR_SIZE);
    print_massiv(b, ARR_SIZE);  
    return 0;
}
1
0 / 0 / 0
Регистрация: 21.04.2010
Сообщений: 8
06.07.2010, 09:30  [ТС]
Цитата Сообщение от PointsEqual Посмотреть сообщение
хм, ну перед тем как что то отправить я проверяю программу в действии, - изменял элементы, все нормально. А как вы изменяли? покажите код, ошибки

Добавлено через 37 секунд

это универсально?
Нет, это тоже не универсально... проблема в том, что я начинающий, до функций я еще не дорос..поэтому мне сложновато пока разбираться с этим...Препад на паре говорил, что лучше всего задействовать булевскую переменную (типа флаг), которая меняет свое значение в зависимости от присутствия заданного числа в массиве...естественно как именно ее использовать не сказала. Вот я и сижу второй день пытаюсь написать(уже чисто спортивный интерес) с применением булевской переменной

Добавлено через 6 минут
Приношу свои извинения, работает, я ввел дважды одинаковые переменные поэтому вывело неправильно.
0
 Аватар для Mee
14 / 14 / 1
Регистрация: 05.07.2010
Сообщений: 88
06.07.2010, 10:57
С булевской переменной можно так
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
#include "stdafx.h"
#include <iostream> 
#include <cstdlib> 
using namespace std;
 
int main()
{
    const int n=5;
    int big[10]={1,2,3,4,5,6,7,8,9,10},i,j;
    int c[n];
    bool flag;
    int k=0;
    int b[n]={2,1,3,5,4};
    for (i=0; i<10; i++)
         {
             flag=false;
             for (j=0; j<n; j++)
                 if (big[i]==b[j]) 
                    {
                        flag=true;
                        break;
                    }
                 if (flag==false)
                      { 
                       c[k]=a[i];
                       k++;
                      }
          }
    for (i=0; i<n; i++)
        cout << c[i] << " ";
    cin.get();
    return 0;
}
1
0 / 0 / 0
Регистрация: 21.04.2010
Сообщений: 8
06.07.2010, 17:12  [ТС]
Спасибо, за еще один пример.

Добавлено через 1 час 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
const int size=5;
    int first[size]={},second[size]={};
    int k=0;
    bool flag;
    for (int i=0;i<size;i++)
    {
        cout<<"Vvedite "<<i<<" element massiva: ";
        cin>>first[i];
    }
    for(int i=0;i<10;i++)
    {
        flag=false;
        for(int j=0;j<size;j++)
        {
            if(i==first[j])
            {
                flag=true;
                break;
            }
        }
        if(flag==false)
        {
            second[k]=i;
            k++;
        }
    }
    for(int i=0;i<size;i++)
    {
        cout<<second[i]<<" ";
    }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.07.2010, 17:12
Помогаю со студенческими работами здесь

Вывести все цифры отсутствующие в числе
есть число, например, 93456 необходимо вывести 1 2 7 8 то есть все числа, которые в числе не встречаются. В голове есть примерное...

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

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

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

Заменить повторяющиеся элементы рандомного массива на нули и вывести их в конец массива
Заменить повторяющиеся элементы рандомного массива на нули и вывести полученные нули в конец массива. Не знаю как это сделать, помогите...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru