Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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, 9725 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 ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (22)

Frage von M.Marz zum Thema Windows Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...