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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 45, средняя оценка - 4.71
BlitZz
1 / 1 / 0
Регистрация: 13.03.2009
Сообщений: 40
#1

Проверка на ввод букв - C++

13.03.2009, 19:33. Просмотров 6244. Ответов 7
Метки нет (Все метки)

В общем такая проблемка
Задача: сделать программу для расчета периметра, площади, медианы, бисектрисы и высоты.
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
# include <stdio.h>;
# include <conio.h>;
# include <math.h>;
# include <iostream.h>
 
int main(void)
{cin.clear();
 float a,b,c,P,p,S,ma,mb,mc,ha,hb,hc,ba,bb,bc;
  clrscr();
    cout << "Введите положительные стороны треугольника\n" ;
    cin >> a >> b >> c;
 
  if ((a+b>c) && (a+c>b) && (b+c>a))
 
 {
 
  P=a+b+c;
  p=P/2;
  cout << "Периметр равен*= "<<P <<endl;
  S=sqrt(p*(p-a)*(p-b)*(p-c));
  cout << "Площадь равна**= \t"<<S <<endl;
  ha=2*S/a;
  hb=2*S/b;
  hc=2*S/c;
  cout << " Высота проведенная на сторону <а>\t"<<ha<<endl ;
  cout << " Высота проведенная на сторону<b>\t"<<hb<<endl ;
  cout << " Высота проведенная на сторону<c>\t"<<hc<<endl ;
  ma=(sqrt(2*b*b+2*c*c-a*a))/2;
  mb=(sqrt(2*a*a+2*c*c-b*b))/2;
  mc=(sqrt(2*b*b+2*a*a-c*c))/2;
  cout << "Медиана проведенная на сторону <*а>\t"<<ma<<endl;
  cout << "Медиана проведенная на сторону <b>\t"<<mb<<endl;
  cout << "Медиана проведенная на сторону <c>\t"<<mc<<endl;
  ba=(2/(a+b))*(sqrt(b*c*p*(p-a)));
  bb=(2/(a+b))*(sqrt(a*c*p*(p-b)));
  bc=(2/(a+c))*(sqrt(a*b*p*(p-c)));
  cout << "Бисектриса проведенная на сторону<*а>\t"<<ba<<endl;
  cout << "Бисектриса проведенная на сторону<b>\t"<<bb<<endl;
  cout << "Бисектриса проведенная на сторону <c>\t"<<bc<<endl;}
  else
   {
    cout << "Такого треугольника не существует!";
   }
  getch ();
 
}
В целом задача вся рабочая, но есть одно НО
проблема при проверке на ввод символов
когда ввожу например стороны: 2 3 4 ответ выдает
когда ввожу: 2 t - то программа пишет что ошибка и считает третью сторону как 0
когда ввожу: 2 3 4t то выдает решение(хотя должно ошибку)
Теперь вопрос: как сделать проверку на ввод буквенных значений?
PS. Заранее спасибо =)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.03.2009, 19:33
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Проверка на ввод букв (C++):

Проверка на ввод букв - C++
Как в данной программе реализовать проверку на ввод букв.:umbrage: #include &lt;iostream&gt; #include &lt;iomanip&gt; using namespace std; ...

Try/catch. Проверка на ввод букв в int - C++
Как сделать проверку на ввод букв в переменную типа int? Хочу это реализовать через try/catch, но никак не могу разобраться как это...

Проверка на ввод только нескольких букв - C++
Проверка на ввод только цифр или букв, понятна, а вот собственно нужно ввести только три буквы по очереди типа R, Y, W в противном случае...

Можете объяснить, как работает следующая проверка (на ввод букв)? - C++
do { k=scanf_s(&quot;%d&quot;,&amp;mas); if (k==0) { fflush(stdin); printf(&quot;\nОшибка,введите число:&quot;); } ...

Проверка на ввод - C++
в borland С нужно осуществить проверку на ввод, пользователь дожлен ввести число, как проверить ввел позльзователь число или что то другое

Проверка на ввод C++ - C++
алгоритм-1: 1)ввод x (например 1) 2)вывод y 3)расчет заново (y/n) (работает) алгоритм -2: 1) ввод x (например 1) 2) вывод...

7
Gravity
563 / 557 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
13.03.2009, 19:41 #2
Функцией isalpha из ctype.h.
0
BlitZz
1 / 1 / 0
Регистрация: 13.03.2009
Сообщений: 40
13.03.2009, 20:05  [ТС] #3
Пробовал проверить через "isdigit" - не выходит(у меня)
Если не сложно подскажите как именно это реализовать в моей проге?
0
accept
4823 / 3244 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
13.03.2009, 20:23 #4
C++
1
2
3
    cin >> a >> b >> c;
 
    if ((a+b>c) && (a+c>b) && (b+c>a))
C++
1
2
3
4
5
6
7
8
    cin >> a >> b >> c;
    
    if (!a || !b || !c) {
        cout << "Стороны неправильные!";
        return 1;
    }
 
    if ((a+b>c) && (a+c>b) && (b+c>a))
0
BlitZz
1 / 1 / 0
Регистрация: 13.03.2009
Сообщений: 40
13.03.2009, 22:25  [ТС] #5
Результата никакого
это не проверка на ввод букв
0
accept
4823 / 3244 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
13.03.2009, 23:12 #6
C++
1
2
3
4
5
6
7
8
9
    a = b = c = 0.0;
    cin >> a >> b >> c;
    
    if (!a || !b || !c) {
        cout << "Стороны неправильные!";
        return 1;
    }
 
    if ((a+b>c) && (a+c>b) && (b+c>a))
0
Monte-Cristo
2790 / 1376 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
13.03.2009, 23:42 #7
а зачем ты подключил библиотеку stdio.h ? ты же везде используешь потоки ввода/вывода из iostream.h ... это лишняя библиотека..
0
BlitZz
1 / 1 / 0
Регистрация: 13.03.2009
Сообщений: 40
13.03.2009, 23:50  [ТС] #8
Цитата Сообщение от Don Corleone Посмотреть сообщение
а зачем ты подключил библиотеку stdio.h ? ты же везде используешь потоки ввода/вывода из iostream.h ... это лишняя библиотека..
Понял, исправил =)
0
13.03.2009, 23:50
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.03.2009, 23:50
Привет! Вот еще темы с ответами:

Проверка на ввод - C++
Есть переменная целочисельная ввожу ее с клавиатуры , но когда ввожу букву нажимаю enter вываливает ексепшын. Нашел функцию isdigit ,...

Игнорировать ввод букв - C++
Скажите, как игнорировать ввод букв и вообще всех символов кроме 0-9 и точки, подобно проверке на корректность ввода данных. Какой-то цикл...

Ввод русских букв - C++
Не могу понять почему при вводе русских символом программа начинает ругаться. Можно ли как-нибудь решить эту проблему? #include...

Ограничение на ввод букв! - C++
Приветствую Вас друзья! В общем такая проблема: Нужно выполнить проверку на ввод только цифр, если вместо цифры введена буква запросить...


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

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

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