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

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

Войти
Регистрация
Восстановить пароль
 
Define
0 / 0 / 0
Регистрация: 03.04.2010
Сообщений: 83
#1

Как отследить ввод символа в программу - C++

08.04.2010, 13:37. Просмотров 937. Ответов 6
Метки нет (Все метки)

Программа расчета площади поверхности и объема сферы,требуется ввод радиуса.что делать,если пользователь введет букву или ,например, 2lgau. Помогите пожалуйста,программа есть,отслеживает ввод отрицательного значения,а с символами проблема..
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vorona
Peace 2 all shining faces
666 / 528 / 44
Регистрация: 05.03.2010
Сообщений: 1,271
08.04.2010, 13:54     Как отследить ввод символа в программу #2
C
1
2
3
4
5
6
7
8
9
10
11
char c, radius[8];
unsigned int i = 0, rad;
cout<<"Vvedite radius: ";
while(c != 13){     //ASCII код клавиши Enter
   c = getch();
   if(c >= '0' && c <= '9')
   radius[i] = c;
   cout<<radius[i];
   i++;
}
rad = atoi(radius);
если кнопка, которую мы нажали является цифрой, то мы добавляем ее в массив и при нажатии Enter выходим из цикла ввода числа
далее с помощью ф-ции atoi() преобразовываем массив цифр radius типа char в целое число rad, что и будет нашим введенным радиусом
также можно сделать и для точки, если нам нужно десятичное число и для backspace (ASCII код вроде 26), если нам не понравилась введенная цифра(i--, ну и на экране на 1 символ назад отступить(gotoxy(wherex()-1, wherey()); для консоли, если не ошибаюсь)
GreyDark
8 / 8 / 1
Регистрация: 11.02.2010
Сообщений: 21
08.04.2010, 14:04     Как отследить ввод символа в программу #3
Если не консольное приложение, то можно:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
{
 AnsiString str;
str=DecimalSeparator;
if (AnsiPos(str,Edit1->Text)==0)
{
if ((Key<='9') && (Key>='0') || (Key=='-') || (Key==(Char)VK_BACK)||(Key==DecimalSeparator))
Button1->Enabled=true;
else Key=0;
}
else
if ((Key<='9') && (Key>='0') || (Key=='-')|| (Key==(Char)VK_BACK)) Button1->Enabled=true;
else Key=0;
}
Define
0 / 0 / 0
Регистрация: 03.04.2010
Сообщений: 83
08.04.2010, 14:19  [ТС]     Как отследить ввод символа в программу #4
А эту прогу можно как-то переделать?консольная
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
#include <conio.h>
#include <math.h>
int main (void) {
double S,V,R;
 
double pi=3.14;
printf("Vvedite polozhitelnoe znachenie radiusa sfery> R=");
scanf ("%lf",&R);
if (R<=0) { printf ("Vvedite POLOZHITELNOE znachenie,oshibka vvoda> R=");scanf ("%lf",&R);}
 
S=4*pi*(R*R);
V=(4*pi*(R*R*R))/3;
printf ("Ploshad poverhnosti S= %lf\n",S);
printf ("Ee ob'em sostavlyaet V=%lf\n",V);
getch ();
return 0;
}
GreyDark
8 / 8 / 1
Регистрация: 11.02.2010
Сообщений: 21
08.04.2010, 14:50     Как отследить ввод символа в программу #5
Ты сразу пытаешься считать число, так не выйдет.
Vorona
Peace 2 all shining faces
666 / 528 / 44
Регистрация: 05.03.2010
Сообщений: 1,271
08.04.2010, 17:49     Как отследить ввод символа в программу #6
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
#include <cstdio>
#include <conio.h>
#include <cmath>
 
using namespace std;
 
int main ()
{
    double S, V, R;
    int i = 0;
    double pi = 3.14;
    printf("Vvedite polozhitelnoe znachenie radiusa sfery> R=");
    
    char c = 0, radius[15];
    while(c != 13) 
    {
        c = _getch();
        if(c >= '0' && c <= '9')
        {
            radius[i] = c;
            printf("%c", radius[i]);
            i++;
        }
    }
    R = atof(radius);
 
    S = 4 * pi * pow(R, 2);
    V = (4 * pi * pow(R, 3)) / 3;
    printf("\nPloshad poverhnosti S = %lf\n", S);
    printf("Ee ob'em sostavlyaet V = %lf\n", V);
    
    getch();
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.04.2010, 23:58     Как отследить ввод символа в программу
Еще ссылки по теме:

Проверка на ввод символа C++
Пропускает ввод символа C++
Проверка на ввод символа C++
C++ Ввод символа
Как осуществить такую программу где ввод и вывод будет на одной строке? C++

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

Или воспользуйтесь поиском по форуму:
Define
0 / 0 / 0
Регистрация: 03.04.2010
Сообщений: 83
08.04.2010, 23:58  [ТС]     Как отследить ввод символа в программу #7
Большое спасибо,попробую
Yandex
Объявления
08.04.2010, 23:58     Как отследить ввод символа в программу
Ответ Создать тему
Опции темы

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