• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Sprawdzenie czy trójkąt jest prostokątny

0 głosów
750 wizyt
pytanie zadane 8 maja 2022 w C i C++ przez edekkredek Nowicjusz (120 p.)
edycja 8 maja 2022 przez ScriptyChris

Cześć potrzebuje pomocy, program ma sprawdzać czy trójkąt z podanych liczb jest prostokątny i ma zapisać w tablicy.

main.c

#include <stdio.h>
#include <math.h>
#include "triangle.h"
int i;
float x1,x2,x3,y1,y2,y3;
Point_t first={x1,y1};
Point_t second={x2,y2};
Point_t third={x3,y3};
int main(){
printf("Wprowadz wartosci 'x' i 'y' dla trzech punktow (zatwierdzaj kazda wartosc enter) \n");
	scanf("%f", &x1);
	scanf("%f\n", &y1);
	scanf("%f", &x2);
	scanf("%f\n", &y2);
	scanf("%f", &x3);
	scanf("%f\n", &y3);
	points[]={Point_t first,Point_t second,Point_t third};
bool isRightTriangle(Point_t points[]);
if true {
printf("Trojkat prostokatny);
};
if false {
printf("Trojkat nie jest prostokatny");
};
return 0;
};

triangle.c

#include <stdio.h>
#include <math.h>
#include "triangle.h"

double calculateDistance (Point_t first,Point_t second){
const double xDist = second.x - first.x ;
const double yDist = second.y - first.y ;
return sqrt(xDist*xDist + yDist*yDist);
};
double side1,side2,side3;
bool isRightTriangle(Point_t points[]){
	side1=calculateDistance(Point_t first, Point_t second);
	side2=calculateDistance(Point_t first, Point_t third);
	side3=calculateDistance(Point_t second, Point_t third);
if {
(sqrt(pow(side1)+pow(side2))==side3)||(sqrt(pow(side3)+pow(side2))==side1)||(sqrt(pow(side1)+pow(side3))==side2);
return true;
};
if else {
	return false;
};
};

triangle.h

#pragma once

// Declaration of boolean type
#include <stdbool.h>

typedef struct Point {
	double x, y;
} Point_t;

bool isRightTriangle(Point_t points[]);

tak wygląda polecenie. 

Plik triangle.h zawiera deklaracje struktury Point t, przechowującej współrzędne punktu na płaszczyźnie, oraz funkcji bool isRightTriangle(Point t points[]), która sprawdza czy trzy zadane punkty na płaszczyźnie tworzą trójkąt prostokątny. Punkty przekazywane są w postaci tablicy struktur Point t. Napisz definicję funkcji isRightTriangle() i umieść ją w pliku triangle.c, a następnie przetestuj działanie zaimplementowanej funkcji. Współrzędne x, y punktów pobierz z klawiatury. Dla uproszczenia możesz przyjąć, że działanie funkcji jest niezdefiniowane w przypadku, gdy tablica punktów ma rozmiar różny niż 3

komentarz 9 maja 2022 przez Oscar Nałogowiec (29,360 p.)
edycja 9 maja 2022 przez Oscar

Inicjujesz zmienne typu Point_t przed przypoisaniem wartości do x1,y1 itp. Tablicę points w main() też dziwnie tworzysz.

Takie uwagi na przyszłość:

Jak liczysz na zmiennym przecinku, to nie używaj ==, wyniki będą przybliżone, więc trzeba założyć jakąś maksymalną względną różnicę o ile dwie liczby mogą się różnić.

Jak już liczysz te kwadraty to porównuj je bezpośrednio, nie wyciągaj pierwiastka. Funkcja licząca odległość też w sumie ma prościej podać kwadrat, ale jak rozumiem, ona jest dana z góry.

 

1 odpowiedź

0 głosów
odpowiedź 8 maja 2022 przez Apled Dyskutant (9,520 p.)

Wewnątrz pliku triangle.h deklarujesz

bool isRightTriangle(Point_t points[]);

wewnątrz pliku main znowu masz

bool isRightTriangle(Point_t points[]);

i co to w ogóle ma robić?

if true {
printf("Trojkat prostokatny);
};
if false {
printf("Trojkat nie jest prostokatny");
};

Czy ten fragment ma odnosić się do wyniku funkcji isRightTriangle?

Ja tutaj widzę spory bałagan, chociażby z niepotrzebnymi myślnikami po if'ach i jakimiś "if else" zamiast zwykłego else

Podobne pytania

0 głosów
1 odpowiedź 2,135 wizyt
pytanie zadane 6 stycznia 2018 w JavaScript przez BinaryMan Stary wyjadacz (12,620 p.)
0 głosów
1 odpowiedź 531 wizyt
pytanie zadane 30 listopada 2017 w Ogłoszenia, zlecenia przez lichotka Nowicjusz (210 p.)
0 głosów
4 odpowiedzi 11,956 wizyt
pytanie zadane 16 kwietnia 2016 w C i C++ przez Michał_Warmuz Mądrala (5,830 p.)

93,604 zapytań

142,529 odpowiedzi

322,999 komentarzy

63,093 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...