Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
LikeChoko
0 / 0 / 0
Регистрация: 16.03.2012
Сообщений: 38
#1

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

22.03.2012, 13:46. Просмотров 1329. Ответов 25
Метки нет (Все метки)

задача состоит в том, что в 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 числа т.е. верно.
ещё не знаю, как вывести на экран значение этих одинаковых чисел.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.03.2012, 13:46
Здравствуйте! Я подобрал для вас темы с ответами на вопрос не полностью работает программа. if-else (C++):

Почему не полностью работает программа шифрования? шифрует ок, а дешифрирует плохо, теряет последние 2 символа - C++
вот так. Помогите с проблемой. #include &lt;vcl&gt; #include &lt;conio&gt; #include &lt;iostream&gt; #include &lt;algorithm&gt; #include &lt;string&gt; ...

По отдельности работает, полностью нет - C++
Здравствуйте. Делаю домашнее задание, с утра нужно сдать. Все работает по отдельности, как собираю полностью ошибка. Подскажите, в чем...

Программа не считывает с файла текст полностью - C++
Делаю алфавитно-частотный словарь, и во время передачи всех символов из файла в строку(дабы дальше я с помощью токенов строку разделил) у...

Програма не работает полностью(((в чём ошибка? - C++
Написал програму для возведения числа в степень, не работает для дробных чисел и отрицательных степеней (( почему ?? Помогите Плз#include...

Помогите пожалуйста преобразовать функцию в деструктор. (Полностью рабочая программа уже написана) - C++
Заранее благодарен всем кто поможет. Здравствуйте, учусь на первом курсе и только разбираюсь с с++. Дошёл уже до деструктора....

Почему программа не работает на MFC статичной библиотеки. а вот на стандартном мфс работает - C++
почему программа не работает на MFC статичной библиотеки. а вот на стандартном мфс работает. Имею в ввиду что сделал прогу которая меняет...

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

Программа , которая выводит время, за которое программа работает - C++
Вообщем, нужно что бы считалось время от начала работы программы, и выводилось на экран.

не полностью программа работает - Delphi
программа пятнашки. С полем 4 на 4 все норм-перемешивает, а с полями 3 на 3 и 5 на 5 не получилось помогите Добавлено через 1 минуту ...

Не полностью работает программа - Delphi
Вот код, в нем собственно и задачи .. Работает все, кроме 4 и 6 задачи .. В 4 НЕ добавляется новая строка (только false, остальные -...

Не закрывается полностью программа - Delphi
Помогите у меня есть несколько форм и половина из них находится в hide. Как сделать так чтобы при закрытии той формы(1) которую ты видишь...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru