HILFE
-
Ich brauche unbedingt Hilfe bei folgender Aufgabe ich habe keine Ahnung wie ich diese lösen soll.Bin ein absoluter Anfänger mit C++.
Aufgabe: Schreiben Sie ein Programm das drei Zahlen einliest und überprüft ob es sich dabei um ein Pythagoreisches Tripel handelt(Ausgabe Ja oder Nein)
Beispiel:
(Eingabe3,4,5 -> ja) 3²+4²=5²[Eingabe1,2,3->Nein) 1²+2²≠3²
Kann mir bitte jemand helfen....

-
Dieser Thread wurde von Moderator/in Martin Richter aus dem Forum MFC (Visual C++) in das Forum C++ (alle ISO-Standards) verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
int main() { // hier eintragen, was du bereits gemacht hast }
-
Selbsterklärend.
#include<iostream> #include<type_traits> template<typename T , typename = std::enable_if_t<std::is_arithmetic<T>::value>> inline bool is_tripel( T a , T b , T c ) noexcept { return ( a * a + b * b ) == ( c * c ); } int main() { std::cout << "a <return> b <return> c <return>" << std::endl; int a , b , c; std::cin >> a >> b >> c; if( std::cin ) std::cout << std::boolalpha << is_tripel( a , b , c ) << std::endl; }
-
Hlymur schrieb:
...
Verräter.
-
std::cin >> a >> b >> c; if( std::cin )Dein Ernst, Bruder?
Edit: Bruder, deine Leerraumsetzung macht mir ebenfalls Sorgen.
-
#include <iostream> char const * literal_not = "not "; template <typename T> bool triple_check() { T numbers[3]; for (auto && n : numbers) { std::cin >> n; n *= n; } return 0[numbers] + numbers[1] == *(numbers + 2); } int main() { while (std::cin) { std::cout << "a <return> b <return> c <return>" << std::endl; auto const is_triple = triple_check<int>(); std::cout << "This is " << literal_not + is_triple * 4 << "a pythagorean triple." << std::endl; } return 0; }
-
Igitt - eine globale Variable! Und sonst ziemlicher Unfug, wie 3 verschiedene Zugriffsarten auf ein Array usw. Du willst dem TE nicht helfen, sondern ihn verwirren - oder zeigen, was Du auf dem Kasten hast? Was ist wohl das Ziel dieses Forums?
-
Der zweite Codeschnipsel ist sehr viel angemessener als der erste.
-
Drako_NULL schrieb:
Igitt - eine globale Variable! Und sonst ziemlicher Unfug, wie 3 verschiedene Zugriffsarten auf ein Array usw. Du willst dem TE nicht helfen, sondern ihn verwirren - oder zeigen, was Du auf dem Kasten hast? Was ist wohl das Ziel dieses Forums?
Im Anbetracht der Tatsache, dass TE 0 (in Worten: Null, nada, nix) Eigeninitiative zeigt hat er auch keine Hilfe verdient. Das erklärt, warum hier solche Sachen gepostet werden.
cracki schrieb:
"Ich brauche unbedingt Hilfe bei folgender Aufgabe ich habe keine Ahnung wie ich diese lösen soll.Bin ein absoluter Anfänger mit C++.
Aufgabe: Schreiben Sie ein Programm das drei Zahlen einliest und überprüft ob es sich dabei um ein Pythagoreisches Tripel handelt(Ausgabe Ja oder Nein)"
Übersetzung:
Bitte mach mal jemand meine Hausaufgaben, ich
-
int main() { //variablendeklaration //begrüßungstext //1. variable einlesen //2. variable einlesen //3. variable einlesen //vergleichen und ergebnis abspeichern //ausgabe }funktioniert das mit double eigentlich richtig, oder was sollen die templates? zumal auch gar keine templates gefordert waren.

-
HansKlaus schrieb:
funktioniert das mit double eigentlich richtig, oder was sollen die templates? zumal auch gar keine templates gefordert waren.

Schon schlimm, wenn man Witze erklären muss.
Ziel beider Antworten war es (scheinbar nicht ganz so) offensichtlich,
den lernunwilligen TE durch übertrieben komplexe Lösungen zu verwirren.Im besten Fall übernimmt der TE eine Lösung so und steht dann dumm da,
wenn der Lehrer/Prof nachfragt.Anyways, es gibt noch weitere Ganzzahltypen (char, short, long, long long).
Zusätzlich könnte man sich spontan entschließen das template mit vorzeichenlosen Typen zu instanzieren.
Die Tatsache, dass Templates genutzt werden, muss nicht gleich bedeuten, dass die Funktion auch für floats oder gar Klassen geeignet ist.
Wobei rein theoretisch sogar 3 Iteratoren ein pythagoreisches Tripel bilden können, sofern die notwendigen Operatoren überladen sind.
-
ja manchmal ist das so......

der "lerneffekt" wäre aber bestimmt größer gewesen, hätte man einfach dezent darauf hingewiesen, dass er seinen kram gefälligst selber machen, oder wenigstens geld hinblättern soll.
wobei die quellcodes da schon recht "freakig" sind

-
Heyo cracki,
ich weiß, die anderen hier können teils echt fies sein. Aber sei nicht besorgt, ich habe dir hier mal das Programm implementiert:
#include <type_traits> #include <stdexcept> #include <cstdlib> #include <iostream> namespace _k=std; using l=_k::overflow_error; template<typename _,typename=_k::enable_if_t<_k::is_integral<_>{}>> auto _1(_ w, _ t, _ f)throw(l)->decltype(!!_{}){ if(w*w<=w*((_{}-1<_{}))*2-1||t*t<=t*((_{}-1<_{}))*2-1||f*f<=f*((_{}-1<_{}))*2-1) throw l{""}; return w&&t&&f&&((w>t)?w:t)<f&&!(w*w-f*f+t*t); } auto main()->_k::common_type_t<decltype(EXIT_SUCCESS),decltype(EXIT_FAILURE)>{ int a,b,c; _k::cin>>a>>b>>c; auto _=[&](auto..._){return[&](auto&&_d){_d<<(_1(_...)?"Ja":"Nein")<<'\n';};}; try{ _(a,b,c)(_k::cout); }catch(l&_){ _k::cerr<<_.what(); } }Anregungen erwünscht.

LG
-
Endlich mal lesbarer Sourcecode hier zu sehen

-