2016-11-26 7 views
-4

Mein Professor sagte uns, wir sollten ein c-Programm schreiben, das quadratische Gleichungen löst, aber er fügte hinzu, dass wir am Anfang 4 Sätze von 3 Koeffizienten für jedes a, b und c definieren wollen. Mit anderen Worten, ich muss 4 Sätze von 3 verschiedenen Koeffizienten für jedes a, b und c definieren und sobald das Programm die Gleichung für den ersten Satz von 3 Koeffizienten für a, b und c löst, kann es fortfahren und die nächste Menge lösen von 3 definierten Koeffizienten, bis alle 4 Sätze gelöst sind.Wie lösen wir quadratische Gleichungen in C mit 3 Koeffizienten?

Ich bin in der Lage, ein Programm zu schreiben, das die quadratische Gleichung löst, indem ich jedes a, b und c Koeffizient Individuum unter Verwendung von scanf definiere. Kannst du bitte helfen, da ich die Antwort nirgendwo finden kann?

Das ist was ich bisher geschrieben habe, es ist ziemlich einfach, aber es funktioniert. Ich bin in einem Ingenieurkurs und wir haben nur 2 Stunden pro Woche Labors, die nicht die Vorträge reflektieren.

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

int as[4], bs[4], cs[4]; 
int a, b, c; 
double root1,root2,discriminant, realpart, imaginarypart; 
int main() 
{ 
    int i, n; 
    printf("Enter how many coefficents do you want to eneter : "); 
    scanf("%d",&n); 
    for(i = 0; i < n; ++i) 
    { 
     printf("Enter you coefficents for a,b and c for set %d : \n", i+1); 
     scanf("%d %d %d",&as[i],&bs[i],&cs[i]); 
     a = as[i]; 
     b = bs[i]; 
     c = cs[i] ; 
    } 
    printf("a = %d %d %d\n", as[0], as[1], as[2]); 
    printf("b = %d %d %d\n", bs[0], bs[1], bs[2]); 
    printf("c = %d %d %d\n", cs[0], cs[1], cs[2]); 

    for(i = 0; i < n; ++i) 
    { 
    discriminant = (b*b - 4*a*c); 
    root1 = (-b - sqrt(discriminant))/(2*a); 
    root2 = (-b + sqrt(discriminant))/(2*a); 



    if (discriminant > 0) 
    { 
    printf("Your set %d of roots is : \nroot1 = %lf\nroot2 = %lf\n", i+1,root1, root2); 
    } 
    else if (discriminant == 0) 
    { 
     printf("Your set %d of roots is : \nroot1 = root2 = %lf\n",i+1,root1); 
    } 
    else 
    { 
     realpart = -b/(2*a); 
     imaginarypart = sqrt(-discriminant)/(2*a); 
     printf("Your set %d of roots is :\nroot1 = %lf + %lfi\nroot2 = %lf - %lfi\n",i+1,realpart, imaginarypart, realpart, imaginarypart); 
    } 
    } 

    return 0; 
} 
+4

Nun, es ist ein Zuweisung, so ist der ganze Punkt, dass Sie zur Antwort selbst kommen sollen. Wenn Sie versuchen, und auf einem bestimmten Fehler stecken bleiben, werden wir helfen, aber wir sind nicht hier, um Ihren Code für Sie zu schreiben. –

+0

Er fragt nicht nach einem * vollständigen Code *, da er gesagt hat, dass er * fähig * ist, ein Programm zu schreiben, das die quadratische Gleichung löst. Er hat nur ein * besonderes Problem * mit der Definition von * mehr als 1 Koeffizientensatz 'a', 'b' und 'c'. – MarianD

+0

@MarianD: Wenn wir nicht einen Code sehen können, der von einem Fragesteller geschrieben wurde, ist es im Allgemeinen eine gute Idee für Leser, anzunehmen, dass nichts getan wurde. Die Erstellung und Demonstration von Anstrengungen ist hier eine Voraussetzung. (Es ist schwierig, in Grenzfällen eine Entscheidung zu fällen, aber gleichermaßen müssen Poster wissen, dass wir hier jeden Tag Hausaufgaben betrügen, was bedeutet, dass echte Poster ihr Material von den faulen unterscheiden müssen). – halfer

Antwort

0

Sie 2 Dinge mischen: definieren 4 Sätze und sie vom Eingang zu lesen (wie ich aus Ihrem verstanden "scanf mit").

(sich vom Eingang Lesen macht kein Problem als neue Lesewert alte überschreiben.)

definiert 4 Sätze im Voraus einfach durch Arrays erfolgen:

float as[4], bs[4], cs[4];  // as[0], bs[0], cs[0] is the 1st set, etc. 
float a , b , c ; 

// Assigning values to sets: as[0] = ...; bs[0] = ..., cs[0] = ...; 
          as[1] = ...; bs[1] = ..., cs[1] = ...; 
          ...................................... 
          ...................................... 

// or initialize them directly in the previous declaration, e.g. 
//       float as[] = {1, 4, -2, 3}, 
//         bs[] = {0, 5, 1, -1}, 
//         cs[] = {2, -4, 1, 2}; 

for (int i; i < 4; ++i) 
{ 
    a = a[i]; 
    b = b[i]; 
    c = c[i]; 
    // Code (or a function call) for computing and printing result(s) from a, b, c 
} 
+0

Vielen Dank für Ihre Antwort Ich dachte über die Verwendung von Arrays, aber habe keine große Erfahrung mit ihnen, aber das hilft sehr. –

+0

Gern geschehen. – MarianD

Verwandte Themen