Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Quadratische Gleichung und das Epsilon

Mitglied: Shagrath

Shagrath (Level 1) - Jetzt verbinden

11.11.2006, aktualisiert 25.11.2006, 9977 Aufrufe, 5 Kommentare

Ahoi,

also es geht darum. Aufgabe is das programmieren einer quadratischen Gleichung in normalem C. Das hab ich mir auch irgendwie aus der Nase gezogen. D.h. das Programm funktioniert ohne Probleme und macht auch alles was ich will, bis auf zwei Sachen.

1. In den Fällen wo keine Lösung das Ergebnis ist, würd ich das Ergebnis gerne als komplexe Zahlen darstellen. Und ich hab absolut keinen Schimmer wie ich das machen soll.

2. Als kleiner "Zusatz" gibt es noch das zu implentieren: Zitat: Aufgrund der begrenzten Darstellungsmöglichkeiten in realen Rechnern sind nicht nur Fälle mit genau einem Wert von Null kritisch, sondern auch Werte in unmittelbarer Nähe von Null. Testen sie daher den Fall mittels
|a| < &#1108; (Epsilon) ab, wobei &#1108; vom Rechner und der gewünschten Genauigkeit abhängt. Ein praktisch meist sinnvoller Wert ist &#1108; = 10 Hoch -7."

Hier is der funktionierende Quelltext. Vielleicht hat jemend ne Idee. Hab im Netz nix hilfreiches gefunden. Danke schon mal.



/*Berechnung einer quadratischen Gleichung*/

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

void main(void)

{
double a=0, b=0, c=0, D=0, x1=0, x2=0, zw1=0, zw2=0;
int auswahl=0;

do { /*Beginn der Programmwiederholungsschleife*/

system("cls");

printf("\nGegeben ist die quadratische Gleichung ax^2 + bx + c = 0 .\n");
printf("\nGeben Sie jetzt die Variablen a, b und c ein.\n\n");

/*Variablendeklaration*/

printf("a = ");
scanf("%lf", &a);

printf("\nb = ");
scanf("%lf", &b);

printf("\nc = ");
scanf("%lf", &c);

/*Berechnung der Lösungen*/

/*if-else-Schleife um Lösungen zu berechnen*/

/*Lineare Funktion*/

if (a == 0) {

if (b == 0) {

if (c == 0)

printf("\n\nErgebnis ist 0=0 --> Ergebnis ist xeR."); /*Wenn a,b,c = 0 dann xeR*/

else printf("\n\nEs gibt keine L\x94sungen."); /*Sonst, wenn c nicht 0 --> keine Lösungen*/

} else if (b != 0 ) { x1 = -c / b; /*Anderenfalls wenn b nicht 0 --> es gibt eine Lösung*/

printf("\n\nEs gibt nur eine L\x94sung.\n\n");
printf("x = %.2lf", x1);
}

}

/*Quadratische Funktion*/

else {

D = ((b*b)-(4*a*c)); /*Berechnung der Diskriminante*/

if (D > 0) {/*Wenn Diskriminante größer 0, dann 2 Lösungen*/

zw1 = -b /(2*a);
zw2 = D /(4*a*a);

x1 = zw1 + sqrt(zw2);
x2 = zw1 - sqrt(zw2);

printf("\n\nx1 = %.2lf", x1);
printf("\n\nx2 = %.2lf", x2);

} else if (D == 0) { /*Wenn Diskriminante = 0, dann eine Lösung*/

x1 = -b / (2*a);

printf("\n\nEs gibt nur eine L\x94sung.\n\n");

printf("x = %.2lf", x1);

} else if (D < 0) { /*Wenn Diskriminante < 0, dann keine Lösung*/

printf("\n\nEs gibt keine L\x94sungen.");

}
} /*Ende der if-else-Schleife*/


printf("\n\n");
printf("Neue Berechnung durch 1, beenden mit 0: ");
scanf("%d",&auswahl);

} while(auswahl==1); /*Ende der Programmwiederholungsschleife*/


}
Mitglied: Shagrath
11.11.2006 um 17:03 Uhr
Dieses &#1108 war ursprünglich ein reinkopieres Epsilon, soll also ein "e" sein.
Bitte warten ..
Mitglied: laberdasch
12.11.2006 um 21:21 Uhr
Hallo,

meiner Ansicht nach sind die beiden Lösungen mit deinen Bezeichnungen
x1 = zw1 + i mal sqrt(zw2);
x2 = zw1 - i mal sqrt(zw2);
also zwei konjugiert komplexe Zahlen mit dem Realteil zw1 und dem Imaginärteil +sqrt(zw2) bzw. -sqrt(zw2).

Bsp: x^2 - 2x +6 = 0 ==> x1 = 1+ i sqrt(5); x2 = 1 - i sqrt(5)

Probe:
(1+ i sqrt(5))^2 - 2mal (1+ i sqrt(5)) +6
=1+2 mal i sqrt(5) - 5 - 2 - 2 mal i sqrt(5) +6
=7 - 7
= 0

Probe für die andere Lösung analog.

Schöne Grüße

laberdasch
Bitte warten ..
Mitglied: Shagrath
15.11.2006 um 20:32 Uhr
Eigentlich wollt ich wissen wie ich das dem Programm klar mache, das der mit komplexe Zahlen ausgibt. In C++ scheint das problemlos über ne complex.h Bibliothek gelöst werden zu können, aber in C gibt es sowas nicht.
Bitte warten ..
Mitglied: laberdasch
15.11.2006 um 21:01 Uhr
Tschuldigung, das habe ich missverstanden, weil du schriebst
Und ich hab absolut keinen Schimmer wie ich das machen soll.

