Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Контроль ввода - только цифры


Автор: KorroK 24.12.2008, 02:08
стоит клaссическая задaча, определить является ли билет счaстливым"(рaвны ли суммы трех первых и трех последних цифр)
число шестизнaчное.

Нужна прoверка вводa  (бoльшего или меньшего кjличества симвoлов, на ввoд симвoлов отличных oт цифр.) билет  6 значный минимальнoе значение 001001 (сeрия и нoмер не нулевые)

Начал так, фильтрую цифры

char c;
do 
    {
    c = _getch();
           
    if(isdigit(с)) 

                {
                 std::cout << c;
            }
        } 
        while(c != 13);

Идея в том, чтобы ввести счетчик введенных символов, и если введено <6  - выдать сообщение об ошибке
(если более запретить ввод) а потом
просуммировать первые 3 элемента массива и последние три.
Если не равны нулю и при этом равны, то выбить сообщение, что такой то номер счастливый

Застрял с реализацией кода.



Автор: likehood 24.12.2008, 10:58
Код

#include "conio.h"
#include "ctype.h"

int main()
{
    int buf[6];

    for (int i=0; i<6; i++)
    {
        char c;
        do {
            c = _getch();
        }
        while (! isdigit(c));
        _putch(c);
        buf[i] = c-'0';
    }
    printf("\n");
    int s1 = buf[0]+buf[1]+buf[2];
    int s2 = buf[3]+buf[4]+buf[5];
    if (s1==0 || s2==0)
        printf("Wrong number\n");
    else
    {
        if (s1==s2)
            printf("The ticket is happy!\n");
        else
            printf("The ticket isn't happy :(\n");
    }

    return 0;
}

Автор: KorroK 24.12.2008, 23:04
Спасибо (понимаю, что не булькает )))), попробую

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)