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

Даны 4 вещественных числа. Определить сколько из них отрицательных. - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 30, средняя оценка - 4.90
crash7007
0 / 0 / 0
Регистрация: 29.09.2011
Сообщений: 8
29.09.2011, 14:00     Даны 4 вещественных числа. Определить сколько из них отрицательных. #1
Даны 4 вещественных числа. Определить сколько из них отрицательных. Оператор цикла не использовать.

если можно с коментариями.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.09.2011, 14:00     Даны 4 вещественных числа. Определить сколько из них отрицательных.
Посмотрите здесь:

целое положительное К, за которым следуют К вещественных чисел. Определите, сколько из них отрицательных. Найдите наибольшее из них. C++
C++ целое положительное К, за которым следуют К вещественных чисел. Определите, сколько из них отрицательных. Найдите наибольшее из них
Даны три числа a,b,c. Определить какое из них равно d C++
C++ Даны три вещественных числа. Возвести в квадрат те из них, значения которых неотрицательны
C++ Дано 200 вещественных чисел. Определить, сколько из них больше предыдущего числа
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
magirus
29.09.2011, 14:01
  #2
 Комментарий модератора 
учитесь называть темы информативно
crash7007
0 / 0 / 0
Регистрация: 29.09.2011
Сообщений: 8
29.09.2011, 14:05  [ТС]     Даны 4 вещественных числа. Определить сколько из них отрицательных. #3
magirus, извиняюсь
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
29.09.2011, 14:23     Даны 4 вещественных числа. Определить сколько из них отрицательных. #4
О! Это я могу.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// Шчитаем
int Count( const float * array, int size, int i )
{
     if( size <= i )
          return 0;
     return (array[i] < 0) + Count(array, size, i+1);
}
 
int main()
{
     float array[4] = { 1.f, -5.f, 3.f, -1.f };
     // Получаем количество отрицательных чисел
     // Без использования оператора цикла
     // Какие мы молодцы то!
     int nNegatives = Count( array, 4, 0 );
 
     return 0;
}
crash7007
0 / 0 / 0
Регистрация: 29.09.2011
Сообщений: 8
29.09.2011, 14:50  [ТС]     Даны 4 вещественных числа. Определить сколько из них отрицательных. #5
еще варианты пожалуйста
OstapBender
 Аватар для OstapBender
581 / 519 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
29.09.2011, 16:42     Даны 4 вещественных числа. Определить сколько из них отрицательных. #6
мона так
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
template <class T>
class number {
 
    static int count;
 
public:
    number(T n) { 
        if (n<0) count++;
    }
 
    static int how_much();
 
};
 
template <class T>
int number<T>::count = 0;
 
template<class T>
int number<T>::how_much() {
    return count;
}
 
 
int main(int argc, char* argv[])
{
    number<float> a[4] = { 1.f, -5.f, 3.f, -1.f };
 
    std::cout << number<float>::how_much() <<  '\n';            
 
 
    getchar();
    return 0;
}
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
29.09.2011, 16:49     Даны 4 вещественных числа. Определить сколько из них отрицательных. #7
Цитата Сообщение от OstapBender Посмотреть сообщение
мона так
Зачем человеку шаблоном пугаешь. Без шаблона функционал сохранится.

А я всё жду вопрос про "как обменять два числа?". Можно будет много красивых реализаций придумать.)
Nameless One
Эксперт С++
 Аватар для Nameless One
5754 / 3403 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
29.09.2011, 17:23     Даны 4 вещественных числа. Определить сколько из них отрицательных. #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
#include <iostream>
 
template <int ... Ints>
struct negatives;
 
template <int I, int ... Ints>
struct negatives<I, Ints ...>
{
    static const size_t count = (I < 0 ? 1 : 0) + negatives<Ints ...>::count;
};
 
template <>
struct negatives<>
{
    static const size_t count = 0;
};
    
int main()
{
    std::cout << negatives<int(-1.f), int(-5.f), int(3.f), int(-3.f)>::count << std::endl;
    
    return 0;
}
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
29.09.2011, 17:31     Даны 4 вещественных числа. Определить сколько из них отрицательных. #9
Уверен, что со списком типов и в старом стандарте замутить аналогичное можно.
Nameless One
Эксперт С++
 Аватар для Nameless One
5754 / 3403 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
29.09.2011, 17:33     Даны 4 вещественных числа. Определить сколько из них отрицательных. #10
Deviaphan, что такое "список типов"?
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
29.09.2011, 17:38     Даны 4 вещественных числа. Определить сколько из них отрицательных. #11
У Александрэску в "Современном проектировании" есть. Я так и не нашёл, где бы мне их использовать и уже забыл.)
crash7007
0 / 0 / 0
Регистрация: 29.09.2011
Сообщений: 8
29.09.2011, 19:23  [ТС]     Даны 4 вещественных числа. Определить сколько из них отрицательных. #12
а можно эту задачу как нибудь вообще по простому решить? как решил бы человек который изучает с++ меньше месяца...
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
29.09.2011, 19:37     Даны 4 вещественных числа. Определить сколько из них отрицательных. #13
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int main()
{
float a[4] = { -1.0, 5.3f, -2.0f, -3.f };
 
int i = 0;
int count = 0;
NOT_A_LOOP_OPERATOR:
if( a[i] < 0 )
    count++;
i++;
if( i < 4 )
    goto NOT_A_LOOP_OPERATOR;
 
return 0;
}
crash7007
0 / 0 / 0
Регистрация: 29.09.2011
Сообщений: 8
29.09.2011, 23:14  [ТС]     Даны 4 вещественных числа. Определить сколько из них отрицательных. #14
Deviaphan,
а можно последний вариан прокомментировать,просто я вообще не шарю...

