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

Количество равных чисел - C++

Восстановить пароль Регистрация
 
Rembrant87
0 / 0 / 0
Регистрация: 30.01.2010
Сообщений: 10
07.09.2010, 22:15     Количество равных чисел #1
На самом деле задачка простая, и спрашивать стыдно. Но дело то ли в моей недалекоглядности, то ли преподавателя.
Суть такая: есть 4 числа, нужно посчитать, сколько из них одинаковые. Если все равные, вывести 1.
Самым тупым способом писал так:
C++
1
2
3
4
5
6
7
if ((a==b)&&(b==c)&&(c==d))
    p=4;
else if ( ((a==b)&&(b==c)) || ((a==b)&&(b==d)) || ((a==c)&&(c==d)) || ((b==c)&&(c==d)) )
    p=3;
else if ((a==b)||(a==c)||(a==d)||(b==c)||(b==d)||(c==d))
    p=2;
else p=1;
Однако, как оказалось, нельзя (!) использовать И, ИЛИ.
Ладно, вот ему ещё вариант
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
k=0;
if (a==b) k++; //сверяем все пары
if (a==c) k++;
if (a==d) k++;
if (b==c) k++;
if (b==d) k++;
if (c==d) k++;
 
if (k==6) p=4;
else if (k==3) p=3;
else if (k==2) p=2; //например для случая a=b и c=d
else if (k==1) p=2;
else p=1;
А этот вариант просто длинный.
То есть в итоге всё сводится к поиску простейшего алгоритма. А я его в упор не вижу. Подскажите пожалуйста.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
iama
 Аватар для iama
1249 / 974 / 48
Регистрация: 30.07.2010
Сообщений: 5,297
07.09.2010, 22:25     Количество равных чисел #2
массивы использовать можно?
fasked
Эксперт C++
 Аватар для fasked
4925 / 2505 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
07.09.2010, 22:28     Количество равных чисел #3
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
#include <stdio.h>
#include <stdlib.h>
 
#define N 4
 
int main()
{
    int i = 0;
    int j = 0;
    int cnt = 0;
    int a[N] = { 1, 0, 1, 0 };
               
    printf("Числа: ");
    for(i = 0; i < N; ++i)
        printf("%d ", a[i]);
    printf("\n");
    
    for(i = 0; i < N; ++i) {
        for(j = i + 1; j < N; ++j) {
            if(a[i] == a[j])
                ++cnt;
        }
    }
    
    if(cnt == 1)
        cnt = 2;
    
    else if(cnt == N)
        cnt = 1;
    
    printf("Результат: %d\n", cnt);
}
Rembrant87
0 / 0 / 0
Регистрация: 30.01.2010
Сообщений: 10
07.09.2010, 22:31  [ТС]     Количество равных чисел #4
в том то и дело, что без массивов
решение нужно сделать студентам-нубам, которые ещё и булевых операция не знают, не то что циклов/массивов
iama
 Аватар для iama
1249 / 974 / 48
Регистрация: 30.07.2010
Сообщений: 5,297
07.09.2010, 22:34     Количество равных чисел #5
тогда только ваш второй вариант. хотя мож хитромудрыми булевыми операциями и можно достичь одной строки кода
fasked
Эксперт C++
 Аватар для fasked
4925 / 2505 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
07.09.2010, 22:36     Количество равных чисел #6
Цитата Сообщение от Rembrant87 Посмотреть сообщение
решение нужно сделать студентам-нубам, которые ещё и булевых операция не знают, не то что циклов/массивов
тогда пользуйтесь вторым вариантом, только одна переменная там в принципе лишняя.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.09.2010, 22:55     Количество равных чисел
Еще ссылки по теме:

Количество чисел массива равных последнему элементу C++
C++ С++ Дана некоторая последовательность вещественных чисел. Определить количество элементов равных 0
C++ Дан массив натуральных чисел А[m,n] и число а. Вывести этот массив на экран, вычислит количество элементов равных а и вывести их индексы

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

Или воспользуйтесь поиском по форуму:
Rembrant87
0 / 0 / 0
Регистрация: 30.01.2010
Сообщений: 10
07.09.2010, 22:55  [ТС]     Количество равных чисел #7
эх, жаль.. боюсь, и это чудо забракуют
Yandex
Объявления
07.09.2010, 22:55     Количество равных чисел
Ответ Создать тему
Опции темы

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