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

Frage Entwicklung C und C++

Mitglied: Shagrath

Shagrath (Level 1) - Jetzt verbinden

11.11.2006, aktualisiert 25.11.2006, 9939 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
Linux

Limux-Ende in München: Wie ein Linux Projekt unter Ausschluss der Öffentlichkeit zerstört wurde

Information von Frank vor 5 StundenLinux12 Kommentare

Mein persönlicher Kommentar zum Thema "Limux-Ende". Die SPD-Politikerin Anne Hübner hat die Richtung von München ganz klar definiert: "Wir ...

Batch & Shell

Open Object Rexx: Eine mittlerweile fast vergessene Skriptsprache aus dem Mainframebereich

Information von Penny.Cilin vor 1 TagBatch & Shell9 Kommentare

Ich kann mich noch sehr gut an diese Skriptsprache erinnern und nutze diese auch heute ab und an noch. ...

Humor (lol)

"gimme gimme gimme": Automatischer Test stolpert über Easter Egg im man-Tool

Information von Penny.Cilin vor 1 TagHumor (lol)6 Kommentare

Interessant, was man so alles als Easter Egg implementiert. Ist schon wieder Ostern? "gimme gimme gimme": Automatischer Test stolpert ...

MikroTik RouterOS

Mikrotik - Lets Encrypt Zertifikate mit MetaROUTER Instanz auf dem Router erzeugen

Anleitung von colinardo vor 2 TagenMikroTik RouterOS8 Kommentare

Einleitung Folgende Anleitung ist aus der Lage heraus entstanden das ein Kunde auf seinem Mikrotik sein Hotspot Captive Portal ...

Heiß diskutierte Inhalte
Router & Routing
Zwei Netzwerke erstellen
Frage von bunteblumeRouter & Routing14 Kommentare

Hallo Zusammen, Ich möchte gerne ein backup von einem bestimmten Folder welcher auf dem Server regelmässig synchronisiert wird auf ...

Off Topic
Fachkräftemangel in Deutschland? - Talentschmiede schreibt alle 2 Tage die gleichen Stellen aus
Frage von Penny.CilinOff Topic12 Kommentare

Hallo, haben wir in Deutschland Fachkräftemangel? Die Talentschmiede schreibt gefühlt alle zwei Tage dieselben Stellen aus. Und das schon ...

Linux
Limux-Ende in München: Wie ein Linux Projekt unter Ausschluss der Öffentlichkeit zerstört wurde
Information von FrankLinux12 Kommentare

Mein persönlicher Kommentar zum Thema "Limux-Ende". Die SPD-Politikerin Anne Hübner hat die Richtung von München ganz klar definiert: "Wir ...

Windows 10
Alle Programme mit bestimmtem Namen automatisch (per GPO) deinstallieren
gelöst Frage von lordofremixesWindows 1012 Kommentare

Hallo zusammen, gibt es eine Möglichkeit, alle Programme beginnend mit z.B. "Dell" im Namen per Script und somit per ...