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

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

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

Заполнить массив C повторяющимися элементами из массива А, которых нет в массиве Б - C++

14.02.2013, 19:41. Просмотров 510. Ответов 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
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
setlocale(LC_ALL, ".1251");
int a[20],b[20],c[20],na,nb,nc=0,i,j;
printf ("введите длину массива А:");  scanf("%d",&na);
printf ("введите массив А\n");
for (i=0;i<na;i++) scanf("%d",&a[i]);
printf ("введите длину массива B:");  scanf("%d",&nb);
printf ("введите массив B\n");
for (i=0;i<nb;i++) scanf("%d",&b[i]);
printf ("Исходный массив А");
for(i=0;i<na;i++) printf("%7d",a[i]);
printf ("\n");
printf ("Исходный массив B");
for(i=0;i<nb;i++) printf("%7d",b[i]);
printf ("\n");
for (i=0;i<na;i++){
    for(j=0;j<na&&(a[i]!=a[j]||i==j);j++);
       if (j<na)
          {
          for (j=0;j<nb&&a[i]!=b[j];j++);
          if (j==nb)
             {
             for (j=0;j<nc&&a[i]!=c[j];j++);
             if (j==nc)
                c[nc++]=a[i];
             }
          }
       }
if (nc==0)
   printf("массив C пуст\n");
else
   { printf("Массив C\n");
     for(i=0;i<nc;i++) printf("%7d",c[i]);
     printf ("\n");
   }
return 0;
}
Вот мой код. Вроде бы я всё сделал по рабочему алгоритму, однако, массив Ц всегда пуст в моей проге. (NC не увеличивается) Прошу помощи!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.02.2013, 19:41
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Заполнить массив C повторяющимися элементами из массива А, которых нет в массиве Б (C++):

Создать массив из элементов первого массива, которых нет во втором массиве - C++
На основе исходных массивов A и B (n и m – рабочие размеры массивов) сформировать массив C, который будет состоять из чисел, которые входят...

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

Сформулировать массив М3, элементами которого есть те члены М2, которых нет в М1 - C++
Дано два случайных одномерных масива целых чисел М1 и М2. Сформулировать масив М3, элементами которого есть те члены М2, которых нет в М1.

Дан массив A[N]. заполнить массив В[N] элементами массива A[N], которые удовлетворяют двойному неравенству - C++
Дан массив A. заполнить массив В элементами массива A, которые удовлетворяют двойному неравенству: A&lt; A или A&lt; A. Незаполненные элементы...

Значения, которые есть в первом массиве и которых нет во втором массиве, скопировать в третий массив - C++
Помогите сделать вот условие Объявить тип структуры, содержащий сведения о фамилии и адреса людей. Ввести два массива таких...

Скопировать в третий массив структуры, которые есть в первом массиве и которых нет во втором массиве - C++
Огласить тип структуры, которая включает в себя данные про фамилии и адреса людей. Ввести два массива таких структур. Значения которые есть...

2
dimon_91
10 / 10 / 1
Регистрация: 06.05.2009
Сообщений: 34
15.02.2013, 10:46 #2
Я бы несколько иначе организовал проверку элементов:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int i,j,k;
bool flag=false; //флаг устанавливается, если элемент есть в массиве b
for(i=0;i<na;i++)
{
    for(j=0;j<na;++j)
        if(a[i]==a[j] && i!=j) //повторяющиеся элементы a
        {
            flag=false;
            for(k=0;k<nb;k++)
                if(a[i]==b[k]) //элемент встречается в b
                {
                    flag==true;
                    break;
                }
            if(!flag) //если не встретился
                c[nc++]=a[i];//добавляем в c
        }
}
1
Sabonar
3 / 3 / 0
Регистрация: 11.10.2012
Сообщений: 27
15.02.2013, 19:47  [ТС] #3
Цитата Сообщение от dimon_91 Посмотреть сообщение
Я бы несколько иначе организовал проверку элементов:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int i,j,k;
bool flag=false; //флаг устанавливается, если элемент есть в массиве b
for(i=0;i<na;i++)
{
    for(j=0;j<na;++j)
        if(a[i]==a[j] && i!=j) //повторяющиеся элементы a
        {
            flag=false;
            for(k=0;k<nb;k++)
                if(a[i]==b[k]) //элемент встречается в b
                {
                    flag==true;
                    break;
                }
            if(!flag) //если не встретился
                c[nc++]=a[i];//добавляем в c
        }
}
Забыл сказать, что нужно учитывать, чтобы в массиве С элементы не повторялись, но за альтернативу спасибо. с флагом на много удобнее.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.02.2013, 19:47
Привет! Вот еще темы с ответами:

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

Заполнить массив в структуре элементами другого массива - C++
Не могу понять как сделать так, чтобы элементам массива в структуре присвоить значения простого массива. пробую и strcpy() и просто...

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

Заполнить массив элементами в зависимости от знака соответстующих элементов входящего массива - C++
Дан двумерный массив A. Массив B(5) нужно построить следующим образом: если в массиве А в столбце j элементы будут положительными то к...


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

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

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