1) что такое float
2) что значит f после чисел
3) что такое NOT_A_LOOP_OPERATOR:
4) что такое goto

Добавлено через 20 минут
и она не работает к сожалению
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
30.09.2011, 00:56     Даны 4 вещественных числа. Определить сколько из них отрицательных. #15
Цитата Сообщение от crash7007 Посмотреть сообщение
человек который изучает с++ меньше месяца
Цитата Сообщение от crash7007 Посмотреть сообщение
что такое float
за месяц два абзаца прочитал?
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
#define negative(x)    ((x < 0) ? 1 : 0)
 
int main(){
    float arr[] = {0.01, -2.2212, -0.012, 4.4};
    for (int i = 0; i < 4; ++i)
        if(negative(arr[i]))
            std::cout << arr[i] << "\n";
     return 0;
}
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
30.09.2011, 03:02     Даны 4 вещественных числа. Определить сколько из них отрицательных. #16
Цитата Сообщение от Deviaphan Посмотреть сообщение
int Count( const float * array, int size, int i )
а зачем лишнюю переменную таскать?
C
1
2
3
size_t negative_count(const int * arr, size_t size){
    return ( size ) ? ( *arr < 0 ) + negative_count(arr + 1, size - 1) : 0;
}
нерекурсивный вариант
C
1
2
3
4
5
6
size_t negative_count(const int * arr, size_t size){
    size_t cnt = 0;
    while ( size-- )
        cnt += ( *arr++ < 0 );
    return cnt;
}
greeezz
272 / 165 / 4
Регистрация: 10.07.2011
Сообщений: 441
30.09.2011, 04:28     Даны 4 вещественных числа. Определить сколько из них отрицательных. #17
Цитата Сообщение от crash7007 Посмотреть сообщение
а можно эту задачу как нибудь вообще по простому решить? как решил бы человек который изучает с++ меньше месяца...
можно.

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
#include "stdafx.h"
#include <iostream>
using std::cout;
using std::endl;
 
int main(){
    float number1 = -1.43;
    float number2 = 3.87;
    float number3 = 2.31;
    float number4 = -5.12;
    int count = 0;
 
    if(number1 < 0){
        count +=1;
    }
    if(number2 < 0){
        count +=1;
    }
    if(number3 < 0){
        count +=1;
    }
    if(number4 < 0){
        count +=1;
    }
    cout << "Otricatelnyh chisel : " << count << endl;
    system("pause");
    return 0;
}
Nameless One
Эксперт С++
 Аватар для Nameless One
5754 / 3403 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
30.09.2011, 04:53     Даны 4 вещественных числа. Определить сколько из них отрицательных. #18
easybudda,
alkagolik,
Цитата Сообщение от crash7007 Посмотреть сообщение
Оператор цикла не использовать
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
30.09.2011, 07:21     Даны 4 вещественных числа. Определить сколько из них отрицательных. #19
Точно, можно на аргумент меньше.

Добавлено через 1 минуту
Цитата Сообщение от crash7007 Посмотреть сообщение
Deviaphan,
а можно последний вариан прокомментировать,просто я вообще не шарю...

1) что такое float
2) что значит f после чисел
3) что такое NOT_A_LOOP_OPERATOR:
4) что такое goto

Добавлено через 20 минут
и она не работает к сожалению
Все работает. А в задании не сказано, что результат нужно вывести на экран, вот я и не вывожу.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.10.2011, 08:47     Даны 4 вещественных числа. Определить сколько из них отрицательных.
Еще ссылки по теме:

C++ Даны числа a, b, c. Определить, сколько из них одинаковых
Даны 3 числа . Определить среди них наибольшее и наименьшее C++
C++ Даны три вещественных числа. Выбрать те из них, которые принадлежат интервалу (1,3). (C++)

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

Или воспользуйтесь поиском по форуму:
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
01.10.2011, 08:47     Даны 4 вещественных числа. Определить сколько из них отрицательных. #20
Вот подсчёт при компиляции для "устаревших" компиляторов.

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
struct NullType {};
 
template < int V, class U>
struct Typelist
{
    enum { Value = V };
    typedef U Tail;
};
 
#define TYPELIST_1(T1) Typelist<T1, NullType>
#define TYPELIST_2(T1, T2) Typelist<T1, TYPELIST_1(T2) >
#define TYPELIST_3(T1, T2, T3) Typelist<T1, TYPELIST_2(T2, T3) >
#define TYPELIST_4(T1, T2, T3, T4) Typelist<T1, TYPELIST_3(T2, T3, T4) >
 
 
template< class T > struct CountNegative;
 
template<>
struct CountNegative<NullType>
{
    enum { value = 0 };
};
 
template< int V, class U >
struct CountNegative< Typelist<V, U> >
{
    enum { value = (V < 0) + CountNegative<U>::value };
};
 
// Списки значений
typedef TYPELIST_4( int(2.0f), int(-3.4f), int(5.2f), int(-1.7f) ) ValueList1;
typedef TYPELIST_4( int(-52.4f), int(3.1415f), int(9.232f), int(10.72f) ) ValueList2;
 
int _tmain(int argc, _TCHAR* argv[])
{
    cout << "Negative in list 1 = " << CountNegative<ValueList1>::value << endl;
    cout << "Negative in list 2 = " << CountNegative<ValueList2>::value << endl;
    cin.get();
    return 0;
}
Yandex
Объявления
01.10.2011, 08:47     Даны 4 вещественных числа. Определить сколько из них отрицательных.
Ответ Создать тему
Опции темы

Текущее время: 14:01. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru