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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
morgan30
0 / 0 / 0
Регистрация: 21.04.2010
Сообщений: 8
01.07.2010, 09:22     Вывести отсутствующие элементы массива #1
Собственно есть массив, скажем a[5]={1,3,4,5,6}. Нужно сформировать второй массив такой же размерности, элементы которого будут недостающие значения первого массива в диапазоне от 0 до 9 b[5]={0,2,7,8,9}.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.07.2010, 09:22     Вывести отсутствующие элементы массива
Посмотрите здесь:

C++ Удалить из массива все элементы встречающиеся менее 3-х раз и вывести размер полученного массива и его содержимое.
C++ Вывести элементы массива на промежутке [ a,b ], вычислить количество элементов массива, заменить все положительные элементы
Сформировать и вывести на экран новый массив, который будет содержать вначале все элементы массива A(0), затем все элементы массива B(4) C++
C++ Массивы. Первый элемент массива 1 умножить на все элементы массива 2 и вывести результат...
Ввести элементы двумерного массива с клавы С++.Нужно вывести его на экран в виде таблицы, в конце каждой строки надо вывести самый большой элемент C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
grrrrr
 Аватар для grrrrr
45 / 45 / 7
Регистрация: 21.04.2009
Сообщений: 265
01.07.2010, 10:01     Вывести отсутствующие элементы массива #2
По логике, код должен работать. Но компилятор показывает что то не то. Что я делаю не так?

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++;
             }
             
    }
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
832 / 516 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
01.07.2010, 10:04     Вывести отсутствующие элементы массива #3
вариант:

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;
}
morgan30
0 / 0 / 0
Регистрация: 21.04.2010
Сообщений: 8
05.07.2010, 11:44  [ТС]     Вывести отсутствующие элементы массива #4
Большое спасибо за помощь , а можно как-то без объявления массива с 10 элементами?

Добавлено через 37 минут
Алгоритм не совсем корректно работает, а если изменить элементы массива first, то программа сразу неправильно работает..надо что-то универсальное(
grrrrr
 Аватар для grrrrr
45 / 45 / 7
Регистрация: 21.04.2009
Сообщений: 265
05.07.2010, 12:51     Вывести отсутствующие элементы массива #5
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";
morgan30
0 / 0 / 0
Регистрация: 21.04.2010
Сообщений: 8
05.07.2010, 17:14  [ТС]     Вывести отсутствующие элементы массива #6
ООО...оно, сам не додумался(((, большое вам человеческое спасибо)
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
832 / 516 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
05.07.2010, 18:31     Вывести отсутствующие элементы массива #7
Цитата Сообщение от morgan30 Посмотреть сообщение
Алгоритм не совсем корректно работает, а если изменить элементы массива first, то программа сразу неправильно работает..надо что-то универсальное(
хм, ну перед тем как что то отправить я проверяю программу в действии, - изменял элементы, все нормально. А как вы изменяли? покажите код, ошибки

Добавлено через 37 секунд
Цитата Сообщение от grrrrr Посмотреть сообщение
if( (i != x[0]) && (i != x[1]) && (i != x[2]) && (i != x[3]) && (i != x[4]))
это универсально?
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9372 / 5422 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
05.07.2010, 20:23     Вывести отсутствующие элементы массива #8
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;
}
Mr.X
Эксперт С++
 Аватар для Mr.X
2801 / 1577 / 247
Регистрация: 03.05.2010
Сообщений: 3,663
05.07.2010, 20:58     Вывести отсутствующие элементы массива #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
///////////////////////////////////////////////////////////////////////////////////////
//Собственно есть массив, скажем 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;
}
morgan30
0 / 0 / 0
Регистрация: 21.04.2010
Сообщений: 8
06.07.2010, 09:30  [ТС]     Вывести отсутствующие элементы массива #10
Цитата Сообщение от PointsEqual Посмотреть сообщение
хм, ну перед тем как что то отправить я проверяю программу в действии, - изменял элементы, все нормально. А как вы изменяли? покажите код, ошибки

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

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

Добавлено через 6 минут
Приношу свои извинения, работает, я ввел дважды одинаковые переменные поэтому вывело неправильно.
Mee
 Аватар для Mee
14 / 14 / 1
Регистрация: 05.07.2010
Сообщений: 88
06.07.2010, 10:57     Вывести отсутствующие элементы массива #11
С булевской переменной можно так
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;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.07.2010, 17:12     Вывести отсутствующие элементы массива
Еще ссылки по теме:

C++ Вывести элементы массива в виде таблицы и переставить его элементы местами
C++ Вывести элементы массива по условию
C++ Переписать в третий массив элементы первого массива, отсутствующие во втором

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

Или воспользуйтесь поиском по форуму:
morgan30
0 / 0 / 0
Регистрация: 21.04.2010
Сообщений: 8
06.07.2010, 17:12  [ТС]     Вывести отсутствующие элементы массива #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]<<" ";
    }
Yandex
Объявления
06.07.2010, 17:12     Вывести отсутствующие элементы массива
Ответ Создать тему
Опции темы

Текущее время: 13:51. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru