Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Нахождение четніх и нечетніх чисел 
:(
    Опции темы
Simon14
Дата 25.1.2010, 01:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 15.1.2009

Репутация: нет
Всего: нет



Всем доброго времени суток есть задача вібрать из масива четніе и нечетніе числа пробовал так но відает ошибгу посмотрите что можносделать и в чем моя ошибка 
Код
#include<iostream>
#include<cmath>
//#include<math.h>
#include<locale>
using namespace std;
int main ()
{
    
    long double x;
    int z;
    int r;
    int i=0;
int c;
    while(i<=20)
    {    
    if ( fmod(4,2)==0)
    {
    c=3;
    }
    else
    {
            c=4;
    }
cout<<"otvet12 "<<c<<endl;
    i++;
    }
    return 0;}


зарание всем спасибо

Добавлено через 13 минут и 40 секунд
вот сделал так 
Код
#include<iostream>
#include<cmath>
//#include<math.h>
#include<locale>
using namespace std;
int main ()
{
    
    long double x;
    int z;
    int r;
    int i=0;
int c;
    while(i<=20)
    {    
    if ( 4%2==0)
    {
    c=3;
    }
    else
    {
            c=4;
    }
cout<<"otvet12 "<<c<<endl;
    i++;
    }
    return 0;}


PM MAIL   Вверх
Данкинг
Дата 25.1.2010, 02:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: нет
Всего: 130



Какую ошибку-то? Мне кажется, что остаток от деления 4 на 2 всегда будет равен нулю. smile К тому же зачем объявлены всякие лишние переменные вроде x, z, r ?


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Simon14
Дата 25.1.2010, 02:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 15.1.2009

Репутация: нет
Всего: нет



уже  сделал как привел выше  но вопрос был в том  как находить четные и нечетные числа с помошью mod
PM MAIL   Вверх
NewDima
Дата 25.1.2010, 11:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 922
Регистрация: 20.2.2006
Где: <?here?>

Репутация: нет
Всего: 12



Число четное:
Код

#define isEven(a) !(bool)(a%2)
#define isEven(a) !(bool)(a&1)


Добавлено через 4 минуты и 55 секунд
а mod - это и есть %.
PM ICQ   Вверх
Леопольд
Дата 25.1.2010, 12:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 943
Регистрация: 17.6.2009

Репутация: 10
Всего: 13



Цитата(NewDima @  25.1.2010,  11:41 Найти цитируемый пост)
Код

#define isEven(a) !(bool)(a%2)
#define isEven(a) !(bool)(a&1)

Не делай так. Лучше вообще забудь про макросы. Тоже самое, но более безопасно:
Код

template<typename T>
inline bool isEven(T a){
    return !(a%2);
}


Это сообщение отредактировал(а) Леопольд - 25.1.2010, 12:55


--------------------
вопросов больше чем ответов
PM MAIL   Вверх
zim22
Дата 25.1.2010, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 24
Всего: 69



Цитата(Леопольд @  25.1.2010,  11:33 Найти цитируемый пост)
bool result = ~(a%2);

ну и зачем битовое НЕ применять? чем логическое не устраивает?


--------------------
PM MAIL   Вверх
Леопольд
Дата 25.1.2010, 13:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 943
Регистрация: 17.6.2009

Репутация: 10
Всего: 13



Цитата(zim22 @  25.1.2010,  12:56 Найти цитируемый пост)
ну и зачем битовое НЕ применять? чем логическое не устраивает? 

Опечатался, уже исправил


--------------------
вопросов больше чем ответов
PM MAIL   Вверх
NewDima
Дата 25.1.2010, 14:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 922
Регистрация: 20.2.2006
Где: <?here?>

Репутация: нет
Всего: 12



Цитата(Леопольд @ 25.1.2010,  19:33)
Лучше вообще забудь про макросы.

Причина?
PM ICQ   Вверх
baldina
Дата 25.1.2010, 16:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 32
Всего: 101



Цитата(NewDima @  25.1.2010,  14:52 Найти цитируемый пост)
Цитата(Леопольд @ 25.1.2010,  19:33)
Лучше вообще забудь про макросы.

Причина? 


потому что

Код

template<typename T>
inline bool isEven(T a){ return !(a%2); }

int x = 1;
// выводит 1 1 1 1
std::cout << isEven(x+1) << ' ';
std::cout << (isEven(x+1)) << ' ';
std::cout << isEven((x+1)) << ' ';
std::cout << isEven(1+x) << std::endl;


#define isEven(a) !(bool)(a%2)
int x = 1;
// выводит 0 0 1 0
std::cout << isEven(x+1) << ' ';
std::cout << (isEven(x+1)) << ' ';
std::cout << isEven((x+1)) << ' ';
std::cout << isEven(1+x) << std::endl;



PM MAIL   Вверх
zim22
Дата 25.1.2010, 17:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 24
Всего: 69



Цитата(baldina @  25.1.2010,  15:16 Найти цитируемый пост)
потому что
// выводит 0 0 1 0

а теперь выводит 1 1 1 1
Код

#define isEven(a) !(bool)((a)%2)



--------------------
PM MAIL   Вверх
NewDima
Дата 25.1.2010, 17:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 922
Регистрация: 20.2.2006
Где: <?here?>

Репутация: нет
Всего: 12



baldina, у меня некорректно составленный макрос, согласен, забыл про скобки. Но вот вызов функции для проверки четности числа - ИМХО странное занятие. Инструкция inline всегда была для компилятором чем-то сродни пожеланию, или что-то изменилось, и вы гарантируете, что эта функция будет встроена в тело основного кода и дополнительные вызовы сгенерированы не будут?

Добавлено через 24 секунды
zim22, вот и я о том же
PM ICQ   Вверх
zim22
Дата 25.1.2010, 17:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 24
Всего: 69



Цитата(NewDima @  25.1.2010,  16:20 Найти цитируемый пост)
zim22, вот и я о том же

я просто код исправил. я тоже против макросов в данном случае. 

я бы его использовал, если бы:
1) у него было адское имя типа UGLY_MACROS_THAT_CHECK_WHETHER_VARIABLE_IS_EVEN_OR_NOT
2) после использования ему был бы сразу сделан #undef

