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

После ввода двух катетов найти гипотенузу и периметр - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 8, средняя оценка - 4.75
r00712
0 / 0 / 0
Регистрация: 07.09.2013
Сообщений: 108
07.09.2013, 12:32     После ввода двух катетов найти гипотенузу и периметр #1
Доброго времени суток всем, кто читает этот пост! Поступив в технические вуз с нулевым знанием С++ я обрек себя на долгое и мучительное самообразование..) Первое же задание я не могу выполнить без вашей помощи

Задание: Создать консольное приложение, которое после ввода двух катетов находит гипотенузу и периметр. (с гипотенузой я разобрался)

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
#include "stdafx.h"
#include <iostream>
#include <iomanip>
#include <math.h>
#include <conio.h>
using namespace std;
 
 
int _tmain(int argc, _TCHAR* argv[])
{
setlocale(LC_ALL,"RUS");    
 int p; // периметр
 int c; // гепотенуза 
 int a; // сторона а
 int b; // сторона b
      
cout << "Введите стороны а и b (см): ";
  cin >> a >> b;
  c=(a*a+b*b) ;
  float fl1 = c;
  float root;
  root = sqrt(fl1) ;
  cout<< "Гепотенуза равна:" <<root;
getch();
    return 0;
}
А вот если проделать такую же операцию с периметром (a+b+c), то консоль выдает совершенно изумительные цифры, никак не сходящиеся с периметром.. Как же это реализовать?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.09.2013, 12:32     После ввода двух катетов найти гипотенузу и периметр
Посмотрите здесь:

Найти гипотенузу и площадь равнообедренного треугольника (по данным катетам) C++
C++ вычислить гипотенузу треугольника, зная длины двух катетов;
C++ Заданные длины двух катетов а b в прямоугольном треугольнике.
Вычислить периметр и площать прямоугольного треугольника по длинам 2-х катетов C++
C++ Вычислить периметр и площадь прямоугольного треугольника по длине двух катетов
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
xanderfomin
40 / 37 / 8
Регистрация: 25.10.2012
Сообщений: 112
07.09.2013, 12:39     После ввода двух катетов найти гипотенузу и периметр #2
r00712, ты бы код для периметра выложил, что ли...
r00712
0 / 0 / 0
Регистрация: 07.09.2013
Сообщений: 108
07.09.2013, 12:45  [ТС]     После ввода двух катетов найти гипотенузу и периметр #3
Код p=a+b+c; Проблема в том и есть, если ввести перед формулой расчета cin >> a >> b>>c; то числа берутся новые, а не те, что надо
XRuZzz
Антикодер
577 / 478 / 23
Регистрация: 15.09.2012
Сообщений: 2,429
07.09.2013, 12:50     После ввода двух катетов найти гипотенузу и периметр #4
Цитата Сообщение от r00712 Посмотреть сообщение
cin >> a >> b>>c;
а что мешает не писать эту строку?

Добавлено через 1 минуту
почему у вас в задании и в программе гипотенуза написано по разному?
r00712
0 / 0 / 0
Регистрация: 07.09.2013
Сообщений: 108
07.09.2013, 12:51  [ТС]     После ввода двух катетов найти гипотенузу и периметр #5
Цитата Сообщение от XRuZzz Посмотреть сообщение
а что мешает не писать эту строку?
Не записывая эту строку получается 1+2+2=8 Это я так, к примеру..
По разному написана, потому что орфография страдает=)
XRuZzz
Антикодер
577 / 478 / 23
Регистрация: 15.09.2012
Сообщений: 2,429
07.09.2013, 12:53     После ввода двух катетов найти гипотенузу и периметр #6
Цитата Сообщение от r00712 Посмотреть сообщение
Не записывая эту строку получается 1+2+2=8 Это я так, к примеру..
и в каком коде у вас такое получается? можете написать пример
если
C++
1
2
3
a = 1; b = 2; c=2;
p=a+b+c;
cout<< p << endl;
то будет 5
r00712
0 / 0 / 0
Регистрация: 07.09.2013
Сообщений: 108
07.09.2013, 12:55  [ТС]     После ввода двух катетов найти гипотенузу и периметр #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
#include "stdafx.h"
#include <iostream>
#include <iomanip>
#include <math.h>
#include <conio.h>
using namespace std;
 
 
int _tmain(int argc, _TCHAR* argv[])
{
setlocale(LC_ALL,"RUS");    
 int p; // периметр
 int c; // гепотенуза 
int a; // сторона а
int b; // сторона b
      
cout << "Введите стороны а и b (см): ";
  cin >> a >> b;
  c=(a*a+b*b) ;
  float fl1 = c;
  float root;
  root = sqrt(fl1) ;
  cout<< "Гепотенуза равна:" <<root;
 
  p=a+b+c ;
  cout<< "Периметр равен:" <<p;
  getch();
 
 
    return 0;
}
XRuZzz
Антикодер
577 / 478 / 23
Регистрация: 15.09.2012
Сообщений: 2,429
07.09.2013, 12:59     После ввода двух катетов найти гипотенузу и периметр #8
единственную проблему которую я вижу, это то что у вас типы разные
p, a, b - integer
c - float

