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

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

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

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

13.03.2009, 19:33. Просмотров 5677. Ответов 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. Заранее спасибо =)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Gravity
 Аватар для Gravity
556 / 550 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
13.03.2009, 19:41     Проверка на ввод букв #2
Функцией isalpha из ctype.h.
BlitZz
1 / 1 / 0
Регистрация: 13.03.2009
Сообщений: 40
13.03.2009, 20:05  [ТС]     Проверка на ввод букв #3
Пробовал проверить через "isdigit" - не выходит(у меня)
Если не сложно подскажите как именно это реализовать в моей проге?
accept
4838 / 3237 / 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))
BlitZz
1 / 1 / 0
Регистрация: 13.03.2009
Сообщений: 40
13.03.2009, 22:25  [ТС]     Проверка на ввод букв #5
Результата никакого
это не проверка на ввод букв
accept
4838 / 3237 / 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))
Monte-Cristo
 Аватар для Monte-Cristo
2807 / 1372 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
13.03.2009, 23:42     Проверка на ввод букв #7
а зачем ты подключил библиотеку stdio.h ? ты же везде используешь потоки ввода/вывода из iostream.h ... это лишняя библиотека..
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.03.2009, 23:50     Проверка на ввод букв
Еще ссылки по теме:

Проверка на ввод C++
Можете объяснить, как работает следующая проверка (на ввод букв)? C++
C++ Ввод русских букв
C++ Проверка на ввод букв
Try/catch. Проверка на ввод букв в int C++

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

Или воспользуйтесь поиском по форуму:
BlitZz
1 / 1 / 0
Регистрация: 13.03.2009
Сообщений: 40
13.03.2009, 23:50  [ТС]     Проверка на ввод букв #8
Цитата Сообщение от Don Corleone Посмотреть сообщение
а зачем ты подключил библиотеку stdio.h ? ты же везде используешь потоки ввода/вывода из iostream.h ... это лишняя библиотека..
Понял, исправил =)
Yandex
Объявления
13.03.2009, 23:50     Проверка на ввод букв
Ответ Создать тему
Опции темы

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