Schöne Grüße

laberdasch
Bitte warten ..
Mitglied: Shagrath
25.11.2006 um 20:15 Uhr
Hier mal die Lösung...hab es nach dann irgendwann mal hinbekommen...


/*Berechnung einer quadratischen Gleichung*/

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

void main(void)

{
double a=0, b=0, c=0, D=0, x1=0, x2=0, zw1=0, zw2=0;
const double e=0.0000001;
int auswahl=0;

do { /*Beginn der Programmwiederholungsschleife*/

system("cls");

printf("\nGegeben ist die quadratische Gleichung ax^2 + bx + c = 0 .\n");
printf("\nGeben Sie jetzt die Variablen a, b und c ein.\n\n");

/*Variablendeklaration*/

printf("a = ");
scanf("%lf", &a);

printf("\nb = ");
scanf("%lf", &b);

printf("\nc = ");
scanf("%lf", &c);

/*Berechnung der Lösungen*/

/*if-else-Schleife um Lösungen zu berechnen*/

/*Lineare Funktion*/

if ((a == 0 ) | (fabs(a) < e)) {

if (b == 0) {

if (c == 0)

printf("\n\nErgebnis ist 0=0 --> Ergebnis ist xeR."); /*Wenn a,b,c = 0 dann xeR*/

else printf("\n\nEs gibt keine L\x94sungen."); /*Sonst, wenn c nicht 0 --> keine Lösungen*/

} else if (b != 0 ) { x1 = -c / b; /*Anderenfalls wenn b nicht 0 --> es gibt eine Lösung*/

printf("\n\nEs gibt nur eine L\x94sung.\n\n");
printf("x = %.2lf", x1);
}

}

/*Quadratische Funktion*/

else {

D = ((b*b)-(4*a*c)); /*Berechnung der Diskriminante*/

if (D > 0) {/*Wenn Diskriminante größer 0, dann 2 Lösungen*/

zw1 = -b /(2*a);
zw2 = D /(4*a*a);

x1 = zw1 + sqrt(zw2);
x2 = zw1 - sqrt(zw2);

printf("\n\nx1 = %.2lf", x1);
printf("\n\nx2 = %.2lf", x2);

} else if (D == 0) { /*Wenn Diskriminante = 0, dann eine Lösung*/

x1 = -b / (2*a);

printf("\n\nEs gibt nur eine L\x94sung.\n\n");

printf("x = %.2lf", x1);

} else if (D < 0) { /*Wenn Diskriminante < 0, dann keine Lösung*/

printf("\n\nEs gibt keine L\x94sungen.");

}
} /*Ende der if-else-Schleife*/


printf("\n\n");
printf("Neue Berechnung durch 1, beenden mit 0: ");
scanf("%d",&auswahl);

} while(auswahl==1); /*Ende der Programmwiederholungsschleife*/


}
Bitte warten ..
Neue Wissensbeiträge
Windows 10

Neue Sicherheitslücke in Windows 10 (Version 1709) durch Google öffentlich geworden

Information von kgborn vor 8 StundenWindows 10

Vor ein paar Tagen haben Googles Sicherheitsforscher vom Projekt Zero eine Sicherheitslücke im Edge-Browser publiziert. Jetzt wurde eine weitere ...

iOS
IOS 11.2.6 verfügbar
Information von sabines vor 14 StundeniOS

Mit dem Update soll der Bug behoben werden, bei dem eine bestimmte Zeichenkette IOS zum Absturz gebracht hat.

Sicherheit
Sicherheitsrisiko: Die Krux mit 7-Zip
Information von kgborn vor 1 TagSicherheit8 Kommentare

Bei vielen Anwendern ist das Tool 7-Zip zum Entpacken von Archivdateien im Einsatz. Die Software ist kostenlos und steht ...

Internet

Datendealing im WWW Tracking Methoden immer brutaler

Information von sabines vor 1 TagInternet

Interessanter Artikel zum Thema Tracking im WWW und die immer "besseren" Methoden des Trackings. Professor Arvind Narayanan (Princeton-Universität) betreibt ...

Heiß diskutierte Inhalte
Router & Routing
LANCOM VPN CLIENT einrichten
Frage von Finchen961988Router & Routing27 Kommentare

Hallo, ich habe ein Problem und hoffe ihr könnt mir helfen, wir haben einen Kunden der hat einen Speedport ...

Windows Server
AD DS findet Domäne nicht, behebbar?
Frage von schapitzWindows Server25 Kommentare

Guten Tag, ich habe bei einem Kunden ein Problem mit den AD DS. Umgebung ist folgende: Windows Server 2016 ...

LAN, WAN, Wireless
VPN Cisco ASA5505 PaloAlto PA-200
gelöst Frage von YannoschLAN, WAN, Wireless22 Kommentare

Hallo zusammen, ich würde gerne ein Site-to-Site VPN zwischen den beiden Standorten aufbauen. PaloAlto PA200 Internetanschluss Deutsche Telekom GK ...

Visual Studio
Singletone Objekt in Datei speichern
gelöst Frage von it4baerVisual Studio13 Kommentare

Hallo, ist es möglich ein Singleton-Objekt zu "serialisieren" und dann in eine Datei zu speichern um es später wieder ...