адское имя резало бы мне глаза и мне бы пришлось поменять макрос на функцию smile


--------------------
PM MAIL   Вверх
NewDima
Дата 25.1.2010, 17:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 922
Регистрация: 20.2.2006
Где: <?here?>

Репутация: нет
Всего: 12



Нет, я не говорю, что нужно пихать их куда ни поподя, но и говорить, что про макросы вообще нужно забыть без аргументации неправильно как-то. А вообще я php-программист, многого в плюсах и сях не знаю и мне действительно интересно, почему была высказана такая точка зрения. Может я тоже передумаю их использовать  smile

Добавлено через 1 минуту и 27 секунд
Единственная проблема, которую я вижу - неподчинение пространствам имен
PM ICQ   Вверх
zim22
Дата 25.1.2010, 23:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 24
Всего: 69



Цитата(NewDima @  25.1.2010,  16:53 Найти цитируемый пост)
Единственная проблема, которую я вижу - неподчинение пространствам имен

почему макросы - зло


--------------------
PM MAIL   Вверх
Леопольд
Дата 26.1.2010, 02:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 943
Регистрация: 17.6.2009

Репутация: 10
Всего: 13



Цитата(NewDima @  25.1.2010,  14:52 Найти цитируемый пост)
Цитата(Леопольд @ 25.1.2010,  19:33)
Лучше вообще забудь про макросы.
Причина? 

Цитата(NewDima @  25.1.2010,  17:20 Найти цитируемый пост)
baldina, у меня некорректно составленный макрос, согласен, забыл про скобки.

На мой взгляд, этого уже достаточно smile По крайней мере мне ни к чему ошибки, которые я буду искать неопределённо долгое время. Не знаю ни один компилятор, который явно укажет на то что ошибка именно в макросе. К тому же этот макрос можно переопределить совсем в другой и т.д. Никакой статической типизации. Т.е. ему всё равно что у него в "аргументах", если можно так сказать. Уж лучше написать функцию, которая будет принимать инт максимальной размерности чем макрос. Однако, иногда, без макросов не обойтись. Но это точно не тот случай.

Цитата(NewDima @  25.1.2010,  17:20 Найти цитируемый пост)
Но вот вызов функции для проверки четности числа - ИМХО странное занятие. Инструкция inline всегда была для компилятором чем-то сродни пожеланию, или что-то изменилось, и вы гарантируете, что эта функция будет встроена в тело основного кода и дополнительные вызовы сгенерированы не будут?

И не такое встраивается, независимо от того есть инлайн или нет. Даже если нет инлайн и компиляция будет не в дебаг а в релиз, то эта функция всё равно встроится, слишком она мала. Дешевле её встроить чем push потом call и следом pop. Для любого компилятора это не составит труда. Если не нравится функция, то лучше ручками записать проверку, чем использовать "удобный" макрос.

Это сообщение отредактировал(а) Леопольд - 26.1.2010, 02:09


--------------------
вопросов больше чем ответов
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0624 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.