Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

несколько простых задач C++

35K
15 февраля 2011 года
life4fun
64 / / 15.11.2010
Нужно написать код на С++, к следующим заданиям:

1) посчитать сколько четных цифр у десятичного целого числа
2) упорядочены ли числа по возрастанию
3) найти минимальную цифру восьмиричного или десятичного числа
4) найти максимальный общий делитель двух или трех чисел, или массива чисел
5) найти минимальное общее кратное

пожалуйста помогите! очень хочу разобраться и понять как это делается!
32K
16 февраля 2011 года
Rififi
54 / / 04.06.2008
Цитата: life4fun
Нужно написать код на С++
пожалуйста помогите! очень хочу разобраться и понять как это делается!



чтобы разбираться, надо самому мозги включать.

когда решение приносят сразу в клювик, оно не особо помогаем.
например:

задание 2:

 
Код:
#include <boost/range.hpp>
#include <boost/lambda/lambda.hpp>
namespace lm = boost::lambda;

template <typename R>
bool is_range_ascending(const R& r)
{
    return std::adjacent_find(boost::const_begin(r), boost::const_end(r), lm::_1 >= lm::_2) == boost::const_end(r);
}

помогло? o_O
62K
16 февраля 2011 года
flash1989
13 / / 11.09.2010
Если не хочешь разбираться, тебе ко мне
icq: 588002847
email: [email]flash_1989@ukr.net[/email]
6.9K
16 февраля 2011 года
fen1xxx
63 / / 04.11.2010
1-я задача:

#include <stdio.h>

void main()
{
int a, rez=0, tmp=0;
scanf("%i", &a);
while(a/10)
{
tmp=a%10;
if(tmp%2!=0) {a/=10; continue;}
else ++rez;
a/=10;
}
if(a%2==0) ++rez;
printf("%i", rez);
}
6.9K
16 февраля 2011 года
fen1xxx
63 / / 04.11.2010
2-я задача:

#include <stdio.h>
#define SIZE (5)
int mass[SIZE];
void main()
{
for(int i=0; i<SIZE; i++)
scanf("%i", &mass);
for(int i=0; i<SIZE; i++)
if(i+1!=SIZE&&mass>mass[i+1]) {printf("Net!\n"); return;}
printf("Da!\n");
}
13K
06 марта 2011 года
MihaZzz
18 / / 06.03.2006
1-я задача: посчитать сколько четных цифр у десятичного целого числа
Код:
int get_even_digits( int value )
{
   if( 0 == value ) return 1;
   int count = 0;
   for( ; value; value /= 10 ) if( 0 == (value % 2) ) ++count;
   return count;
}

void main()
{
   assert( 0 == get_even_digits( 1317 ) );
   assert( 2 == get_even_digits( 1203 ) );
}


2-я задача: упорядочены ли числа по возрастанию
Код:
template<class T>
bool test_sorted( T* data, int count )
{
   for( T* p = data + 1; p < data + count; ++p )
      if( p[-1] > p[0] ) return false;
   return true;
}

void main()
{
   const int data[] = { -5, 4, 6, 8, 12 };
   const int count = sizeof(data)/sizeof(data[0]);
   assert( true == test_sorted( data, count ) );
}


3-я задача: найти минимальную цифру восьмиричного или десятичного числа
 
Код:
int min_digit( int value, int radix = 10 )
{
   char buf[128];
   itoa( std::abs( value ), buf, radix );
   char* p = std::min( buf, buf + strlen(buf) );
   return *p - '0';
}


4-я задача: найти максимальный общий делитель массива чисел
Код:
bool mod_lesser( int v1, int v2) { return abs(v1) < abs(v2); }

struct CheckFactor
{
   const int m_factor;
   CheckFactor( int factor ) : m_factor(factor) {}
   bool operator ()( int v ) const { return 0 != (v % m_factor); }
};

int get_common_factor( const int* data, int count )
{
   const int* pEnd = data && count > 0 ? data + count : data;
   const int* pMin = min_element( data, pEnd, mod_lesser );
   int factor = max( 1, abs(*pMin) );
   while( factor > 1 &&
      pEnd != find_if( data, pEnd, CheckFactor(factor) ) ) --factor;
   return factor;
}

void main()
{
   const int data[] = { -10, 20, 15, 100, -50 };
   const int count = sizeof(data)/sizeof(data[0]);
   assert( 5 == get_common_factor( data, count ) );
}


5-я задача: найти минимальное общее кратное
Код:
bool mod_lesser( int v1, int v2) { return abs(v1) < abs(v2); }

struct ValueCheck
{
   const int m_multiple;
   ValueCheck( int multiple ) : m_multiple(multiple) {}
   bool operator ()( int v ) const { return !v || (m_multiple % v); }
};

int get_common_multiple( const int* data, int count )
{
   const int* pEnd = data + count;
   const int* pMin = min_element( data, pEnd, mod_lesser );
   const int* pMax = max_element( data, pEnd, mod_lesser );
   const int value = abs( *pMin * *pMax );
   for( int i = 1; i <= value; ++i )
   {
      if( pEnd == find_if( data, pEnd, ValueCheck(*pMax*i) ) )
         return abs( *pMax*i );
   }
   return 0;
}

void main()
{
   const int data[] = { -2, 5, 7, -10 };
   const int count = sizeof(data)/sizeof(data[0]);
   assert( 70 == get_common_multiple( data, count ) );
}
85K
10 сентября 2012 года
rasder
1 / / 10.09.2012
логика первой задачи:
есть два типа переменных - цельные и дробные (int & double)
если поделить четное число на 2 - выйдет цельное
чтобы программа увидела где дробь а где цельное - сравниваем два деления разных типов переменных с одинаковыми значениями
если совпало - бинго, записываем в счетчик четных чисел
думается, есть еще несколько решений, зависит от стиля
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог