Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Простейшая задачка


Автор: r00712 7.9.2013, 11:34
Доброго времени суток всем, кто читает этот пост! Поступив в технические вуз с нулевым знанием С++ я обрек себя на долгое и мучительное самообразование..) Первое же задание я не могу выполнить без вашей помощи 

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

Код

#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), то консоль выдает совершенно изумительные цифры, никак не сходящиеся с периметром.. Как же это реализовать?

Автор: feodorv 7.9.2013, 11:51
Цитата(r00712 @  7.9.2013,  12:34 Найти цитируемый пост)
 int p; // периметр
 int c; // гепотенуза 
 int a; // сторона а
 int b; // сторона b

Переведите всё во float, так как вероятность при произвольных a и b получить целую гипотенузу, стремится к нулю. А все стороны в треугольнике (с точки зрения периметра как минимум) равноправны. И если сторона c - float, то и остальные стороны тоже - float. Периметр - тоже float, иначе "изумительные цифры".

Автор: r00712 7.9.2013, 11:56
feodorv, увы, не сработало  smile 

Автор: feodorv 7.9.2013, 12:11
Цитата(r00712 @  7.9.2013,  12:56 Найти цитируемый пост)
feodorv, увы, не сработало

Не верю  smile 
Код

#include <iostream>
#include <iomanip>
#include <math.h>
#include <conio.h>

using namespace std;

int main( void )
{
  setlocale( LC_ALL, "RUS");

  float a, b;
  cout << "Введите стороны а и b (см): ";
  cin >> a >> b;

  float c = sqrt( a*a + b*b );
  cout << "Гипотенуза равна: " << c << endl;

  float p = a + b + c;
  cout << "Периметр равен: "  << p << endl;

  getch();
  return 0;
}

Всё работает.

PS "Гепотенуза" пишется через 'и'.

Автор: r00712 7.9.2013, 12:18
Очень благодарен вам smile  

Автор: ТарасАтавин 7.9.2013, 13:35
Округлённый периметр и дивноцыфра - далеко не одно и тоже.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)