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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Найти в введеном числе цифру "1" http://www.cyberforum.ru/cpp-beginners/thread380882.html
Если хотя бы один раз встречается "1" вывести "Yes" и закончить программу. Подскажите что не так тут. #include<iostream> using namespace std; int main(){ int a,r; cin>>a; // К примеру вводим 1536 while (a==0) {
C++ Помогите написать программу, плиз... Цель работы:Дана функция, заданная бесконечным рядом. С клавиатуры вводятся x и e(e - точность 0,001 - 0,00001), нужно вычислить бесконечную сумму с заданной точностью е. Вычисления прекращаются, когда очередное слагаемое по модулю меньше точности. Требуется, во-первых, вывести на экран таблицу значений i и суммы i слагаемых. Во-вторых, посторить график этой функции. По оси абцисс выводить i, по... http://www.cyberforum.ru/cpp-beginners/thread380880.html
C++ Открыть файл
Как открыть существующий файл? Делать мне с ним ничего не надо, т.е. хендл не нужен, нужно просто, чтоб он открылся
Отсортировать массив по возрастанию и убыванию C++
Помогите пожалуйста сортировать данный массив по возрастанию и убыванию. (buble sort)
C++ Скопировать второе слово из каждой строки и вставить их в новый текстовый файл http://www.cyberforum.ru/cpp-beginners/thread380869.html
Добрый вечер, помогите, пожалуйста, в реализации простенькой программы: На входе .txt файл, в котором некое множество строк, состоящих из 3 "слов", необходимо копировать, например, второе слово из каждой строки и: 1) вставлять их в новый текстовый файл подряд, лишь добавляя * между ними без пробелов и запятых 2) вставлять их в новый текстовый файл каждый раз с новой строки Голова уже не...
C++ Данa последовательность действительныx чисeл. Выделить из неё знакопостоянную подпоследовательность наибольшей длины и упоpядочить Данa последовательность a1,...,an действительныx чисeл. Вы- делить из нее знакопостоянную подпоследовательность наиболь- шей длиныш и упоpядочить ее по убыванию. подробнее

Показать сообщение отдельно
Сыроежка
Заблокирован
10.11.2011, 18:56     Одномерный массив. Найти наименьшие среди элементов первого массива, которые не входят во второй массив.
Ваша задача решается очень просто,если подправить стандартный алгоритм 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";
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru