кто шарит помогите решить задачу: Найти наименьшее среди тех элементов массива X, которые не являются элементами массива Y (массивы одномерные) если можите решите в Qt Creator
Раздел: Домашние задания, последний комментарий: 19.03.2011 03:56 Вопрос закрыт пользователем ananas1 по причине Истек трехдневный срок с момента создания вопроса в разделе
const int *const find( const int *const y, const int size, const int x )
{
// Возвращаем указатель на найденный элемент. Если ничего не нашли, то 0
for( int i = 0; i != size; ++i )
{
if( x == y[i] ) return &y[i];
}
return 0;
}
int _tmain(int argc, _TCHAR* argv[])
{
const int x[] = { 1, 45, 23, 5, 3, 7 };
const int y[] = { 3, 2, 12, 1, 9 };
const int size_x = sizeof( x ) / sizeof( x[0] );
const int size_y = sizeof( y ) / sizeof( y[0] );
const int* answer = 0; // Ответ. Если 0, то искомых элементов нет.
for( int i = 0; i != size_x; ++i )
{
const int *const temp = find( y, size_y, x[i] );
if( !temp )
{
if( !answer || *answer > x[i] )
{
answer = &x[i];
}
};
}
Переведите, пожалуйста! Но, в любом случае, вместо того, чтобы крутить пальцем у виска, если у Вас есть объективные возражения против моего решения, лучше бы высказали их. Иначе, я Вашу критику считаю ничтожной.
Добавлено спустя 1 час 48 минут 30 секунд
Только что перечитал решение. Нашел ошибку. Вывод написан не правильно и работать не будет. Нужен, например, такой вывод
Добавлено спустя 1 час 59 минут 23 секунды
Еще раз поправим:
if( answer ) std::cout (влево)(влево) *answer (влево)(влево) std::endl;
Добавлено спустя 2 часа 05 минут 42 секунды
Вот почищенный и проверенный вариант предыдущего:
// Решение тупо в лоб.
#include
const int *const find( const int *const y, const int size, const int x )
{
// Возвращаем указатель на найденный элемент. Если ничего не нашли, то 0
for( int i = 0; i != size; ++i )
{
if( x == y[i] ) return &y[i];
}
return 0;
}
int main()
{
const int x[] = { 1, 45, 23, 5, 3, 7 };
const int y[] = { 3, 2, 12, 1, 9 };
const int size_x = sizeof( x ) / sizeof( x[0] );
const int size_y = sizeof( y ) / sizeof( y[0] );
const int* answer = 0; // Ответ. Если 0, то искомых элементов нет.
for( int i = 0; i != size_x; ++i )
{
if( !find( y, size_y, x[i] ) && ( !answer || *answer > x[i] ) )
{
answer = &x[i];
}
}
if( answer ) std::cout
Добавлено спустя 2 часа 07 минут 54 секунды
Еще раз, криво получилось
// Решение тупо в лоб.
#include (влево)iostream(вправо)
const int *const find( const int *const y, const int size, const int x )
{
// Возвращаем указатель на найденный элемент. Если ничего не нашли, то 0
for( int i = 0; i != size; ++i )
{
if( x == y[i] ) return &y[i];
}
return 0;
}
int main()
{
const int x[] = { 1, 45, 23, 5, 3, 7 };
const int y[] = { 3, 2, 12, 1, 9 };
const int size_x = sizeof( x ) / sizeof( x[0] );
const int size_y = sizeof( y ) / sizeof( y[0] );
const int* answer = 0; // Ответ. Если 0, то искомых элементов нет.
for( int i = 0; i != size_x; ++i )
{
if( !find( y, size_y, x[i] ) && ( !answer || *answer > x[i] ) )
{
answer = &x[i];
}
}