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

не полностью работает программа. if-else - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
LikeChoko
0 / 0 / 0
Регистрация: 16.03.2012
Сообщений: 38
22.03.2012, 13:46     не полностью работает программа. if-else #1
задача состоит в том, что в 5-значном числе найти одинаковые числа и вывести на экран их значение.
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#include "stdafx.h"
#include <iostream>
#include <conio.h>
 
using namespace std;
 
int main()
{
    int x,a,b,c,d,e,w=0;
    cout<<"Vvedite celoe 5-znachnoe chislo\n";
    cin>>x;
    a=x/10000;
    b=x/1000%10;
    c=x/100%10;
    d=x/10%10;
    e=x/1%10;
    if (a==b || b==a) 
    {
        w=w+1;
    }
    else
    {
        w=0;
    }
    if (a==c || c==a)
    {
    w++;
    }
    else
       w=w;
    if (a==d || d==a)
    {
        w++;
    }
    else w==0;
    if (a==e || e==a)
    {
        w++;
    }
    else {
        w=w;
    }
    if (b==c || c==b)
    {
        w++;
    }
    else 
        { w=w;
    }
    if (b==d || d==b)
    {
        w++;
    }
    else 
        {
            w=w;
    }
    if (b==e || e==b)
    {
        w++;
    }
    else 
        {
            w=w;
    }
    if (d==c || c==d)
    {
        w++;
    }
    else w=w;
    if (e==c || c==e)
    {
        w++;
    }
    else
        {
            w=w;
    }
    if (d==e || e==d)
    {
        w++; 
    }
    else 
    {
        w=w;
    }
    cout<<"Odinalovie cifry:"<<w<<endl;
    system("pause");
        return 0;
}
когда задаем 12121 например - программа пишет что одинаковых 4 числа - не верно.
когда пишем 37673 например - программа пишет что одинаковых 2 числа т.е. верно.
ещё не знаю, как вывести на экран значение этих одинаковых чисел.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.03.2012, 13:46     не полностью работает программа. if-else
Посмотрите здесь:

