C++ REFERENCJA

Wątek przeniesiony 2020-11-16 16:02 z Coyote przez kq.

P1
  • Rejestracja:ponad 4 lata
  • Ostatnio:około 3 lata
  • Postów:12
0

Napisz funkcję, która jako argumenty przyjmuje długości boków trójkąta (trzy
argumenty typu double). Funkcja ma zwrócić wartość true/false w zależności czy z
podanych długości można zbudować trójkąt (można - true, nie można - false). W funkcji
main wprowadź długości boków, wywołaj funkcję i wypisz na ekranie informację czy
można zbudować trójkąt.
czy ktos moglby mi wytlumaczyc jak zrobic to referencją? do czego i w ktorym miejscu sie odwołać?
moj kod bez referencji wyglada tak, chyba jest poprawny ale tez bede wdzieczna za sprawdzenie

Kopiuj
#include<iostream>
#include<cstdlib>
using namespace std;

double x,y,z;

bool bokitrojkata(double x, double y, double z)
{
    if ((z+y)>x && (x+z)>y &&(x+y)>z)
       {
           return true;
}
    else

return false;
}
int main()
{

  bokitrojkata(1,2,5);
    return 0;
}
edytowany 8x, ostatnio: polka123
KamilAdam
  • Rejestracja:ponad 6 lat
  • Ostatnio:29 dni
  • Lokalizacja:Silesia/Marki
  • Postów:5505
2
  • Zły dział
  • Twoja funkcja jest błędna. Masz w poleceniu Funkcja ma zwrócić wartość true/false a ma typ zwracany double w dodatku tego double nie zwracasz
  • Gdzie w poleceniu masz coś o referencji? Czemu chcesz to zrobić z referencją?

Mama called me disappointment, Papa called me fat
Każdego eksperta można zastąpić backendowcem który ma się douczyć po godzinach. Tak zostałem ekspertem AI, Neo4j i Nest.js . Przez mianowanie
edytowany 1x, ostatnio: KamilAdam
P1
mam to zadanie robic na 2 sposoby z referencja i bez
P1
zmienilam na bool
P1
teraz zwracam ale rozumiem ze kompilator mi tego nie wypisze?
AK
  • Rejestracja:prawie 7 lat
  • Ostatnio:około miesiąc
  • Postów:3561
2

Wg zadania

Kopiuj
bool bokitrojkata(double x, double y, double z)

I przenigdy nie drukuj w funkcji, jak masz ZWRÓCIĆ WYNIK. Bo może to jest potrzebne w dalszym algorytmie - skąd miałby wyczaić co drukujesz?

A referencja tu za nic nie pasuje, mogła by być włączona na siłę.


Bo C to najlepszy język, każdy uczeń ci to powie
lion137
  • Rejestracja:około 8 lat
  • Ostatnio:3 minuty
  • Postów:4930
0

Warunek wygląda na poprawny, tylko funkcja ma zwracać bool, czyli return true/false, zamiast cout. Referencja? A po co i o co chodzi? Może o przekazywanie argumentów?
https://www.tutorialspoint.com/cprogramming/c_function_call_by_reference.htm


TomaszLiMoon
  • Rejestracja:prawie 10 lat
  • Ostatnio:dzień
  • Postów:530
1

czy ktos moglby mi wytlumaczyc jak zrobic to referencją?

Kopiuj
bool isTriangle( const double& x , const double& y , const double& z ) 
{
    return (z+y)>x && (x+z)>y && (x+y)>z;
}
P1
aha, czyli tylko tyle. Dzieki
MarekR22
te referencje są bezsensu, ale trudno.
MarekR22
Moderator C/C++
  • Rejestracja:około 17 lat
  • Ostatnio:3 minuty
2
Kopiuj
bool areTriangleEdges(double a, double b, double c) {
    return a > 0 && b > 0 && c > 0
        && a + b > c
        && b + c > a
        && c + a > b;
}

Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.
edytowany 1x, ostatnio: MarekR22
TomaszLiMoon
BTW - napisanie poprawnie działającej funkcji sprawdzającej czy trzy liczby typu double mogą utworzyć trójkąt, jest zadaniem trudniejszym niż można było początkowo sądzić. Chodzi tutaj o obsłużenie przypadków granicznych, dla liczb będących blisko swoich maksymalnych wartości.
MarekR22
tak wiem, że przypadek 1e10, 1e10, 1e-10 da wynik false mimo, że jest to poprawny trójkąt, ale jakoś wątpię by jego nauczyciel był tego świadomy.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.