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

Подчет каличество цифр ввода - C++

Восстановить пароль Регистрация
 
Cclassic
0 / 0 / 0
Регистрация: 08.09.2013
Сообщений: 62
25.09.2013, 01:41     Подчет каличество цифр ввода #1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
include <iostream>
    using namespace std;
 
int main()
{
    int n;
    int count = 0;
    cin >> n;
 
    if (n > 0) {
        count = count + 1;
        n = n / 10;
    }
    cout << count;
    system("pause");
    return 0;
}

вот сделал ну счетает тока одну цифру помогите найти следующие жилательно через IF
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.09.2013, 01:41     Подчет каличество цифр ввода
Посмотрите здесь:

C++ Проверрка ввода римских цифр
Программа ждет ввода числа и в зависимости от количества цифр в числе выдает сообщение об их разрядности: трехзначное, пятизначное и т.д C++
C++ дано натуральное число N. Определить,во сколько раз произведение цифр числа больше суммы цифр.Найти количество чётных цифр в записи числа!!
Не работает программа проверки ввода цифр C++
C++ Запрет ввода любых символов кроме цифр в консоли
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
EVP
314 / 236 / 41
Регистрация: 14.12.2010
Сообщений: 457
25.09.2013, 02:25     Подчет каличество цифр ввода #2
Цитата Сообщение от Cclassic Посмотреть сообщение
вот сделал ну счетает тока одну цифру помогите найти следующие жилательно через IF
Вместо 10ой строчки:
C++
1
2
#define IF while
    IF (n > 0) {
Cclassic
0 / 0 / 0
Регистрация: 08.09.2013
Сообщений: 62
25.09.2013, 11:29  [ТС]     Подчет каличество цифр ввода #3
Цитата Сообщение от EVP Посмотреть сообщение
Вместо 10ой строчки:
C++
1
2
#define IF while
    IF (n > 0) {
есть еще варианты без инклудов строго if
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5549 / 2563 / 233
Регистрация: 01.11.2011
Сообщений: 6,337
Завершенные тесты: 1
25.09.2013, 11:39     Подчет каличество цифр ввода #4

Не по теме:

EVP,


Cclassic, может вам надо просто заменить if на while?
Или поискать по форуму?
EVP
314 / 236 / 41
Регистрация: 14.12.2010
Сообщений: 457
25.09.2013, 16:45     Подчет каличество цифр ввода #5
Цитата Сообщение от Cclassic Посмотреть сообщение
есть еще варианты без инклудов строго if
такие варианты:

Кликните здесь для просмотра всего текста
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
#include <iostream>
#include <assert.h>
using namespace std;
 
void testMacroDefineIF(int n)
{
    int count = 0;
#pragma push_macro("IF")
#define IF while
    IF (n > 0) {
#undef IF
#pragma pop_macro("IF")
        count = count + 1;
        n = n / 10;
    }
    cout << "Macro IF: " << count << endl;
}
 
/*
При наличии циклов в синтаксисе языка
не имеет смысла использовать следующие конструкции:
*/
void testWhileEmulation(int n)
{
    int count = 0;
start:
    if (!(n > 0))
        goto end;
    count = count + 1;
    n = n / 10;
    goto start;
end:
    cout << "while emulation: " << count << endl;
}
 
#define EXPAND_LOOP(_condition, _body) if (_condition) _body
#define EXPAND_LOOP_2(_condition, _body) EXPAND_LOOP(_condition, _body) EXPAND_LOOP(_condition, _body)
#define EXPAND_LOOP_4(_condition, _body) EXPAND_LOOP_2(_condition, _body) EXPAND_LOOP_2(_condition, _body)
/*
Некоторые компиляторы шейдеров OpenGL ES
разворачивают константные циклы примерно так:
*/
void testWhileExpand(int n)
{
    int count = 0;
 
    //Разворачивание до 4 повторов
    EXPAND_LOOP_4(n > 0,
    {
        count = count + 1;
        n = n / 10;
    })
    assert(!n);
 
    cout << "while expand: " << count << endl;
}
 
int main()
{
    int n;
    cin >> n;
    
    testMacroDefineIF(n);
    testWhileEmulation(n);
    testWhileExpand(n);
 
    system("pause");
    return 0;
}


Замечания:
Цикл есть синтаксический сахар над условием и безусловным переходом.
Если есть соответствующая синтаксическая конструкция в языке, то её следует воспользоваться.
Делать велосипед для цикла имеет смысл только при изучения работы самого цикла.

Удачи.
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5549 / 2563 / 233
Регистрация: 01.11.2011
Сообщений: 6,337
Завершенные тесты: 1
25.09.2013, 16:50     Подчет каличество цифр ввода #6
EVP, к сожалению в двадцать восьмой строке косяк. А мысль отличная.

Добавлено через 1 минуту
Можно еще while-ом проверять, побитово смещая. Хотя это какая-то хрень.
EVP
314 / 236 / 41
Регистрация: 14.12.2010
Сообщений: 457
25.09.2013, 17:10     Подчет каличество цифр ввода #7
Цитата Сообщение от SatanaXIII Посмотреть сообщение
к сожалению в двадцать восьмой строке косяк.
Что за косяк? Cтудия 2012 не видит ошибок.
Хм. goto страшен сам по себе, конечно, но переход нужен в данном случае (условие про 'if' от ТС, поэтому синтаксические циклы не рассматривались как кандидаты на решение).
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.09.2013, 08:49     Подчет каличество цифр ввода
Еще ссылки по теме:

Реализация запрета ввода любых символов кроме цифр в консольном приложении C++
Реализовать контроль ввода и для цифр, и для букв C++
C++ Запрет ввода символов, отличных от цифр

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

Или воспользуйтесь поиском по форуму:
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5549 / 2563 / 233
Регистрация: 01.11.2011
Сообщений: 6,337
Завершенные тесты: 1
26.09.2013, 08:49     Подчет каличество цифр ввода #8
Цитата Сообщение от EVP Посмотреть сообщение
Что за косяк?
Использование if.
Yandex
Объявления
26.09.2013, 08:49     Подчет каличество цифр ввода
Ответ Создать тему
Опции темы

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