Skocz do zawartości

[c] Sprawdzenie czy trójkąt jest prostokątny


Ludvic

Polecane posty

Witam mam problem z programem, który poinformuje użytkownika odpowiednim komunikatem, czy 3 podane przez niego boki trójkąta należą do trójkąta prostokątnego. Podane przez użytkownika dane są liczbami całkowitymi.Napisałem ale nie działa do końca poprawnie , możecie zerknąć co jest źle?

 

KOD

#include<stdio.h>

#include <stdlib.h>

int main(int argc, char *argv[])

{

int a, b , c;

printf("Podaj trzy liczby calkowite\n");

printf("Pierwsza liczba:");

scanf("%d",&a);

printf("Druga liczba:");

scanf("%d",&b);

printf("Trzecia liczba:");

scanf("%d",&c);

if ( a > b) {

if (b > c){

if ("a^2=b^2+c^2"){

printf ("Trójkąt jest prostokątny");

}

}

else if ( b < c){

if ( a > c) {

if ("b^2=c^2+a^2"){

printf ("Trójkąt jest prostokątny");

}

}

else if ( a < c) {

if ("c^2=a^2+b^2")

printf ("Trójkąt jest prostokątny");

}

}

}

else if ( b> a) {

if ( a > c) {

if ("b^2=a^2+c^2")

printf ("Trójkąt jest prostokątny ", c,a,b);

}

else if ( a < c) {

if (b > c) {

if ("b^2=a^2+c^2"){

printf ("Trójkąt jest prostokątny ");

}

else if ( b < c) {

if("c^2=b^2+a^2"){

printf ("Trójkąt jest prostokątny");

}

}

}

}

}

system("PAUSE");

return 0;

}

 

Link do komentarza
Udostępnij na innych stronach

po pierwsze

if ("a^2=b^2+c^2"){

zasze jest prawda bo "STRING" "a^2=b^2+c^2" jest != 0 czyli dla C++ to prawda

 

po drugie: skad ty wytrzasnales taki warunek, juz myslalem ze niekt mnie nie zadziwi

po trzecie: operator ^ nie jest operatorem potegi, wiem zawiodlem cie, ale takie sa smutne fakty.

policz wartosci do zmiennych i dopiero porownaj w warunkach.

 

i na kuniec nie pisze w warunku = tylko == albo bedziesz baaaardzoe dlugo szukac bledu ;)

Always Dark<br />u1_tt_logo.png banner-1.pngexFabula-banner.pngson_banner_ubersmall.jpg

Link do komentarza
Udostępnij na innych stronach

  • 2 months later...

Witam

To mój pierwszy post.

Zastanawiam się co to za forum, by podyskutować, czy by wykazać że ktoś jest początkujący i raczej powinien zmienić profesje.

Toster masz 100% racji, to są błędy podstawowe w tym programie, oczywiście poza tym warunkiem.

 

Ludvic podstawową zasadą języka C, czy też C++ jest logiczne myślenie. Patrząc na Twój program przeanalizowanie go to niezła łamigłówka. Następnym razem zanim napiszesz program, to pomyśl co chcesz uzyskać, wybierz metodę i na koniec napisz kod.

Wymyśliłeś sobie, że najpierw musisz sprawdzić który bok jest największy, a jak już znajdziesz taki chciałeś sprawdzić czy boki trójkąta spełniają twierdzenie Pitagorasa. I niby ok, ale język C jak król wszystkich języków programowania pozwala tworzyć kod który jest zwięzły bez potrzeby powielania tego samego kodu w programie. I lubi jak programista zmierza najprostrzą drogą do celu.

A więc wracając do Twojego programu. Masz rację: twierdzenie Pitagorasa to podstawa. Natomiast oznaczenie który bok jest najdłuższy nic nie daje.

Ponieważ interesują nas w twierdzeniu Pitagorasa tylko kwadraty boków wystarczy, że po wczytaniu zmiennych od razu je podniesiesz do kwadratu (procesor zrobi to tylko 1 raz!!!), przekładając na język C pomnożysz przez siebie: a*=a;

a później sprawdzisz 3 warunki łącząc je operatorem sumy logicznej (w C: ||) i będziesz od razu miał wynik.

Jakie warunki: a == b+c i tak dla każdego boku. Proste i naprawdę łatwiej szukać błędu w takim programie, do tego działa szybciej.

Zapamiętaj sobie program może być napisany tylko w jednym języku i dobrą zasadą jest używanie klawisza Tab po Enter, łatwiej się czyta.

 

Pozdrawiam

Link do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

×
×
  • Utwórz nowe...