Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

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, 9912 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
Erkennung und -Abwehr

Ccleaner-Angriff war nur auf große Unternehmen gemünzt

(6)

Information von Lochkartenstanzer zum Thema Erkennung und -Abwehr ...

Sicherheit

Eventuell neue Lücke in Intels ME

Information von sabines zum Thema Sicherheit ...

Viren und Trojaner

FinFisher: Internetprovider schieben Spitzelopfern Malware unter

(1)

Information von kaiand1 zum Thema Viren und Trojaner ...

Heiß diskutierte Inhalte
Lizenzierung
Programm soll in verschiedenen Versionen lizenziert sein (20)

Frage von Yanmai zum Thema Lizenzierung ...

Humor (lol)
Wo ist der Fehler auf dem Bild? (17)

Information von the-buccaneer zum Thema Humor (lol) ...

Windows 7
SSD - Win7 Lags (15)

Frage von ph5555 zum Thema Windows 7 ...