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

Problem w funkcjach? pole trójkąta

Object Storage Arubacloud
0 głosów
454 wizyt
pytanie zadane 30 stycznia 2021 w C i C++ przez Adamek185wp Obywatel (1,280 p.)
edycja 30 stycznia 2021 przez Arkadiusz Waluk

Witam! Stworzyłem program w którym podajemy współrzędne punktowe trójkąta a program wyliczy nam pole tego obiektu. Nie wiem dlaczego ale nie poprawnie działa mi chyba funkcja parametry(), gdy wstawiam zawartosc funkcji do mein program zachowuje sie tak jak powinien. Prosze o pomoc!

#include <stdio.h>
#include <string.h>
#include <math.h>

struct trojkat {
   int   bokA[2];
   int   bokB[2];
   int   bokC[2];
   double dl_1,dl_2,dl_3;
   double koniec;
};

double oblicz_dl_odcinka(int x1, int x2, int y1, int y2)
{
    double wynik;
    wynik = sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
    return wynik;
}

double oblicz_pl_odcinka(double a, double b, double c)
{
    double pole;
    pole=(a+b+c)/2;
    return pole;
}

void printwypisz( struct trojkat wypisz );

void printwypisz( struct trojkat wypisz ) {

   printf("\n%5.2f", wypisz.dl_1);
   printf("\n%5.2f", wypisz.dl_2);
   printf("\n%5.2f\n\n", wypisz.dl_3);

   printf("wynik= %5.2f\n", wypisz.koniec);
}

void parametry(){

   struct trojkat wypisz1;
   printf("\nPodaj X A:");    scanf("%d",&wypisz1.bokA[0]);
   printf("\nPodaj Y A:");    scanf("%d",&wypisz1.bokA[1]);
   printf("\nPodaj X B:");    scanf("%d",&wypisz1.bokB[0]);
   printf("\nPodaj Y B:");    scanf("%d",&wypisz1.bokB[1]);
   printf("\nPodaj X C:");    scanf("%d",&wypisz1.bokC[0]);
   printf("\nPodaj Y C:");    scanf("%d",&wypisz1.bokC[1]);
}

int main() {

  parametry();

  struct trojkat wypisz1;

   wypisz1.dl_1=oblicz_dl_odcinka(wypisz1.bokA[0],wypisz1.bokB[0],wypisz1.bokA[1],wypisz1.bokB[1]);
   wypisz1.dl_2=oblicz_dl_odcinka(wypisz1.bokB[0],wypisz1.bokC[0],wypisz1.bokB[1],wypisz1.bokC[1]);
   wypisz1.dl_3=oblicz_dl_odcinka(wypisz1.bokC[0],wypisz1.bokA[0],wypisz1.bokC[1],wypisz1.bokA[1]);
   wypisz1.koniec=oblicz_pl_odcinka(wypisz1.dl_1,wypisz1.dl_2,wypisz1.dl_3);

   printwypisz(wypisz1);
   return 0;
}

 

1 odpowiedź

0 głosów
odpowiedź 30 stycznia 2021 przez Great Stary wyjadacz (12,300 p.)
wybrane 30 stycznia 2021 przez Adamek185wp
 
Najlepsza

Funkcja parametry wczytuje współrzędne punktów do zmiennej lokalnej. Jeżeli chcesz wpisać te dane do obiektu w mainie wyślij go przez wskaźnik:

void parametry(struct trojkat* wypisz1) {
    printf("\nPodaj X A:");    scanf("%d", &wypisz1->bokA[0]);
    printf("\nPodaj Y A:");    scanf("%d", &wypisz1->bokA[1]);
    printf("\nPodaj X B:");    scanf("%d", &wypisz1->bokB[0]);
    printf("\nPodaj Y B:");    scanf("%d", &wypisz1->bokB[1]);
    printf("\nPodaj X C:");    scanf("%d", &wypisz1->bokC[0]);
    printf("\nPodaj Y C:");    scanf("%d", &wypisz1->bokC[1]);
}

...

parametry(&wypisz1);

PS. Nie liczysz pola trójkąta tylko połowę obwodu potrzebną do wzoru Herona.

komentarz 30 stycznia 2021 przez Adamek185wp Obywatel (1,280 p.)
Dzięki! Bardziej się skupiłem na tym że nie działo mi wpisywanie :). Reszte dopisuje dopiero teraz. DZIEKUJE JESZCZE RAZ! :)

Podobne pytania

+1 głos
1 odpowiedź 137 wizyt
pytanie zadane 15 sierpnia 2015 w C i C++ przez rafalmagician Obywatel (1,320 p.)
+2 głosów
0 odpowiedzi 283 wizyt
pytanie zadane 28 lipca 2021 w JavaScript przez lucasio99 Początkujący (320 p.)
0 głosów
1 odpowiedź 852 wizyt

92,551 zapytań

141,399 odpowiedzi

319,529 komentarzy

61,937 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...