C++ Програма не работает полностью(((в чём ошибка?
C++ Помогите пожалуйста преобразовать функцию в деструктор. (Полностью рабочая программа уже написана)
Программа работает на Windows 7, но не работает на XP C++
C++ Программа при релизе не работает, а при дебаге работает
нужна полностью работающая программа с использованием функций C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Duha666
50 / 50 / 5
Регистрация: 10.03.2012
Сообщений: 138
22.03.2012, 13:50     не полностью работает программа. if-else #2
Ээ... Это же откровенный костыль.
C++
1
2
3
4
5
6
7
for (int i = n; i > 0;  i /= 10)
    a[i % 10]++; // A[i] - количество цифр i
int ans = 0;
for (int i = 0; i < 10; i++)
    if (a[i] > 0)
        ans += a[i] - 1;
printf("%d", ans);
Вывод циферок будет не сложнее:
C++
1
2
3
for (int i = 0; i < 10; i++)
    if (a[i] > 1)
        printf("%d ", i);
LikeChoko
0 / 0 / 0
Регистрация: 16.03.2012
Сообщений: 38
22.03.2012, 14:01  [ТС]     не полностью работает программа. if-else #3
Надо только if-else в программе использовать! никаких for.
Duha666
50 / 50 / 5
Регистрация: 10.03.2012
Сообщений: 138
22.03.2012, 14:05     не полностью работает программа. if-else #4
Окай, костыль V2:
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
41
42
43
44
45
46
47
48
bool used[10]; // изначально зануляем false
int ans = 0;
if (used[n % 10])
    ans += 1;
else
    used[n % 10] = true;
n /= 10;
if (used[n % 10] && n > 0)
    ans += 1;
else
    used[n % 10] = true;
n /= 10;
if (used[n % 10] && n > 0)
    ans += 1;
else
    used[n % 10] = true;
n /= 10;
if (used[n % 10] && n > 0)
    ans += 1;
else
    used[n % 10] = true;
n /= 10;
if (used[n % 10] && n > 0)
    ans += 1;
else
    used[n % 10] = true;
n /= 10;
if (used[n % 10] && n > 0)
    ans += 1;
else
    used[n % 10] = true;
n /= 10;
if (used[n % 10] && n > 0)
    ans += 1;
else
    used[n % 10] = true;
n /= 10;
if (used[n % 10] && n > 0)
    ans += 1;
else
    used[n % 10] = true;
n /= 10;
if (used[n % 10] && n > 0)
    ans += 1;
else
    used[n % 10] = true;
n /= 10;
printf("%d", ans);
LikeChoko
0 / 0 / 0
Регистрация: 16.03.2012
Сообщений: 38
22.03.2012, 14:11  [ТС]     не полностью работает программа. if-else #5
поподробней можешь объяснить?
Duha666
50 / 50 / 5
Регистрация: 10.03.2012
Сообщений: 138
22.03.2012, 14:17     не полностью работает программа. if-else #6
Тупо 9 одинаковых шагов(максимальная длина числа в int):
1. Если число больше нуля все-ещё(в самом первом if-е такого условия нет) и мы встречали уже такую цифру(n % 10), то увеличиваем результат, иначе помечаем текущую цифру used[n % 10] = true;
2. Делим число на 10.
LikeChoko
0 / 0 / 0
Регистрация: 16.03.2012
Сообщений: 38
22.03.2012, 14:19  [ТС]     не полностью работает программа. if-else #7
а у меня в проге что не так?
Duha666
50 / 50 / 5
Регистрация: 10.03.2012
Сообщений: 138
22.03.2012, 14:24     не полностью работает программа. if-else #8
То, что вы считаете количество пар цифр, которые равны, а не количество одинаковых цифр. То есть, для числа 11111 ответом вашей программы будет 10(1-2, 1-3, 1-4, 1-5, 2-3, 2-4, 2-5, 3-4, 3-5, 4-5 , числа - это позиции единиц).
LikeChoko
0 / 0 / 0
Регистрация: 16.03.2012
Сообщений: 38
22.03.2012, 14:27  [ТС]     не полностью работает программа. if-else #9
а как через мои данные ваше решение переписать?
Duha666
50 / 50 / 5
Регистрация: 10.03.2012
Сообщений: 138
22.03.2012, 14:29     не полностью работает программа. if-else #10
Смотря, что вы подразумеваете под "вашими данными".
LikeChoko
0 / 0 / 0
Регистрация: 16.03.2012
Сообщений: 38
22.03.2012, 14:31  [ТС]     не полностью работает программа. if-else #11
Вводимое число х, и его "производные" : a,b,c,d,e.
Duha666
50 / 50 / 5
Регистрация: 10.03.2012
Сообщений: 138
22.03.2012, 14:35     не полностью работает программа. if-else #12
Можно. Опущу разбиение числа на a, b, c, d, e. Остальная часть:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
if (used[a])
    ans++;
else
    used[a] = true;
if (used[b])
    ans++;
else
    used[b] = true;
if (used[c])
    ans++;
else
    used[c] = true;
if (used[d])
    ans++;
else
    used[d] = true;
if (used[e])
    ans++;
else
    used[e] = true;
printf("%d", ans);
LikeChoko
0 / 0 / 0
Регистрация: 16.03.2012
Сообщений: 38
22.03.2012, 14:40  [ТС]     не полностью работает программа. if-else #13
как я поняла: ans- это счетчик. а used- это что? массив?
Duha666
50 / 50 / 5
Регистрация: 10.03.2012
Сообщений: 138
22.03.2012, 14:44     не полностью работает программа. if-else #14
Массив. A[5] - использована ли цифра 5, a[0] - использована ли цифра 0. Ну и так далее.
LikeChoko
0 / 0 / 0
Регистрация: 16.03.2012
Сообщений: 38
22.03.2012, 14:50  [ТС]     не полностью работает программа. if-else #15
а used как объявлять?
Duha666
50 / 50 / 5
Регистрация: 10.03.2012
Сообщений: 138
22.03.2012, 14:52     не полностью работает программа. if-else #16
C++
1
bool used[10];
Нужно объявить глобально или сделать все значения false в начале.
LikeChoko
0 / 0 / 0
Регистрация: 16.03.2012
Сообщений: 38
22.03.2012, 14:54  [ТС]     не полностью работает программа. if-else #17
а если ещё не проходили такое? можно это как-нить заменить?
Duha666
50 / 50 / 5
Регистрация: 10.03.2012
Сообщений: 138
22.03.2012, 14:56     не полностью работает программа. if-else #18
bool на int, true на 1.
LikeChoko
0 / 0 / 0
Регистрация: 16.03.2012
Сообщений: 38
22.03.2012, 14:57  [ТС]     не полностью работает программа. if-else #19
а путем сравнивания нельзя это записать?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.03.2012, 14:59     не полностью работает программа. if-else
Еще ссылки по теме:

C++ Почему не полностью работает программа шифрования? шифрует ок, а дешифрирует плохо, теряет последние 2 символа
По отдельности работает, полностью нет C++
C++ Программа не считывает с файла текст полностью

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

Или воспользуйтесь поиском по форуму:
Duha666
50 / 50 / 5
Регистрация: 10.03.2012
Сообщений: 138
22.03.2012, 14:59     не полностью работает программа. if-else #20
У вас есть вариант, как сравнивать не попарно? Если есть, то удачи
Yandex
Объявления
22.03.2012, 14:59     не полностью работает программа. if-else
Ответ Создать тему
Опции темы

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