Skocz do zawartości

  •  
  • Mini kompendium
  • MimeTeX
  • Regulamin

Zdjęcie

[ C++ ] Analiza trójkąta, cd.


  • Zamknięty Temat jest zamknięty
2 odpowiedzi w tym temacie

#1 Tomalla

Tomalla

    =-.-= Spatter Guy =-.-=

  • $Jr Admin
  • Redaktor
  • 3211 postów
1037
Starszy Wykładowca I
  • Płeć:Mężczyzna

Napisano 08.11.2008 - 16:59

No dobrze ... nawiązując do tematu:
http://matma4u.pl/viewtopic.php?t=7890

Napisałem w końcu mój program w C++. Szczegóły w ww. temacie.
I teraz - bardzo bym prosił o sprawdzenie ( przetestowanie ) mojego programu i o ewentualne poprawki / ocenę. Byłbym naprawdę wdzięczny!

#include <iostream>

#include <cmath>



using namespace std;



inline double DMAX(double a, double b){

	return (a=b)?b:a;  // UWAGA!! Powinno być: "return (a<=b)?b:a;"

}



inline double TMAX(double a, double b, double c){

  return DMAX(DMAX(a,b),c);

}



inline double DMIN(double a, double b){

	return (a=b)?a:b;   // UWAGA!! Powinno być: "return (a<=b)?a:b;"

}



inline double TMIN(double a, double b, double c){

  return DMIN(DMIN(a,b),c);

}



// === CZESC GLOWNA PROGRAMU ===



int main()

{

  double ta, tb, tc, a, b, c;

  double cs;



  cin >> ta >> tb >> tc;



  /* TERAZ SORTOWANIE:

	   NAJWIEKSZY BOK - "c"

	   NAJMNIEJSZY BOK - "a"  */



  c = TMAX(ta, tb, tc);

  a = TMIN(ta, tb, tc);

  b = ta + tb + tc - a - c;



  if(!(c<a+b))

  {

	cout << "Z odcinkow o podanej dlugosci, nie mozna zbudowac trojkata!";

	system("PAUSE");

	  return 0;

  }



  cout << "Trojkat jest: ";



  if((a==b)&&(b==c))

	cout << "rownoboczny ";

  else

	if((a==b)||(b==c)||(c==a))

	  cout << "rownoramienny ";

	else

	  if((a!=b)&&(b!=c)&&(c!=a))

		cout << "roznoboczny ";



  if(a*a+b*b>c*c)

	cout << "ostrokatny\n\n";

  else

	if(a*a+b*b==c*c)

	  cout << "prostokatny\n\n";

	else

	  if(a*a+b*b<c*c)

		cout << "rozwartokatny\n\n";



  system("PAUSE");



  return 0;

}

PS. Właśnie znalazłem następny błąd forum :twisted: w funkcjach DMAX i DMIN musiałem usunąć znak mniejszości i wpisać go w komentarzu obok, bo MI SIĘ CAŁY KOD ROZWALAŁ, nagle mi go ucinał w środku kodu i było ok. 51 linijek :evil: :evil: Więc testując program, prosiłbym o uwzględnienie tych komentarzy :?

Pozdrawiam, Tomalla :)
  • 0
________
Nie rozwiązuję zadań poprzez PMy!
Nie zaśmiecać mi skrzynki odbiorczej wiadomościami typu "pomóż mi w następnym zadaniu" etc.
Tego typu wiadomości będę po prostu ignorował i od razu usuwał.


=-.-= ToMaLlA - General Modder in games with QuaKe 3 and DooM III EnGiNes =-.-=

Afroman

    Kombinator

  • Użytkownik
3
  • Płeć:Kobieta

Napisano 25.09.2011 - 17:55

#2 MarkII

MarkII

    Operator całkujący

  • VIP
  • 487 postów
22
Mały Pomocnik I
  • Płeć:Mężczyzna

Napisano 08.11.2008 - 18:38

Jak dla mnie ok. Czytelne, choć nazwy zmiennych/funkcji na pierwszy rzut oka nic nie mówią
  • 0
David Hilbert (1862-1943) wybitny niemiecki matematyk zapytany o jednego z byłych uczniów odpowiedział: "Ach, ten, został poetą. Na matematyka miał zbyt mało wyobraźni".

#3 Tomalla

Tomalla

    =-.-= Spatter Guy =-.-=

  • $Jr Admin
  • Redaktor
  • 3211 postów
1037
Starszy Wykładowca I
  • Płeć:Mężczyzna

Napisano 08.11.2008 - 20:54

Hmm ... widzę że nie skasowałem jednej nie używanej zmiennej cs ( ale raczej nie wpływa to na działanie programu :) ). W każdym razie, a b i c to długości boków trójkąta, natomiast ta, tb i tc to zmienne pomocnicze. TMAX/TMIN to skrót od "Triple MAX/MIN", a DMAX/DMIN to jest oczywiście od "Double MAX/MIN". Poszczególne przedrostki miały tylko określać ilość parametrów. W dokumentacji znalazłem jakąś funkcję "max" i "min" ale był z nią mały problem: jak argumenty były równe, funkcja nic nie zwracała ... dlatego postanowiłem napisać nową.

To chyba tyle. Nie widziałem sensu tworzyć zmiennych jak na przykład "max_z_trzema_arg" bo sądzę że to jest o wiele bardziej nieczytelne niż pierwotne nazwy. W takich małych programach raczej nie ma znaczenia, jak się nazwie funkcje / zmienne, szczególnie wtedy, kiedy jest kilka.

Dzięki MarkII za ocenę.

Pozdrawiam, Tomalla :)
  • 0
________
Nie rozwiązuję zadań poprzez PMy!
Nie zaśmiecać mi skrzynki odbiorczej wiadomościami typu "pomóż mi w następnym zadaniu" etc.
Tego typu wiadomości będę po prostu ignorował i od razu usuwał.


=-.-= ToMaLlA - General Modder in games with QuaKe 3 and DooM III EnGiNes =-.-=