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

Проверка на числовые значения - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.91
Pacifican
1 / 1 / 0
Регистрация: 09.12.2009
Сообщений: 80
Записей в блоге: 1
14.07.2011, 00:25     Проверка на числовые значения #1
отладка-командная строка:
- как чекнуть и вывести алерт текствой введите корректно значение ПРИ ВВОДЕ некорректного значения
-как удалять не все поля а только нужные
то есть не так в смысле
C++
1
system("cls");
Добавлено через 58 минут
Может быть непонятно перефразирую
1) как проверить поле на ввод именно числового а не буквенного(спец.символы и тд) сивола в консоле? ну и вывести сервис мессейдж Please input correct symbol
2) как удалить последнее введенное значение или некоторый муссор который оседаент в консоле в результате действия аппликейшина
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
14.07.2011, 10:42     Проверка на числовые значения #2
Цитата Сообщение от Pacifican Посмотреть сообщение
1) как проверить поле на ввод именно числового а не буквенного(спец.символы и тд) сивола в консоле? ну и вывести сервис мессейдж Please input correct symbol
считывай ввод в строку, потом посимвольно проверяй ее
Цитата Сообщение от Pacifican Посмотреть сообщение
2) как удалить последнее введенное значение или некоторый муссор который оседаент в консоле в результате действия аппликейшина
в общем случае - никак. А в частном случае могут помочь библиотеки типа *curses
CAHTEXHUK
Заблокирован
14.07.2011, 10:46     Проверка на числовые значения #3
можно через getch организовать свою функцию ввода, он же вроде без эха считывает
xAtom
 Аватар для xAtom
910 / 735 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
14.07.2011, 11:39     Проверка на числовые значения #4
Вот вариант, на WinApi.
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
#include <stdio.h>
#include <windows.h>
 
bool is_digit(const char*  str) {
    while( *str ) {
         if(! isdigit( *str++ ))
               return false;   
   }
   return  true;
}
 
struct  msgerr {
    COORD  pos;
    int  len;
};
 
 
void   main(void) {
 
   HANDLE hout = GetStdHandle(STD_OUTPUT_HANDLE);
   msgerr  tmp  = { 0, 0, 0 };
   DWORD dw;
 
   char snum[12] = { '\0' };
   while(1) {
         scanf("%s", snum);
         if(! is_digit(snum)) { // проверка на числовые символы
               CONSOLE_SCREEN_BUFFER_INFO  info;
               ZeroMemory(&info, sizeof(CONSOLE_SCREEN_BUFFER_INFO));
 
               GetConsoleScreenBufferInfo(hout, &info); 
               COORD  pos = {  info.dwCursorPosition.X, info.dwCursorPosition.Y - 1 };
 
               SetConsoleCursorPosition(hout, pos);
               FillConsoleOutputCharacter(hout, ' ', lstrlen(snum), pos, &dw);
                  
               const TCHAR* str =  "Input correct symbol !";
               COORD    msgp  = {  info.dwSize.X / 2 - lstrlen(str) / 2, pos.Y }; 
               WriteConsoleOutputCharacter(hout, str, lstrlen(str), msgp, &dw);
               tmp.pos = msgp;
               tmp.len  = lstrlen(str);
 
                // можно диалогом поругать 
               // MessageBox(NULL, str, "error", MB_OK | MB_ICONEXCLAMATION);
 
    } else {
              printf("number: %d\n", atoi(snum) );
 
              if(tmp.len > 0) {
                   FillConsoleOutputCharacter(hout, ' ', tmp.len, tmp.pos, &dw);
                   FillMemory(&tmp, 0, sizeof(msgerr));
             }
     }
   }
   getchar();
}
Pacifican
1 / 1 / 0
Регистрация: 09.12.2009
Сообщений: 80
Записей в блоге: 1
14.07.2011, 12:53  [ТС]     Проверка на числовые значения #5
господа а можно пример кода и есть ли варианты без подключения библиотек?

Добавлено через 1 час 8 минут
И есть похитрее идейка как делать нажатия всех символов кроме цифр нулевыми?
CAHTEXHUK
Заблокирован
14.07.2011, 13:00     Проверка на числовые значения #6
выводится всё кроме цифр например, требует conio.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void input()
{
    char ch;
    while ((ch = getch()) != 0xD)
    {
        if (!isdigit(ch))
            cout << ch;
        
    }
}
 
int main()
{
    input();
    return 0;
}
Добавлено через 51 секунду
предекат можно подставить другой, тиам много всяких разных. Для вашей задаче надо просто ! убрать
Yandex
Объявления
14.07.2011, 13:00     Проверка на числовые значения
Ответ Создать тему
Опции темы

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