скажем можно сделать p типа float

Добавлено через 2 минуты
ну и полезно знать что приведение типов можно сделать например так
C++
1
p=(float)a+float(b)+c ;
тут показано два разных способа.
r00712
0 / 0 / 0
Регистрация: 07.09.2013
Сообщений: 108
07.09.2013, 13:03  [ТС]     После ввода двух катетов найти гипотенузу и периметр #9
Увы...
xanderfomin
40 / 37 / 8
Регистрация: 25.10.2012
Сообщений: 112
07.09.2013, 13:06     После ввода двух катетов найти гипотенузу и периметр #10
r00712, на самом деле, если p и c сделать float, то явное приведение типов уже не требуется.
C++
1
2
3
4
5
6
7
8
9
cout << "Введите стороны а и b (см): ";
int a = 0;
int b = 0;
cin >> a >> b;
float c = sqrt(a * a + b * b);
cout << "Гипотенуза равна:" << c;
float p = a + b + c;
cout << "Периметр равен:" << p;
getch();
В любом случае, если уж и приводить типы - лучше делать это в стиле С++.
r00712
0 / 0 / 0
Регистрация: 07.09.2013
Сообщений: 108
07.09.2013, 13:07  [ТС]     После ввода двух катетов найти гипотенузу и периметр #11
http:// s005.***********/i210/1309/05/e8be6b2eb79a.jpg
XRuZzz
Антикодер
577 / 478 / 23
Регистрация: 15.09.2012
Сообщений: 2,429
07.09.2013, 13:09     После ввода двух катетов найти гипотенузу и периметр #12
а ну да правильно вы вместо гипотенузы использовали "c" а не root

у вас гипотенуза оставалась в root, а "c" это просто сумма квадратов катетов. найти эту проблему самостоятельно можно было написав cout << "c" в разных местах перед использованием формулы периметра.
reisal78
 Аватар для reisal78
603 / 516 / 119
Регистрация: 28.04.2013
Сообщений: 1,451
07.09.2013, 13:16     После ввода двух катетов найти гипотенузу и периметр #13
что я сам тут похоже зафтыкал )
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.09.2013, 17:52     После ввода двух катетов найти гипотенузу и периметр
Еще ссылки по теме:

Ссылки или указатели (Написать функцию , которая вычисляет гипотенузу, площадь и периметр прямоугольного треугольника) C++
C++ Вычислить периметр и площадь прямоугольного треугольника по длинам двух катетов
Найти гипотенузу и площадь треугольника C++

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

Или воспользуйтесь поиском по форуму:
B3op
0 / 0 / 0
Регистрация: 22.06.2013
Сообщений: 6
07.09.2013, 17:52     После ввода двух катетов найти гипотенузу и периметр #14
Цитата Сообщение от r00712 Посмотреть сообщение
Кликните здесь для просмотра всего текста
Доброго времени суток всем, кто читает этот пост! Поступив в технические вуз с нулевым знанием С++ я обрек себя на долгое и мучительное самообразование..) Первое же задание я не могу выполнить без вашей помощи

Задание: Создать консольное приложение, которое после ввода двух катетов находит гипотенузу и периметр. (с гипотенузой я разобрался)

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
#include "stdafx.h"
#include <iostream>
#include <iomanip>
#include <math.h>
#include <conio.h>
using namespace std;
 
 
int _tmain(int argc, _TCHAR* argv[])
{
setlocale(LC_ALL,"RUS");    
 int p; // периметр
 int c; // гепотенуза 
 int a; // сторона а
 int b; // сторона b
      
cout << "Введите стороны а и b (см): ";
  cin >> a >> b;
  c=(a*a+b*b) ;
  float fl1 = c;
  float root;
  root = sqrt(fl1) ;
  cout<< "Гепотенуза равна:" <<root;
getch();
    return 0;
}



А вот если проделать такую же операцию с периметром (a+b+c), то консоль выдает совершенно изумительные цифры, никак не сходящиеся с периметром.. Как же это реализовать?
Если ты считаешь периметр как а+b+c то понятно в чем ошибка.
C++
1
2
  root = sqrt(fl1) ;
  cout<< "Гепотенуза равна:" <<root;
Гипотенуза у тебя присвоена переменной root,а с это просто сумма квадратов, значит чтобы посчитать периметр используй root , то есть будет не а+б+с должно быть что-то типа a+b+root и вот это уже будет периметр.Ну или убери root и просто допиши корень к "c", чтобы эта переменная была гипотенузой.
Yandex
Объявления
07.09.2013, 17:52     После ввода двух катетов найти гипотенузу и периметр
Ответ Создать тему
Опции темы

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