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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 22, средняя оценка - 4.68
TheWitcher
1 / 1 / 0
Регистрация: 30.09.2010
Сообщений: 23
#1

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

09.11.2011, 23:39. Просмотров 3040. Ответов 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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include <iostream.h>
#include <iomanip.h>
#include <conio.h>
main()
{
int arraySize;
 
char a[100], b[100], c[5]={0,0,0,0,0};
int m,n,u,k,j,min,hold,h,t;
u=0;
 
{
    cout << "kolichestva elementov-?"; cin>>n;
    cout << "Pervii massiv" << endl;
for(k=0;k<n;k++)
    cin>>a[k];
 j=0;
 min=a[j];
    cout<<"\n kolichestva elementov2-?"; cin>>arraySize;
    cout << "Btoroi massiv" << endl;
for (j=0;j<arraySize;j++)
    cin>>b[j];
}
cout << "Pervii massiv" << endl;
for (n=0; n<k; n++)
cout << setw(4) << a[n];
cout << endl;
 
cout << "Btoroi massiv" << endl;
for (int i=0; i<arraySize; i++)
cout << setw(4) << b[i];
 
for (int pass=1; pass<arraySize; pass++)
 
for (int i=0; i < arraySize-1;i++)
 
if (b[i] > b[i+1]) {
    hold=b[i];
    b[i]=b[i+1];
    b[i+1]=hold;
}
cout << endl << "Sarturovka" << endl;
for (i=0;i<arraySize;i++)
cout << setw(4) << b[i];
cout << endl;
getch ();
{
cout << "Men'shii massiv";
for (t=0;t<arraySize;t++)
        {
                if (a[t]<b[u]) cout << setw(4) << a[t];
                }
    }        
cout << endl;   
        getch ();
return 0; 
}

вот ещё второй вариант:
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
55
56
57
58
#include <iostream.h>
#include <conio.h>
void main()
{
int mas_1[100], mas_2[100];
int size_mas_1, size_mas_2;
 
cout << "size_mas_1-?"; cin >> size_mas_1;
for(int i=0; i<size_mas_1; i++)
cin>>mas_1[i];
 
cout<<"\n size_mas_2-?"; cin>>size_mas_2;
for (i=0; i<size_mas_2; i++)
cin>>mas_2[i];
 
/*пузырьковая сортировка по убыванию*/
for (i=0; i<size_mas_1-1; ++i){
        int tmp = 0;
        for (int j=(i+1); j<size_mas_1; ++j)
            if (mas_1[i]<mas_1[j]) {
                tmp = mas_1[i];
                mas_1[i] = mas_1[j];
                mas_1[j] = tmp;        
            }
    }
 
//массив mas_1 отсортирован по убыванию, будем двигаться по этому массиву в конец
//и сверять текущий элемент данного массива с каждым элементом массива mas_2
//если текущий элемент массива mas_1 не найден в массиве mas_2, то 
//min_elem присвоим текущий элемент
//в конце min_elem будет содержать мин элемент mas_1, не входящий в mas_2
int min_elem = -1000; //признак , что элемента нету
 
for(i=0; i<size_mas_1; i++){
   bool is_find = false;
   
   for (int j=0; j<size_mas_2; j++){
        if (mas_1[i] == mas_2[j]){
           is_find = true;
           break;          
        }
    }
    
    if (not is_find!){
        min_elem = mas_1[i];
    }
}
 
if (min_elem == -1000)
{
    cout << "element ne naiden!" << endl;
   } else {
     cout << "min_elem= " << min_elem << endl;
    }
 
 
getch();
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.11.2011, 23:39
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Одномерный массив. Найти наименьшие среди элементов первого массива, которые не входят во второй массив. (C++):

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

Найти наименьшие среди элементов первого массива, которые не входят во второй - C++
Задано 2 массива, нужно найти наименьшие среди элементов первого массива которые не входят во второй. Пробовал так: #include...

Найти минимальный из элементов первого массива, которые не входят во второй массив - C++
Одномерные массивы Даны два массива А и В из 20 вещественных чисел каждый. Найти min из элементов первого массива, которые не входят во...

Записать в третий массив все четные элементы первого массива, которые не входят во второй массив Исправить код - C++
Такая задача: 1) Записать в третий массив все четные элементы первого массива, которые не входят во второй массив. 2) Записать в третий...

Заполнить одномерный вещественный массив случайными числами; найти такие из них, которые входят в интервал - C++
Заполнить одномерный вещественный массив случайными числами; найти такие из них, которые входят в интервал (произвольные m и n вводятся с...

Описать класс Массив, найти массив, состоящий из элементов первого и второго массива - C++
Процедура по поиску такого массива работает, но после нее меняются элементы первого массива. И еще вопрос - как в конце программы...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
bretba
63 / 58 / 5
Регистрация: 24.07.2011
Сообщений: 343
09.11.2011, 23:46 #2
Я не очень понял задачу.Может нужно найти минимальный элемент первого массива,который не входит во второй массив?
0
TheWitcher
1 / 1 / 0
Регистрация: 30.09.2010
Сообщений: 23
09.11.2011, 23:50  [ТС] #3
Цитата Сообщение от bretba Посмотреть сообщение
Я не очень понял задачу.Может нужно найти минимальный элемент первого массива,который не входит во второй массив?
Всё верно.
0
bretba
63 / 58 / 5
Регистрация: 24.07.2011
Сообщений: 343
10.11.2011, 00:38 #4
завтра сделаю,если никто не переобгонит
0
amor1k
Студент
147 / 147 / 24
Регистрация: 18.01.2011
Сообщений: 469
10.11.2011, 00:48 #5
попробуем

Добавлено через 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
#include <iostream>
using namespace std;
 
int main()
{
    int a[10], b[10];
    cout << "first massive:\n ";
    for(int i = 0; i < 10; i++)
        cin >> a[i];
    cout << "\nsecond massive:\n ";
    for(int i = 0; i < 10; i++)
        cin >> b[i];
    int min = a[0];
    for(int i = 0; i < 10; i++)
    {
        if(a[i] != b[i])
        {
            if(a[i] < min)
                min = a[i];
        }
    }
    cout << "Minimum = " <<min;
}
так?
1
Dekio
Фрилансер
Эксперт С++
5837 / 1218 / 214
Регистрация: 23.11.2010
Сообщений: 3,378
Записей в блоге: 1
10.11.2011, 01:04 #6
STL
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
#include <iostream>
#include <vector>
#include <algorithm>
 
int main()
{
    std::vector <int> Fvec, Svec;
    int tmp;
    std::cout<<"Enter first array"<<std::endl;
    while(std::cin>>tmp)
    Fvec.push_back(tmp);
    std::cin.clear();
    std::cout<<"Enter second array"<<std::endl;
    while(std::cin>>tmp)
    Svec.push_back(tmp); 
    std::sort(Fvec.begin(),Fvec.end());
    std::sort(Svec.begin(),Svec.end());
    tmp = 0;
    while(std::binary_search(Svec.begin(),Svec.end(),Fvec.at(tmp)))
    tmp++;
    std::cout<<"Result "<<Fvec.at(tmp)<<std::endl;    
    system("pause");
    return 0;
}
1
TheWitcher
1 / 1 / 0
Регистрация: 30.09.2010
Сообщений: 23
10.11.2011, 18:02  [ТС] #7
Цитата Сообщение от amor1k Посмотреть сообщение
попробуем

Добавлено через 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
#include <iostream>
using namespace std;
 
int main()
{
    int a[10], b[10];
    cout << "first massive:\n ";
    for(int i = 0; i < 10; i++)
        cin >> a[i];
    cout << "\nsecond massive:\n ";
    for(int i = 0; i < 10; i++)
        cin >> b[i];
    int min = a[0];
    for(int i = 0; i < 10; i++)
    {
        if(a[i] != b[i])
        {
            if(a[i] < min)
                min = a[i];
        }
    }
    cout << "Minimum = " <<min;
}
так?

вроде да, огромное спасибо выручил.

Спасибо всем за помощь и Dekio, этот код тоже может мне пригодится.
0
Сыроежка
Заблокирован
10.11.2011, 18:56 #8
Ваша задача решается очень просто,если подправить стандартный алгоритм std::min_element, заменив его алгоритмом min_element_if. Тогда выможете указывать любое условие для поиска минимального значения.
Но так как вы, как я догадываюсь, не знаете стандартных алгоритмов, то вам нужно решение задачи "в лоб".

Во-первых, вам надо написать простую функцию find (по аналогии со стандартным алгоритмом std::find), которая проверяет, входит ли элемент первого массива во второй массив. Если функция find находит элемент, то либо она должна вернуть индекс или указатель на него, либо просто логическое значение true или false.

Напишем эту функцию

C++
1
2
3
4
5
6
7
bool find( int a[], size_t n, int value )
{
   size_t i = 0;
   while ( ( i < n ) && ( a[i] != value ) ) i++;
 
   return ( i != n );
}
Теперь пишем функцию поиска минимального элемента по условию

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
size_t min_element_if( int a[], size_t n, int b[], size_t m )
{
   size_t i = 0;
   while ( ( i < n ) && find( b, m, a[i] ) ) i++;
   if ( i < n )
   {
      int j = i + 1;
      for ( ; j < n ; j++ )
      {
         if ( !find( b, m, a[j] ) && a[j] < a[i] ) i = j;
      }
   }
 
   return ( i );
}
Теперь, если у вас заданы два массива a[n] и b[m],то в main вызов этих функций будет очень прост

C++
1
2
3
4
size_t min = min_element_if( a, n, b, m );
 
if ( min < n ) std::cout << "minimum = " << a[min] << ", in position " << min << std::endl;
else std::cout << "minimum has not been found\n";
0
TheWitcher
1 / 1 / 0
Регистрация: 30.09.2010
Сообщений: 23
11.11.2011, 00:52  [ТС] #9
Цитата Сообщение от Сыроежка Посмотреть сообщение
Ваша задача решается очень просто,если подправить стандартный алгоритм std::min_element, заменив его алгоритмом min_element_if. Тогда выможете указывать любое условие для поиска минимального значения.
Но так как вы, как я догадываюсь, не знаете стандартных алгоритмов, то вам нужно решение задачи "в лоб".

Во-первых, вам надо написать простую функцию find (по аналогии со стандартным алгоритмом std::find), которая проверяет, входит ли элемент первого массива во второй массив. Если функция find находит элемент, то либо она должна вернуть индекс или указатель на него, либо просто логическое значение true или false.

Напишем эту функцию

C++
1
2
3
4
5
6
7
bool find( int a[], size_t n, int value )
{
   size_t i = 0;
   while ( ( i < n ) && ( a[i] != value ) ) i++;
 
   return ( i != n );
}
Теперь пишем функцию поиска минимального элемента по условию

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
size_t min_element_if( int a[], size_t n, int b[], size_t m )
{
   size_t i = 0;
   while ( ( i < n ) && find( b, m, a[i] ) ) i++;
   if ( i < n )
   {
      int j = i + 1;
      for ( ; j < n ; j++ )
      {
         if ( !find( b, m, a[j] ) && a[j] < a[i] ) i = j;
      }
   }
 
   return ( i );
}
Теперь, если у вас заданы два массива a[n] и b[m],то в main вызов этих функций будет очень прост

C++
1
2
3
4
size_t min = min_element_if( a, n, b, m );
 
if ( min < n ) std::cout << "minimum = " << a[min] << ", in position " << min << std::endl;
else std::cout << "minimum has not been found\n";
Всё, разобрался ОГРОМНОЕ спасибо. Очень полезная инфа
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.11.2011, 00:52
Привет! Вот еще темы с ответами:

Одномерный массив. Найти номер первого из элементов, который меньше данное число k - C++
Дан массив чисел 16,8,35,201,110,17,18,19,20 .Знайти номер первого из элементов, который меньше данное число k.

Дано одномерный массив С, состоящий из 16 элементов. Вычислить среднее арифмет. значение четных элементов массива которые делятся на 3 с остатком 1 - C++
Помогите с задачкой, не знаю как условие задать... Дано одномерный массив С, состоящий из 16 элементов. Вычислить среднее арифметическое...

Дан одномерный целочисленный массив А из N элементов. Найти в нём максимальное значение среди простых чисел - C++
Здравствуйте,уважаемые программисты!) Помогите решить,пожалуйста, данную задачку в С++: Дан одномерный целочисленный массив А из N...

Одномерный массив. Создать массив Х суммы среднеарифметического элементов массива А с каждым элементом массива А - C++
Дан массив А.Создать массив Х суммы среднеарифметического элементов массива А с каждым элементом массива А.


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

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

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